#1 Mon 07 January 2008 11:09
- kader.boukerrou
- Participant occasionnel
- Date d'inscription: 1 Mar 2006
- Messages: 14
[MapBasic 9] modifier le style d'une selection
bonjour,
je suis coincé pour écrire un programme car ça fait longtemps que je n'ai pas utilisé mapbasic.
je souhaite rendre une selection modifiable (pour ça pas de problème) mais ensuite je voudrais modifier le style de cette selection (polygone fond transparent et ligne noir).
Et la je n'arrive pas à faire cette deuxième étape.
je vous remercie par avance.
je vous laisse le programme à compléter:
include "mapbasic.def"
If SelectionInfo(SEL_INFO_TABLENAME)="" Then
Note "Aucune sélection en cours, faites une sélection."
exit sub
end if
if SelectionInfo(SEL_INFO_TABLENAME)<>"" then
Set map layer 1 Editable on
Pen (1,2,0) Brush (1,16711680,16777215)
end if
kader BOUKERROU
AURG
Hors ligne
#2 Mon 07 January 2008 12:23
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9] modifier le style d'une selection
...je vous laisse le programme à compléter...
Trop gentil
La recherche sur "style", qui aurait dû précéder ce post, vous aurait orienté sur la commande "alter object"
...et une recherche sur "alter object" devrait vous donner la/les solutions
Le principe est qu'il faut pointer sur les objets les uns après les autres, les modifier par Alter Object en appliquant successivement une clause Pen et une clause Brush préalablement créées par MakePen et MakeBrush, puis faire un update...et à la fin enregistrer la table (ou la sélection, ça revient au même)
Pas si simple... bon courage !!
Hors ligne
#3 Mon 07 January 2008 17:44
- kader.boukerrou
- Participant occasionnel
- Date d'inscription: 1 Mar 2006
- Messages: 14
Re: [MapBasic 9] modifier le style d'une selection
merci maurice pour m'avoir guider.
j'ai avancé mais il doit y avoir quelque chose qui cloche car il me modifie que le premier objet.
merci d'avance
voilà où j'en suis :
Dim Enr as integer
Dim NumTab as integer
Dim NumWindows as integer
Dim NomTab as string
dim c_var as Pen
dim b_var as Brush
Dim SelObj as object
include "mapbasic.def"
c_var=MakePen(1,2,0)
b_var=MakeBrush(2,255,16777215)
NumWindows=tableinfo (NumTab,TAB_INFO_NROWS)
For NumTab=1 to NumWindows
NomTab=TableInfo(NumTab,TAB_INFO_NAME)
Select * from NomTab into selection
Fetch first from selection
For Enr=1 to SelectionInfo(SEL_INFO_NROWS)
SelObj=selection.obj
Alter Object SelObj Info OBJ_INFO_PEN, c_var
Alter Object SelObj Info OBJ_INFO_BRUSH, b_var
Update selection Set Obj=SelObj where rowid=NumTab
Fetch next from selection
next
next
Hors ligne
#4 Mon 07 January 2008 18:12
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9] modifier le style d'une selection
Il y a pas mal d'erreurs, la première étant que NumTab est utilisé alors qu'il n'a encore aucune valeur...
Il est tard: je rentre et je jette un coup d'oeil plus approfondi
[EDIT: solution repostée à part ci-dessous]
Dernière modification par Maurice (Tue 08 January 2008 10:29)
Hors ligne
#5 Tue 08 January 2008 10:28
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9] modifier le style d'une selection
Je reposte ici pour rendre la réponse plus visible
Après réflexion je vous propose ce code, qui suppose que plusieurs tables sont ouvertes et qu'il existe une sélection dans l'une d'entre elles
Code:
Include "mapbasic.def" Include "menu.def" Dim i as integer NomTab,message1,message2 as string c_var as Pen b_var as Brush SelObj as object l_continue,l_save as Logical Declare Sub Main Sub Main If SelectionInfo(SEL_INFO_NROWS)=0 Then Note "Aucune sélection en cours, faites une sélection." exit sub Else NomTab=SelectionInfo(SEL_INFO_TABLENAME) message1="Il y a une sélection dans la table "+NomTab+chr$(13)+"On en modidie l'aspect ??" l_continue=Ask (message1,"OUI","NON") End If If Not l_continue Then exit sub Else c_var=MakePen(1,2,0) b_var=MakeBrush(2,255,16777215) Set Map Layer NomTab Editable On For i=1 to SelectionInfo(SEL_INFO_NROWS) Fetch Rec i from selection SelObj=selection.obj Alter Object SelObj Info OBJ_INFO_PEN, c_var Alter Object SelObj Info OBJ_INFO_BRUSH, b_var Update selection Set Obj=SelObj where rowid=i Next Run Menu Command 304 End If message2="Sauvegarder les changements"+chr$(13)+"dans la table "+NomTab+" ??" l_save=Ask (message2,"OUI","NON") If Not l_save Then RollBack Table NomTab Else Commit Table NomTab End If End Sub
Hors ligne
#6 Thu 10 January 2008 12:21
- kader.boukerrou
- Participant occasionnel
- Date d'inscription: 1 Mar 2006
- Messages: 14
Re: [MapBasic 9] modifier le style d'une selection
chapeau bas Maurice,
en tout cas je vous remercie de votre promptitude à répondre sur le forum.
comme je vous le disais ça fait longtemps que je ne me suis pas plongé dans mapbasic et sans votre aide je n'aurais pas réussi.
merci beaucoup.
kader Boukerrou
Dernière modification par kader.boukerrou (Thu 10 January 2008 12:22)
Hors ligne
#7 Thu 05 November 2009 12:04
- amathilde
- Participant occasionnel
- Date d'inscription: 13 Apr 2007
- Messages: 13
Re: [MapBasic 9] modifier le style d'une selection
Bonjour,
Je me permets de relancer ce poste datant un petit peu car je rencontre un peu le même problème.
Je souhaite faire une sélection d'objets et changer leur couleur. Le programme de Maurice fonctionne très bien, sauf que moi je souhaiterai changer uniquement la couleur de mes objets sans toucher à leur trame ou leur style car ma sélection peut contenir des polygones n'ayant pas la même trame.
Sous MapInfo 9.5 avec l'outil "style polygone" on peut changer la couleur de deux polygones sans changer leur trame mais je ne trouve pas le code mapbasic permettant cela.
Si quelqu'un a déjà rencontré ce problème là je suis preneuse.
Merci d'avance.
Mathilde
Hors ligne
#8 Thu 05 November 2009 12:17
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic 9] modifier le style d'une selection
Salut,
Tu veux changer la symbologie de tes sélections avec Mapbasic ou tout simplement en ajoutant tes diverses sélections au "contrôle des couches" puis de changer une par une la couleur de tes sélections en les rendant modifiable avec le petit crayon puis changer la symbologie ou (uniquement la couleur)
A+
Joël
Hors ligne
#9 Thu 05 November 2009 12:23
- amathilde
- Participant occasionnel
- Date d'inscription: 13 Apr 2007
- Messages: 13
Re: [MapBasic 9] modifier le style d'une selection
Je veux changer la symbologie (enfin juste la couleur) de mes sélections avec MapBasic.
Par exemple, je sélectionne 2 polygones ayant des trames différentes, je clique sur un bouton qui me propose 3 couleurs au choix sous forme de cases à cocher, j'en sélectionne une et hop, il me change les couleurs de mes polygones sans modifier leurs trames.
Hors ligne