Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1 2
Je ne l'ai pas vu sur le forum, donc je me permet d'ajouter cette astuce.
Attention, le truc suivant vaut très cher !
Il est non documenté.
Vous ne le trouverez jamais chez Sybase.
Google ne vous aidera pas non plus.
Il est connu par 1 développeur PB sur 10000.
Du coup n'hésitez pas à faire vos dons en pépites...
Dans la partie déclarative des variables d'instances d'un objet ancêtre, vous pouvez choisir l'onglet, le groupe et le label à présenter dans les propriétés des descendants en utilisant le mot clé descriptor.
Comment faire ?
1 créez votre objet ancêtre
2 ajoutez les propriétés dans les variables d'instance comme ci-dessous
String is_toto descriptor "pb_format"="DataType=string~tGroup=PBaDonf~tDivider=Astuce 1~tLabel=Combien de pépites pour chrnico" = "1000 pépites" boolean ib_tutu descriptor "pb_format"="DataType=boolean~tGroup=PBaDonf~tLabel=Les donner ?" = True
3 héritez de votre objet. Et là, magie ! vous avez un onglet PBaDonf...
Merci pour les pépites
Hors ligne
argl
Bon, ça doit être plus facile de trouver avec Google quand on sait ce que l'on cherche
Ben avec Chris disons qu'on était au moins 2 / 20000
Hors ligne
à tous les deux
200 pépitos à Chrnico
Hors ligne
Merci à toi Shahin.
Merci également à Hellkinder.
Hors ligne
eRaSorZ a écrit:
trouvé sur les newgroups
Sur le newsgroup il est dit :
newsgroup a écrit:
"This is considered an advanced and awesome feature. Use it if you're a
cool PB guru."
je pense qu'il faut traduire pour ceux qui ne comprendrait pas
Hors ligne
Chrnico a écrit:
newsgroup a écrit:
"This is considered an advanced and awesome feature. Use it if you're a
cool PB guru."je pense qu'il faut traduire pour ceux qui ne comprendrait pas
google traduction a écrit:
Ceci est considéré un dispositif avançé et impressionnant. L'employer si vous êtes a
refroidir le gourou de PB
en gros si tu veux un gourou de PB...
Hors ligne
eRaSorZ a écrit:
Chrnico a écrit:
newsgroup a écrit:
"This is considered an advanced and awesome feature. Use it if you're a
cool PB guru."je pense qu'il faut traduire pour ceux qui ne comprendrait pas
google traduction a écrit:
Ceci est considéré un dispositif avançé et impressionnant. L'employer si vous êtes a
refroidir le gourou de PB
Moi a refroidir le gourou de PB avec un dispositif impressionnant.
Hors ligne
Petits compléments
Source du fichier (objet nonvisuel) nvo_test.sru
forward global type nvo_test from nonvisualobject end type end forward global type nvo_test from nonvisualobject end type global nvo_test nvo_test type variables //pbadonf / Chrnico String is_toto descriptor "pb_format"="DataType=string~tGroup=PBaDonf~tDivider=Astuce 1~tLabel=Combien de pépites pour chrnico" = "1000 pépites" boolean ib_tutu descriptor "pb_format"="DataType=boolean~tGroup=PBaDonf~tLabel=Les donner ?" = True // Erasorz (from google group) string is_picture descriptor "pb_format" = "DataType=string~tGroup=Google~tStyle=File~tUI=Picture~tLabel=Picture" string is_hoveringpicture descriptor "pb_format" = "DataType=string~tGroup=Google~tStyle=File~tUI=Picture~tLabel=Picture While Hovering" long il_textcolor descriptor "pb_format" = "DataType=long~tGroup=Google~tStyle=Color~tLabel=Text Color" long il_hoveringtextcolor descriptor "pb_format" = "DataType=long~tGroup=Google~tStyle=Color~tLabel=Text Color While Hovering" // xlat hacking results :-) //Selection d'un type Enum Encoding ienc_encoding descriptor "pb_format" = "Group=Lists~tLabel=File Encoding~tHelp=This is a help~tStyle=Enum~tSystemType=Encoding" Object ieo_object descriptor "pb_format"="Group=Lists~tLabel=KindObject~tStyle=Enum~tSystemType=Object" //Selection d'une image (4 types de liste par défaut) string is_my_pic descriptor "pb_format" = "Group=Lists~tStyle=Picture~tUI=BRW" string is_my_cur descriptor "pb_format" = "Group=Lists~tStyle=Picture~tUI=C" string is_my_ico descriptor "pb_format" = "Group=Lists~tStyle=Picture~tUI=I" string is_my_bi descriptor "pb_format" = "Group=Lists~tStyle=Picture~tUI=BI" //Color selector long il_color descriptor "pb_format" = "Group=Lists~tOrder=2~tStyle=Color~tDataType=Long~tLabel=Sans Transparent" long il_color2 descriptor "pb_format" = "Group=Lists~tOrder=1~tStyle=Color~tDataType=Long~tShowTransparent=True~tLabel=Avec Transparent" //Selection d'un type d'objet PB string is_dw descriptor "pb_format" = "Group=Pickers~tLabel=Dataobject~tStyle=PBObject~tSystemType=Datawindow" string is_win descriptor "pb_format" = "Group=Pickers~tLabel=Window~tStyle=PBObject~tSystemType=Window~tCaption=My caption~tHelp=My Help" string is_men descriptor "pb_format" = "Group=Pickers~tLabel=Menu~tStyle=PBObject~tSystemType=Menu" string is_pip descriptor "pb_format" = "Group=Pickers~tLabel=Pipeline~tStyle=PBObject~tSystemType=Pipeline" string is_qry descriptor "pb_format" = "Group=Pickers~tLabel=Query~tStyle=PBObject~tSystemType=Query" string is_app descriptor "pb_format" = "Group=Pickers~tLabel=Application~tStyle=PBObject~tSystemType=Application" string is_fun descriptor "pb_format" = "Group=Pickers~tLabel=Function~tStyle=PBObject~tSystemType=Function" string is_str descriptor "pb_format" = "Group=Pickers~tLabel=Structure~tStyle=PBObject~tSystemType=Structure" string is_prj descriptor "pb_format" = "Group=Pickers~tLabel=Project~tStyle=PBObject~tSystemType=Project" string is_use descriptor "pb_format" = "Group=Pickers~tLabel=User object~tStyle=PBObject~tSystemType=Userobject" //File string is_vide descriptor "pb_format" = "Group=Pickers~tStyle=File~tLabel=Vidéo~tCaption=Select AVI File~tDefExt=avi~tItems=AVI File(*.avi)|*.avi" //DatePicker date ida_birthday descriptor "pb_format" = "Group=Pickers~tStyle=DatePicker~tDataType=Date~tHelp=The day you are born" = Date( 1979-07-17 ) datetime idati_hack descriptor "pb_format" = "Group=Pickers~tStyle=DatePicker~tDataType=DateTime" = DateTime( 2011-06-09, 20:53:00 ) //EditText string is_my_mle descriptor "pb_format"="Group=Edits~tStyle=EditText~tMultiLine=True~tLabel=Multi-ligne" string is_my_pwd descriptor "pb_format"="Group=Edits~tStyle=EditText~tPassword=True~tLabel=Password" = "des étoiles" //Slider long il_slider descriptor "pb_format"="Group=Edits~tStyle=Number~tUI=Slider~tLabel=Long Slider" //Spinner long il_spinner descriptor "pb_format"="Group=Edits~tStyle=Number~tUI=Spinner~tMin=128~tMax=255~tLabel=Long Spinner (from 128 to 255)" //EditMenu string is_PopupMenu descriptor "pb_format"="Group=Edits~tStyle=EditMenu~tLabel=Mask~tItems=Text1|Text2~tValues=Val1|Val2" //Le style Grid n'est pas enregistrable sur les Heritiers convenablement... //Flat = format "applatis" ou sérialisé dans une chaine, ressemble à : // string is_pictures_flat = "{~"ArrangeTables!~",~"HOW!~",~"Arrow!~",~"Structure!~"}" // string is_items_flat = "{~"Item 1~",~"Item 2~",~"Le trois~",~"Le quatre~"}" string is_pictures_flat descriptor "pb_format"="Group=Grids~tLabel=Pictures(flat)~tStyle=Grid~tStyles=Picture~tDatatype=String~tLines=3" string is_items_flat descriptor "pb_format"="Group=Grids~tLabel=Items(flat)~tStyle=Grid~tDatatype=String~tLines=3" //Array : /!\ ne fonctionne pas pour la relecture des valeurs du champ. /* c-à-d que l'instance de cette classe n'arrivera pas a représenter les valeurs saisies en mode Design, et sont perdus au prochain enregistrement : à bannir ! ( :snif: ) */ string is_pictures[] descriptor "pb_format"="Group=Grids~tLabel=Pictures array~tStyle=Grid~tStyles=Picture~tDatatype=String~tLines=3" string is_items[] descriptor "pb_format"="Group=Grids~tLabel=Items array~tStyle=Grid~tDatatype=String~tLines=3" //NOT WORKING... :blet: //Font selector string is_font descriptor "pb_format"="Group=Fonts~tStyle=EditDialog~tLabel=Font~tHelp=Font~tEdit=true~tDivider=Font" //Fonts property string is_f_name descriptor "pb_format"="Group=Fonts~ttStyle=Font~tLabel=FaceName~tFontProperty=FaceName" integer ii_f_size descriptor "pb_format"="Group=Fonts~tStyle=Font~tLabel=TextSize~tFontProperty=TextSize" long il_f_bold descriptor "pb_format"="Group=Fonts~tStyle=Font~tLabel=Bold~tFontProperty=Weight" boolean ib_f_italic descriptor "pb_format"="Group=Fonts~tStyle=Font~tLabel=Italic~tFontProperty=Italic" boolean ib_f_underline descriptor "pb_format"="Group=Fonts~tStyle=Font~tLabel=Underline~tFontProperty=Underline" FontCharSet ie_f_cset descriptor "pb_format"="Group=Fonts~tStyle=Font~tLabel=FontCharSet~tFontProperty=FontCharSet" FontPitch ie_f_pitch descriptor "pb_format"="Group=Fonts~tStyle=Font~tLabel=FontPitch~tFontProperty=FontPitch" FontFamily ie_f_fam descriptor "pb_format"="Group=Fonts~tStyle=Font~tLabel=FontFamily~tFontProperty=FontFamily" boolean ib_f_strikeout descriptor "pb_format"="Group=Fonts~tStyle=Font~tLabel=Strikeout~tFontProperty=Strikeout" long il_f_tcolor descriptor "pb_format"="Group=Fonts~tStyle=Font~tLabel=TextColor~tFontProperty=TextColor" long il_f_bcolor descriptor "pb_format"="Group=Fonts~tStyle=Font~tLabel=BackColor~tFontProperty=BackColor" long il_f_escapement descriptor "pb_format"="Group=Fonts~tStyle=Font~tLabel=Escapement~tFontProperty=Escapement" //Boom //long _1 descriptor "pb_format"="Style=Font~tFontSet=%s~tGroup=%s~tLabel=Sample~tHelp=Font Sample~tFontProperty=FontSample" //long _2 descriptor "pb_format"="Style=Font~tFontSet=%s~tGroup=%s~tLabel=~tHelp=~tFontProperty=FontMessage" string is_sizemode descriptor "pb_format"="Group=Lists~tStyle=SingleChoice~tLabel=SizeMode~tItems=clip!|stretch!" string is_borderstyle descriptor "pb_format"="Group=Lists~tLabel=BorderStyle~tStyle=SingleChoice~tItems=StyleBox!|StyleLowered!|StyleRaised!|StyleShadowBox!~tImages=105|16|2|5|6|1" long il_pictwidth descriptor "pb_format"="Group=Lists~tStyle=SingleChoice~tLabel=PictureWidth~tItems=(Default)|16|32~tValues=0|16|32" Alignment ie_alignment descriptor "pb_format"="Group=Lists~tStyle=SingleChoice~tLabel=Alignment~tItems=Center!|Left!|Right!~tImages=106|16|2|0|1" grGraphType ie_graphtype descriptor "pb_format"="Group=Lists~tStyle=Enum~tLabel=GraphType~tSystemType=grGraphType~tImages=104|16" FillPattern ie_fill descriptor "pb_format"="Group=Lists~tStyle=Enum~tSystemtype=FillPattern~tLabel=FillPattern~tImages=103|24" LineStyle ie_linestyle descriptor "pb_format"="Group=Lists~tStyle=Enum~tSystemtype=LineStyle~tLabel=LineStyle~tImages=102|24|0|1|2|3|4|-1" end variables on nvo_test.create call super::create TriggerEvent( this, "constructor" ) end on on nvo_test.destroy TriggerEvent( this, "destructor" ) call super::destroy end on
Parcontre, sur des objets visuels, il y a un décalage que je ne m'explique pas (de 5 variables sur une datawindow par exemple...)
Dernière modification par xlat (13-06-2011 16:18:23)
Hors ligne
Chrnico a écrit:
Vous ne le trouverez jamais chez Sybase.
Apparemment, chez Sybase c'était documenté dans "PB 7.0 Documentation for Advanced User" (d'après le post mentionné par eRaSorZ) mais plus moyen de mettre la main sur cette doc (alors qu'on trouve encore la doc de PB 5/6/6.5 pour mac et unix).
Si jamais il y a des devs PB de longue date qui sont du genre conservateurs, vous pouvez toujours chercher dans vos archives...
Hors ligne
xlat a écrit:
Parcontre, sur des objets visuels, il y a un décalage que je ne m'explique pas (de 5 variables sur une datawindow par exemple...)
il y a quand même un petit workarround...
par exemple sur une hscrollbar il y à un décalage de 2 variables, et l'edit source montre :
forward global type uo_hsb from hscrollbar end type end forward global type uo_hsb from hscrollbar integer width = 311 integer height = 68 end type global uo_hsb uo_hsb type variables //pbadonf / Chrnico String is_toto descriptor "pb_format"="DataType=string~tGroup=PBaDonf~tDivider=Astuce 1~tLabel=Combien de pépites pour chrnico" = "1000 pépites" boolean ib_tutu descriptor "pb_format"="DataType=boolean~tGroup=PBaDonf~tLabel=Les donner ?" = True end variables on uo_hsb.create end on on uo_hsb.destroy end on
en commentant les lignes
//integer width = 311 //integer height = 68
la classe visuelle et ses héritiers peuvent visualiser correctement ces propriétés...
Néanmoins, çà oblige à passer dans l'editsource et à gérer une couche supplémentaire d'héritage ou bricoler dans le constructeur ce qui n'est pas terrible pour l'héritage des propriétés
Hors ligne
Je suis tombé sur ce sujet par hasard ce matin et ce qui est bien c'est qu'il y a quelques jours je me demandais exactement comment faire ça
J'ai rencontré le bug de décalage dans les objets visuels puis j'ai lu la suite du sujet et j'ai vu que c'était "normal" je trouve dommage que Sybase n'ai pas corrigé et documenté cette fonctionnalité mais bon...
Pour le contourner j'ai d'abord essayé de déclarer les variables dans le global type avec l'edit source, ça marche super bien, pas de décalage mais cela empêche toute modification de l'objet dans l'éditeur visuel ce qui est quand même très gênant.
M'est donc venu une autre idée (ici un exemple avec un commandbutton)
Je crée un objet de base dans lequel je déclare mes variables d'instance, je fais passer ces variables d'instance dans le global type avec l'edit source, la seule fonction de cet objet est la déclaration des variables, je ne code rien car toute édition de cet objet devra passer par l'edit source si une des variables ainsi déclarée est utilisée.
forward global type u_commandbutton_variables from commandbutton end type end forward global type u_commandbutton_variables from commandbutton public boolean ib_ancrage_haut descriptor "pb_format"="DataType=boolean~tGroup=Sigma~tDivider=Ancrage~tLabel=En haut" = true public boolean ib_ancrage_bas descriptor "pb_format"="DataType=boolean~tGroup=Sigma~tLabel=En bas" = false public boolean ib_ancrage_droite descriptor "pb_format"="DataType=boolean~tGroup=Sigma~tLabel=A droite" = false public boolean ib_ancrage_gauche descriptor "pb_format"="DataType=boolean~tGroup=Sigma~tLabel=A gauche" = true public boolean ib_redim_pct_hauteur descriptor "pb_format"="DataType=boolean~tGroup=Sigma~tDivider=Redimensionner la taille du contrôle~tLabel=En pourcentage de la hauteur" = false public boolean ib_redim_pct_largeur descriptor "pb_format"="DataType=boolean~tGroup=Sigma~tLabel=En pourcentage de la largeur" = false public boolean ib_redim_font descriptor "pb_format"="DataType=boolean~tGroup=Sigma~tDivider=Redimensionner la taille de la police~tLabel=Changer la taille de la police" = true public boolean ib_limiter_taille_font descriptor "pb_format"="DataType=boolean~tGroup=Sigma~tLabel=Texte toujours affiché en entier" = true public boolean ib_pos_rel_hauteur = false public boolean ib_pos_rel_largeur = false integer width = 457 integer height = 128 integer textsize = -11 integer weight = 400 fontcharset fontcharset = ansi! fontpitch fontpitch = variable! fontfamily fontfamily = swiss! string facename = "Tahoma" end type global u_commandbutton_variables u_commandbutton_variables on u_commandbutton_variables.create end on on u_commandbutton_variables.destroy end on
Puis je crée mon vrai objet que je fais hériter du premier, bien sûr je ne redéclare pas mes variables
forward global type u_commandbutton from u_commandbutton_variables end type end forward global type u_commandbutton from u_commandbutton_variables end type global u_commandbutton u_commandbutton type variables private long il_dist_haut = 0 private long il_dist_bas = 0 private long il_dist_gauche = 0 private long il_dist_droite = 0 private dec{5} idc_pct_hauteur_font = 0 private dec{5} idc_pct_largeur_font = 0 private dec{5} idc_pct_hauteur_objet = 0 private dec{5} idc_pct_largeur_objet = 0 private dec{5} idc_taille_font_origine private long il_taille_controle_origine private dec{5} idc_pos_rel_haut private dec{5} idc_pos_rel_bas private dec{5} idc_pos_rel_gauche private dec{5} idc_pos_rel_droite end variables forward prototypes public subroutine of_resize () public subroutine of_get_texte (ref string as_texte) public subroutine of_get_ancrage_controle (ref s_ancrage astr_ancrage) public subroutine of_get_police (ref s_police_controle astr_police) public subroutine of_get_dist_controle (ref s_distance_controle astr_dist) public subroutine of_set_taille_police (decimal adc_font_size) end prototypes public subroutine of_resize ();// --------------------------------------------------------------------------- // [of_resize] ... ici le reste de mon code pour l'objet ...
Et petite cerise sur le McDo je peux accéder à mes variables avec le format que j'ai défini et non pas dans le instance variables ce que je trouve très confortable
En tout cas merci pour l'astuce elle m'est bien utile.
Dernière modification par _francois_ (10-10-2012 14:14:04)
Hors ligne
et merci pour ton post.
t'as pas des prix sur les scéances de thalasso pour les vieux dév. PB fatigués ?
Dernière modification par rincevent (10-10-2012 15:32:42)
Hors ligne
@ _francois_ : merci, et en plus la technique fonctionne sur plusieurs héritiers (même en rajoutant sur un héritier une nouvelle propriété descriptor mais juste après la ligne du "global type") et sans perdre les pédales !
Hors ligne
Ma boite fait des logiciels pour les thalasso mais je n'ai pas de prix :'(
Petit truc qui me gêne c'est que dans le color je n'ai pas le transparent (PB 12.5.1) et ça m'aurait bien arrangé de l'avoir et même mieux pouvoir construire moi même les couleurs à choisir.
Dans les version précédentes de PB on avait les Custom Colors dans le pb.ini mais je ne les retrouve pas dans ma version est-ce que quelqu'un sait où elles sont ?
Hors ligne
si ça peut t'aider : http://pbbraindump.wordpress.com/?s=color
Hors ligne
Ma question était plutôt de savoir si on pouvait modifier le dropdown de sélection de couleurs (à part les cutom colors évidement) je ne pense pas avoir vu de réponse sur le lien mais merci quand même
Hors ligne
pour ajouter le transparent il y avait l'exemple suivant :
long il_color2 descriptor "pb_format" = "Group=Lists~tOrder=1~tStyle=Color~tDataType=Long~tShowTransparent=True~tLabel=Avec Transparent"
Hors ligne
Rho le boulet que je suis ça m'a échappé merci beaucoup
Hors ligne
Un peu d'archeologie
//Fonts property string is_f_name descriptor "pb_format"="Group=Fonts~ttStyle=Font~tLabel=FaceName~tFontProperty=FaceName" integer ii_f_size descriptor "pb_format"="Group=Fonts~tStyle=Font~tLabel=TextSize~tFontProperty=TextSize"
Ca fonctionne chez vous ?
Ca ne marche pas sur mes PB 12.5 et 2017 alors que le reste des FontProperties fonctionne correctement.
Pas dramatique mais dommage.
Hors ligne
Question à 2 pépites
pour les options du style Alignment ie_alignment descriptor "pb_format"="Group=Lists~tStyle=SingleChoice~tLabel=Alignment~tItems=Center!|Left!|Right!~tImages=106|16|2|0|1"
où l'on a un picturelistebox si je comprends bien le Images=106|16|2|0|1
106 c'est un ID de liste
16 c'est la taille de l'image
le reste sont les ID des images dans le liste
savez vous si l'on peut utiliser des images customs pour cette picturelistbox ?
Dans ce cas il faut le bon ID liste et à la place des ID image le chemin des images
Le but pour moi ici est de contourner la palette de couleur trop réduite dans le Style=Color et proposer une palette personnalisée plus importante.
merci
Hors ligne
Bonjour, je suis en PB12.0
J'ai créé un bouton à partir d'un picturebutton.
J'ai besoin d'une variable pour la couleur et j'ai donc cette ligne dans mon onglet "variables d'instance"
long il_PbBackcolor descriptor "pb_format" = "DataType=long~tGroup=Font~tStyle=Color~tLabel=Text Color" = 13554432
dans son contexte :
global type u_cb_onoff_anc from picturebutton integer width = 494 integer height = 96 integer textsize = -8 integer weight = 400 fontcharset fontcharset = ansi! fontpitch fontpitch = variable! fontfamily fontfamily = swiss! string facename = "MS Sans Serif" string text = "none" boolean flatstyle = true end type global u_cb_onoff_anc u_cb_onoff_anc type variables private boolean ib_isOn = false long il_PbBackcolor descriptor "pb_format" = "DataType=long~tGroup=Font~tStyle=Color~tLabel=Text Color"
Mais rien n'y fait... J'ai soit loupé un truc, soit …
Hors ligne
Bonjour,
Il faut hérité ton objet pour que cette propriété soit visible, deplus _francois_ à précisé qu'il était préférable de mettre ces propriétés dans le bloc "global type".
Hors ligne
J'ai l'impression de faire comme vous
Dernière modification par pBLove (15-11-2019 13:45:58)
Hors ligne
Ces nouvelles propriétés doivent être déclarées au début, juste après
global type u_cb_onoff_anc from picturebutton
Hors ligne
Pages: 1 2