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 Thu 19 June 2008 11:24

Miss T.
Participant assidu
Lieu: En pleine amazonie...
Date d'inscription: 17 Oct 2005
Messages: 294

[MB] Fenêtre M_FORMAT_PICK_FILL à partir d'un bouton BrushPicker??

Bonjour à tous,

(La petite colle du jour?)
Il est possible dans une fenêtre de dialogue d'inclure un jôli bouton BrushPicker. Ce bouton ouvre une boite de dialogue qui ne permet de choisir que la trame du polygone.
En explorant un peu ze web, je suis tombée sur le M_FORMAT_PICK_FILL, qui affiche la fenêtre Style Polygone avec la trame et le contour.

D'où les question à deux balles:
- serait-il possible qu'il bouton de type BrushPicker (où on voit le style de polygone choisi) envoie une fenêtre de type M_FORMAT_PICK_FILL?
- serait-il possible que le style de contour sur le bouton BrushPicker soit modifié lui aussi?

Hors ligne

 

#2 Thu 19 June 2008 12:24

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: [MB] Fenêtre M_FORMAT_PICK_FILL à partir d'un bouton BrushPicker??

Traduction (car j'ai du mal à piger !):
- tu veux créer un bouton BrushPicker où l'icone soit celle du style polygone en cours (trame et contour) ??
- ou tu veux modifier celui de l'interface MI, avec le même objectif ??
Au deux je dirais: impossible....
Mais peut être y a t il une troisième interprétation (ou plus...) smile

nb: parce qu'un bouton BrushPicker ça envoie une fenêtre M_FORMAT_PICK_FILL , de même qu'un run menu command 502 dans la FMB....

Hors ligne

 

#3 Thu 19 June 2008 14:05

Miss T.
Participant assidu
Lieu: En pleine amazonie...
Date d'inscription: 17 Oct 2005
Messages: 294

Re: [MB] Fenêtre M_FORMAT_PICK_FILL à partir d'un bouton BrushPicker??

Traduction:
- placer un bouton BrushPicker permet d'avoir un bouton montrant la trame de polygone choisi (voir image BrushPicker_bouton.jpg) mais il lance une fenêtre ne permettant de choisir que la trame du polygone (voir image BrushPicker.jpg)
- placer un bouton normal lançant la commande run menu command M_FORMAT_PICK_FILL permet d'obtenir la fenêtre de configuration des styles habituelle (voir image M_FORMAT_PICK_FILL.jpg).

D'où la question: est-il possible d'avoir un bouton à l'allure "BrushPicker" (dont la trame et le contour du polygone sont modifiables) qui lancerait une fenêtre de type "M_FORMAT_PICK_FILL"?

Dernière modification par Miss T. (Thu 19 June 2008 14:06)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#4 Thu 19 June 2008 14:08

Miss T.
Participant assidu
Lieu: En pleine amazonie...
Date d'inscription: 17 Oct 2005
Messages: 294

Re: [MB] Fenêtre M_FORMAT_PICK_FILL à partir d'un bouton BrushPicker??

(le fichier M_FORMAT_PICK_FILL.jpg)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#5 Thu 19 June 2008 18:25

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: [MB] Fenêtre M_FORMAT_PICK_FILL à partir d'un bouton BrushPicker??

Je dirais quelque chose comme ça:

Dim reg_brush as brush
Dialog title "Choix de trame et contour"
  Control BrushPicker 
    Into reg_brush
    Value CurrentBrush()
    Disable
  Control OKButton
  Control CancelButton
If CommandInfo(Cmd_Info_dlg_OK) then run menu command 502 End If

Hors ligne

 

#6 Fri 20 June 2008 10:38

Miss T.
Participant assidu
Lieu: En pleine amazonie...
Date d'inscription: 17 Oct 2005
Messages: 294

Re: [MB] Fenêtre M_FORMAT_PICK_FILL à partir d'un bouton BrushPicker??

En effet, c'est un bon début: je désactive le brushbutton et place dessous un bouton de même taille et même emplacement qui appelle ma fonction M_FORMAT_PICK_FILL et met à jour le style du bouton avec currentbrush().

Dernier soucis: comment mettre à jour le bouton brushbutton, y compris avec le style de contour choisi?

Hors ligne

 

#7 Fri 20 June 2008 11:18

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: [MB] Fenêtre M_FORMAT_PICK_FILL à partir d'un bouton BrushPicker??

Avec CurrentBrush() les 2 aspects (trame et contour) sont représentés
Il faut donc, avant de l'utiliser, le redéfinir par Set Style Brush MakeBrush(a, b, c) et Set Style BorderPen MakePen(d, e, f) , les valeurs de a à f étant obtenues par le choix fait et/ou par un StyleAttr()....

Hors ligne

 

#8 Fri 20 June 2008 14:41

Miss T.
Participant assidu
Lieu: En pleine amazonie...
Date d'inscription: 17 Oct 2005
Messages: 294

Re: [MB] Fenêtre M_FORMAT_PICK_FILL à partir d'un bouton BrushPicker??

Bon sang!
Rien à faire, le code suivant ne modifie pas le contour du polygone du bouton brush (mais la trame, si):

Code:

Sub Main
Dialog Title "La belle fenêtre!!" Width 345 Height 384  
    Control StaticText Position 87,118 Width 48 Height 10 Title "Style par déf.:"
    Control BrushPicker Position 135,113 Width 20 Height 20 calling ModifStyleDef ID 2100  'Into reg_brush
               Value CurrentBrush()
               Disable
      Control Button Position 135,113 Width 20 Height 20 Title "."  calling ModifStyleDef

If CommandInfo(CMD_INFO_DLG_OK) Then print "Youpiiiiiiiii!"
End Sub
'---------------------------------------------------------------
Sub ModifStyleDef 
dim a, b, c, d, e, f as integer
  print currentbrush() & chr$(10) & CurrentBorderPen()
    run menu command M_FORMAT_PICK_FILL
    a = styleAttr(currentbrush(), BRUSH_PATTERN)
    b = styleAttr(currentbrush(), BRUSH_FORECOLOR) 
     c = styleAttr(currentbrush(), BRUSH_BACKCOLOR) 
     d = styleAttr(CurrentBorderPen(), PEN_WIDTH)
     e = styleAttr(CurrentBorderPen(), PEN_PATTERN)
     f = styleAttr(CurrentBorderPen(), PEN_COLOR)

    Set Style Brush MakeBrush(a, b, c)
    Set Style BorderPen MakePen(d, e, f)
     print currentbrush() & chr$(10) & CurrentBorderPen() ' j'ai vérifié, le CirrentBorderPen est bien modifié

     Alter Control 2100 value currentbrush() 
end sub

Tu as une idée du pourkoi qu'ça foire?

Hors ligne

 

#9 Fri 20 June 2008 16:41

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: [MB] Fenêtre M_FORMAT_PICK_FILL à partir d'un bouton BrushPicker??

Pas moyen de raffraichir ce fichu BrushPicker.... sad
Seule bidouille trouvée: enlever le dialogue et le recréer
nb: quelques corrections au passage....

Code:

Sub Main
 Dialog Title "La belle fenêtre!!" Width 345 Height 384  
   Control StaticText Position 87,118 Width 48 Height 10 Title "Style par défaut:"
   Control BrushPicker Position 135,113 Width 20 Height 20 ID 2100
      Value CurrentBrush()
      Disable
   Control Button Position 135,113 Width 20 Height 20 Title ""  calling ModifStyleDef
End Sub
'---------------------------------------------------------------
Sub ModifStyleDef
 Dialog remove
 run menu command M_FORMAT_PICK_FILL
 Dialog Title "La belle fenêtre!!" Width 345 Height 384  
   Control StaticText Position 87,118 Width 48 Height 10 Title "Style par défaut:"
   Control BrushPicker Position 135,113 Width 20 Height 20 ID 2100
      Value CurrentBrush()
      Disable
   Control Button Position 135,113 Width 20 Height 20 Title ""  calling ModifStyleDef

Hors ligne

 

#10 Thu 26 June 2008 16:26

Miss T.
Participant assidu
Lieu: En pleine amazonie...
Date d'inscription: 17 Oct 2005
Messages: 294

Re: [MB] Fenêtre M_FORMAT_PICK_FILL à partir d'un bouton BrushPicker??

OK, ça marche.
Sauf que je dois faire ça pour deux styles: le style objets "par défaut" et objet "en cours".

Le code suivant me permet de relancer ma fenêtre qui s'initialisait avec le sub main2. Le problème est que lorsqu'on modifie le style CurrentBorderPen, ce sont les deux contours sur les BrushPicker qui se mettent à jour,et essayer de les modifier un à un ne sert à rien vu qu'il faut relancer la fenêtre pour mettre le contour à jour...

Code:

Sub main
  
    'config' des styles par défaut sinon message d'erreur (je ne sais pas pourquoi, un OnError ne détecte pas l'absence de définition de DefaultBrush ou CurBrush)
    DefaultBrush = MakeBrush (1,8421504, -1) 
    CurBrush = MakeBrush (16,8421504, -1)
    Set Style BorderPen MakePen(2,2,8421504)  

  call main2

end sub

Sub Main2

    Dialog Title "Oh la belle fenêtre" Width 345 Height 384  

    'les boutons de choix de styles par défaut ou pour l'objet courant
    Control StaticText Position 87,118 Width 48 Height 10 Title "Style par déf.:"
    Control BrushPicker Position 135,113 Width 20 Height 20 calling ModifStyleDef ID 2100  'Into reg_brush
           Value DefaultBrush
           Disable
      Control Button Position 135,113 Width 20 Height 20 Title "."  calling ModifStyleDef

    Control StaticText Position 161,118 Width 53 Height 10 Title "Cadre en cours:"
    Control BrushPicker Position 215,113 Width 20 Height 20 calling ModifStyleCur ID 2200  'Into reg_brush
            Value CurBrush
            Disable 
      Control Button Position 215,113 Width 20 Height 20 Title "."  calling ModifStyleCur

end sub

Sub ModifStyleDef 
    run menu command M_FORMAT_PICK_FILL
     DefaultBrush = currentbrush()
    Dialog remove
    call Main2
end sub

Sub ModifStyleCur
    run menu command M_FORMAT_PICK_FILL
     CurBrush = currentbrush()
    Dialog remove
    call Main2
end sub

J'ai aussi essayé de faire un set Style entre les deux control BrushPicker mais MB n'apprécie pas du tout.

Si pas d'idées, tant pis, je me rabats sur le double bouton "Brushpicker" et "penpicker". Mais c'est moche.

Dernière modification par Miss T. (Thu 26 June 2008 16:29)

Hors ligne

 

Pied de page des forums

Powered by FluxBB