Répétez apres moi :J'aime PBAdonf. J'aime PBAdonf. J'aime PBAdonf.

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 13-10-2011 08:04:10

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

comment connaitre la vraie hauteur du header avec autosize=yes

Bonjour,

j'ai un soucis pour retrouver la réelle hauteur de la bande Header d'une datawindow dont le contexte est le suivant:
- mode grid
- j'ai des statictexts sur chaque colonne avec un .height.autosize=yes et dont le .text est modifié dynamiquement
- le header.height.autosize=yes
- pb11.5.1 build 4843

le but étant de coller un controle (powerfilter button) en bas de la bande header; et là il se ballade au milieu et ça fait pas terminé...

j'ai tenté :
- si j'interroge "datawindow.height", j'ai la valeur d'origine
- si j'interroge "col1_t.height" sur mes statictexts, j'ai la valeur d'origine qui ne reflet pas la réalité

une idée ?

Dernière modification par xlat (13-10-2011 08:05:36)


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#2 13-10-2011 08:21:19

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: comment connaitre la vraie hauteur du header avec autosize=yes

ça ?

Code: pb

dw_1.Describe("datawindow.header.Height")

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 13-10-2011 08:23:12

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: comment connaitre la vraie hauteur du header avec autosize=yes

enfait j'ai tappé trop vite le

xlat a écrit:

- si j'interroge "datawindow.height", j'ai la valeur d'origine

j'ai bien testé ta proposition mais cela ne fait que retourné la valeur "d'origine"


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#4 13-10-2011 08:33:46

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: comment connaitre la vraie hauteur du header avec autosize=yes

et si tu mets height à zéro au départ ?


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 13-10-2011 08:35:55

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: comment connaitre la vraie hauteur du header avec autosize=yes

ou bien récupérer la hauteur max des statictexts ?


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#6 13-10-2011 08:41:05

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: comment connaitre la vraie hauteur du header avec autosize=yes

je reçoit 0 avec

Code: pb

dw_1.Describe("datawindow.header.Height")

https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#7 13-10-2011 08:43:24

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: comment connaitre la vraie hauteur du header avec autosize=yes

erasorz a écrit:

ou bien récupérer la hauteur max des statictexts ?

"tout le monde ment (c) Dr.House",
même topo avec les statictext, ils sont eux même en height.autosize=yes et les

Code: pb

describe("statictext.height")

retourne la valeur du design qui ne correspond plus à ce que j'ai à l'écran (texte modifié dynamiquement).


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#8 13-10-2011 08:46:24

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: comment connaitre la vraie hauteur du header avec autosize=yes

et en mettant un compute avec comme expression RowHeight() ?


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#9 13-10-2011 08:50:22

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: comment connaitre la vraie hauteur du header avec autosize=yes

déjà essayé, même avec un

Code: pb

describe('evaluate("rowheight()",0)')

j'obtiens dans ce cas la hauteur de la première ligne de détail.

Dernière modification par xlat (13-10-2011 08:51:10)


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#10 13-10-2011 08:54:25

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: comment connaitre la vraie hauteur du header avec autosize=yes

et si tu mets ton bouton plus bas que ce qu'il faut + slide up = "all above" ?


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#11 13-10-2011 09:40:15

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: comment connaitre la vraie hauteur du header avec autosize=yes

je n'ai pas l'effet escompté en plus des bidouilles que cela impose :

les controles sont créer sur le layer foreground, donc le slideup ne fonctionne pas comme attendu.
maintenant si je change le controle de band avec

Code: pb

setposition( "b_powerfilter1", "header", false /* ou true */ )

le boutton remonte de 4 à 10 pixels avec le slideup=allabove et y=1500, mais cela ne correspond pas à ce que l'on pourrait attendre, en plus mon header grandis encore à causse du y du boutton.

Dernière modification par xlat (13-10-2011 09:41:27)


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#12 13-10-2011 09:54:50

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: comment connaitre la vraie hauteur du header avec autosize=yes

bon il te reste l'option de mettre le bouton au-dessus des statictexts... ou à l'extérieur de la DW 


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#13 13-10-2011 11:24:58

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: comment connaitre la vraie hauteur du header avec autosize=yes

je capitule et je vais aligner les boutons sur les statictext.y et réduire le width des statics pour eviter un chevauchement avec les boutons...

je met [RESOLU] ou on laisse au cas où une âme généreuse y grefferait un jour une solution ?


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#14 07-02-2012 14:51:30

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,776,000
Site web

Re: comment connaitre la vraie hauteur du header avec autosize=yes

Juste pour rire, tu l'as mis où ton code ? Pas dans le constructor de la DW des fois ?


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#15 07-02-2012 15:20:42

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: comment connaitre la vraie hauteur du header avec autosize=yes

Chrnico a écrit:

Juste pour rire, tu l'as mis où ton code ? Pas dans le constructor de la DW des fois ?

ha... si seulement... un post pouvait me sauver!
mais non ce n'est pas le cas.


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#16 08-02-2012 08:31:54

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,776,000
Site web

Re: comment connaitre la vraie hauteur du header avec autosize=yes

xlat a écrit:

Chrnico a écrit:

Juste pour rire, tu l'as mis où ton code ? Pas dans le constructor de la DW des fois ?

ha... si seulement... un post pouvait me sauver!
mais non ce n'est pas le cas.

Dommage, le remède aurait été rapide

Reste à :
- tenter un setredraw(true) avant de récupérer la hauteur du header (c'est peu probable mais c'est ballot un setredraw(false) qui met le bazard)
- vérifier les unités de la DW (Powerunit / Pixel) et faire une conversion éventuelle dans tes formules si besoin est.
- essayer de mettre un controle Line dans ton header avec y1 = 0 et y2 = rowheight(), puis récupérer le y2 une fois le autoheight du header effectué.
- allumer un cierge ou attendre un EBF (c'est un peu pareil)


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#17 08-02-2012 09:24:02

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: comment connaitre la vraie hauteur du header avec autosize=yes

Bonjour,

Hélas, je n'ai pas de solution. Mais je me suis déjà heurté à ce problème. J'ai pas mal trituré le problème dans tous les sens sans résultat.

Je suis également preneur d'une solution.

Hors ligne

 

#18 31-07-2014 16:35:40

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: comment connaitre la vraie hauteur du header avec autosize=yes

Désolé du déterrage, mais on ne sait jamais ça pourrait inspirer certains
Dans la série workaround de la mort qui tue, autrement dit, quand on est développeur PB on n'a pas d'IDE mais des idées

Ce code - vraiment simpliste mais améliorable à souhait - recherche verticalement le premier pixel de couleur rouge dans la DW :

Code: pb

// Fonctions externes à déclarer
Function Ulong GetDC( Ulong hwnd ) Library "user32.dll"
Function Ulong GetPixel( Ulong hwnd, Long xpos, Long ypos ) Library "gdi32.dll"


// Recherche verticale du premier point d'une couleur donnée dans la DW
Long     ll_rgb, ll_rgb_target, ll_x, ll_y, ll_y_max, ll_ypb_max, ll_y_target = -1, ll_ypb_target
Ulong    ll_handle, ll_device
String   ls_msg


ll_x          = 1
ll_ypb_max    = dw_grid.Height  // ici il faudrait prendre la "vraie" hauteur de la DW non celle du control
ll_y_max      = UnitsToPixels( ll_ypb_max, YUnitsToPixels! )
ll_rgb_target = RGB( 255, 0, 0 )
ll_handle     = Handle( dw_grid )
ll_device     = GetDC( ll_handle )

For ll_y = 1 To ll_y_max
  
  ll_rgb = GetPixel( ll_device, ll_x, ll_y )
  
  If ll_rgb = ll_rgb_target Then
    
    ll_y_target = ll_y
    Exit
    
  End If
  
Next

If ll_y_target <> -1 Then

  ll_ypb_target = PixelsToUnits( ll_y_target, YPixelsToUnits! ) 

  ls_msg = "RGB recherché=" + String( ll_rgb_target ) + "~n" &
         + "yPixel="        + String( ll_y_target   ) + "~n" &
         + "yPB="           + String( ll_ypb_target )
       
  MessageBox( "Pixel trouvé", ls_msg )

End If


Le résultat :

http://i.imgur.com/GwmNL4V.png

Enjoy


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#19 01-08-2014 07:41:43

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: comment connaitre la vraie hauteur du header avec autosize=yes

erasorz a écrit:

Dans la série workaround de la mort qui tue, autrement dit, quand on est développeur PB on n'a pas d'IDE mais des idées

Ce code - vraiment simpliste mais améliorable à souhait - recherche verticalement le premier pixel de couleur rouge dans la DW [...]

Wouahou, le genre de solution tordue mais inattendue comme j'aime !


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22