Textgadget autosize

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Textgadget autosize

Message par Dr. Dri »

je fais un peu de VB en ce moment et j'ai découvert cette intéressante propriété ^^
ca permet de faire par exemple des boites de dialogues dont la taille dépend du texte (comme MessageRequester)

Problème:
Comment faire la même chose en PB ? J'ai cherché sur le forum officiel et y'a rien, je vais fouiller dans le msdn... J'espère que quelqu'un pourra m'éclairer là dessus ^^

Dri
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Une idée :

Récupérer la longueur du texte,
puis agrandir le requester à la taille de celui ci
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Progi1984 a écrit :Une idée :

Récupérer la longueur du texte,
puis agrandir le requester à la taille de celui ci
Tu sais comment faire sans startdrawing ?
je vais regarder les fonctions gdi de windows

Dri :)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Il y a une fonction genre GetTextExtentPoint32_() ou quelque chose comme ça dans l'Api.

Je m'en suis servi une fois pour la longueur du texte, par contre, je ne sais plus si elle fonctionne aussi pour la hauteur.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

En fait, il suffirait de faire un len du texte contenu dans le titre, puis dans le requester et de choisir le plus long pour avoir la taille du requester ! Non ?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Progi1984 a écrit :En fait, il suffirait de faire un len du texte contenu dans le titre, puis dans le requester et de choisir le plus long pour avoir la taille du requester ! Non ?
Un Len() te retourne le nombre de caractères, pas la longueur en pixels.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Progi1984 a écrit :En fait, il suffirait de faire un len du texte contenu dans le titre, puis dans le requester et de choisir le plus long pour avoir la taille du requester ! Non ?
Le but c'est pas de faire un requester mais de rendre automatique la taille d'un textgadget selon sa police (type, taille, style etc) et le texte qu'il contient ^^
(le requester c'est un exemple =)

@Chris
Je vais regarder cette fonction de plus près ^^

Dri :)
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Dsl, je me suis trompé ! :)
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Ca marche super bien GetTextExtentPoint32_() et ca fonctionne aussi pour la hauteur. Merci Chris ^^

Dri :D
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message par Dorian »

Tu pourrais nous donner un exemple stp ^^
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

C'est ce que j'allais dire :lol:
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

j'ai voulu pondre un exemple et hop ca ne marche pas lol
je comprend pas trop...
je vais regarder de plus près ^^

Dri
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

moi je ferai comme ça !!

dans l'exemple suivant change le text , et sa taille
la fenetre est redimentionné ! ça vaut ce que ça vaut :D
ça peut dépanner...



  ; PureBasic Visual Designer v3.92 build 1460

;- Window Constants
Declare Open_message(text$,taille)

Enumeration
     #message
     #Police
     #Button_0
     #Text_0
EndEnumeration

text$= "hello " ; <----------------------------ICI ajoute du text
taille=10 ; <----------------------------ICI change la taille
Open_message(text$,taille)



; ******************* boucle principale ****************
Repeat ; Start of the event loop
    Event = WaitWindowEvent () ; This line waits until an event is received from Windows
     WindowID = EventWindowID () ; The Window where the event is generated, can be used in the gadget procedures
     GadgetID = EventGadgetID () ; Is it a gadget event?
     EventType = EventType () ; The event type
     If Event = #PB_EventGadget
         If GadgetID = #Button_0
             End
         EndIf
     EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
;**********************************



Procedure Open_message(text$,taille)
     FontID = LoadFont ( #Police , "Comic Sans MS" , taille, #PB_Font_Bold )
    long=( Len (text$)*taille)
    
     If OpenWindow ( #message , 10, 10,long, 50+long/8, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar , "message" )
         If CreateGadgetList ( WindowID ())
             ButtonGadget ( #Button_0 , 0, WindowHeight ()-30, 60, 30, "ok" )
             TextGadget ( #Text_0 , 30, (taille/8 ), 140+long, taille*2, text$)
             SetGadgetFont ( #Text_0 , FontID )
         EndIf
     EndIf
EndProcedure
Dernière modification par Backup le lun. 26/déc./2005 22:53, modifié 4 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

cela ne marche pas au dela de la taille 48 !! :?
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message par Dorian »

48 c'est déjà plus que bien ^^
Répondre