banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

kader.boukerrou a écrit:

...je vous laisse le programme à compléter...


Trop gentil smile
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 smile
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 smile

[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

 

Pied de page des forums

Powered by FluxBB