Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Voici un petit tips rapide et pas cher, mais qui ajoute tout de suite un sacré plus a notre bon vieux singleLineEdit de PB.
Pour savoir de quoi je vous parle, je vous invite a jetter un oeil dans le coin superieur droit de votre browser (sur Firefox et IE en tout cas... ), la zone d'edition des moteur recherche (souvent google). Qui n'a jamais remarqué que quand cette zone est vide et qu'elle n'a pas le focus, un magnifique petit intitulé - tres discret - nous averti du moteur de recherche courant? Mais si, le petit Google en grisé...
He bien c'est vraiment pas sorcier a faire!
Voici le code d'un singleLineEdit deja ameliore par mes soins
forward global type promptedsinglelineedit from singlelineedit end type end forward global type promptedsinglelineedit from singlelineedit integer width = 402 integer height = 112 integer textsize = -10 integer weight = 400 fontcharset fontcharset = ansi! fontpitch fontpitch = variable! fontfamily fontfamily = swiss! string facename = "Tahoma" long textcolor = 33554432 borderstyle borderstyle = stylelowered! end type global promptedsinglelineedit promptedsinglelineedit type variables public string initialPrompt = '' // To give ability to initialise the prompt in design time private: string is_prompt = '' long EM_SETCUEBANNER = 5377 end variables forward prototypes public function string getprompt () public function long setprompt (readonly string as_value) end prototypes public function string getprompt ();// Returns current prompt value return is_prompt end function public function long setprompt (readonly string as_value);long ll_ret ll_ret = send(handle( this ), EM_SETCUEBANNER, 1, as_value) if ll_ret = 1 then is_prompt = as_value end if return ll_ret end function on promptedsinglelineedit.create end on on promptedsinglelineedit.destroy end on event constructor;this.setprompt( initialprompt ) end event
Comme on peut le voir, il suffit d'envoyer au controle le message EM_SETCUEBANNER avec la string a afficher, et le tour est joué!
C'est une feature qui existe dans les zone d'edition de windows depuis un bout de temps, mais je ne sais pas pourquoi, cela n'a jamais été rendu disponible dans aucun 4GL de ma connaissance (meme .NET n'inclut pas cette fonctionnalité).
En théorie, il existe un message similaire pour les comboBox, mais en PB cela ne marche pas. Je ne sais pas pourquoi, peut-etre que le comboBox de PB n'est pas tout a fait rien qu'un comboBox windows...
Et, evidemment, dans la meme veine, n'oublions pas que cela peut etre aussi tres facilement implementé dans des colonnes datawindow: dans la propriété Format, mettre "[general];[134217745]coucou" pour une colonne de type string, et "[general];[general];[general];[134217745]\c\o\u\c\o\u" pour une numerique...
Enjoy...
Hors ligne
000
Hors ligne
je viens d'essayer et
Hors ligne
tiens moi j'essaye en PB 6.5 et ça ne fonctionne pas.
long ll_handle, ll_ret long EM_SETCUEBANNER = 5377 string ls_test ls_test = 'test' ll_handle = handle(sle_1) ll_ret = send(ll_handle, EM_SETCUEBANNER, 1, ls_test )
Sinon j'obtiens bien le handle de mon SLE mais la valeur de retour de Send est toujours 0 et je ne vois pas de tete s'afficher dans mon SLE.
any idéas ?
P.S. marche pas non plus dans les Datawindows...
je suis sous windows 7, et je teste ça avec PB 6.5
Dernière modification par rincevent (05-10-2012 11:01:44)
Hors ligne
Tu n'as pas une petite idée erazorz ?
Dernière modification par rincevent (10-10-2012 10:30:24)
Hors ligne
Juste pour dire : je viens de copier / coller / tester le code d'Erasorz : fonctionne direct sans problème avec PB11.5 / Win7, par contre en PB9 (pas de pb plus vieux pour le moment à cause d'un crash disque)/ XP ça ne fonctionne pas. L'exe fait en PB11.5 n'a aucun effet en XP...
Hors ligne
seki a écrit:
je viens de copier / coller / tester le code d'Erasorz
Hors ligne
ok merci pour l'info seki
Hors ligne
seki -avant d'avoir une coupure de courant- a écrit:
L'exe fait en PB11.5 n'a aucun effet en XP...
Et l'exe compilé en PB9 ne fait rien non plus en win7 (la fenêtre fonctionne, mais pas d'effet visible sur le sle)
Hors ligne
Pages: 1