Mot coupé

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Bmld76
Messages : 116
Inscription : dim. 09/janv./2022 12:47

Mot coupé

Message par Bmld76 »

Bonsoir,

Lorsque j'affiche des noms trop longs dans un gadgetText, ceux-ci sont bizarrement coupés en fonction des espaces contenus dans le texte. Pensez-vous que c'est normal.
Une solution consiste à tronquer soit même, c'est ennuyeux et ca oblige à le prévoir à chaque fois.

J'ai fai un petit programme test

Bien Cordialement

Image

Code example

Code : Tout sélectionner

  If OpenWindow(0, 0, 0, 220, 200, "Exemple...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

   ButtonGadget  (1, 10, 10, 200, 30, "Fermer")
   TextGadget(2,10, 40, 130,20,"");,#PB_Text_Right )
   SetGadgetText(2,"PONCELETSCHIOCTETCaroline")
   SetGadgetColor(2,#PB_Gadget_BackColor,$888888)
   
   TextGadget(3,10, 70, 130,20,"");,#PB_Text_Right )
   SetGadgetText(3,"PONCELET SCHIOTTET Caroline")
   SetGadgetColor(3,#PB_Gadget_BackColor,$888888) 
   
  TextGadget(4,10, 100, 130,20,"");,#PB_Text_Right )
   SetGadgetText(4,Left("PONCELET SCHIOTTET Caroline",16))
   SetGadgetColor(4,#PB_Gadget_BackColor,$888888) 
   
   Repeat
     Event = WaitWindowEvent()
     
     Select Event
     
       Case #PB_Event_Gadget
         Select EventGadget()
           Case 1 
              CloseWindow(0)
              End  
         EndSelect
            
     EndSelect
   Until Event = #PB_Event_CloseWindow
 EndIf
_____________________________________________________________
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5

PureBasic 6.11 MacOS
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Mot coupé

Message par Ollivier »

C'est la base même de toutes les GUI pourries : des textes tronqués, des scrollArea mal gérés, et, pour le Javascript, des popups incontrôlables.

Dès que tu es en interface graphique, il y a ce type de problèmes.

Ton but, les résoudre en caractérisant ce que tu affiches (déterminer quel va être le but du texte affiché : principalement, simple aperçu, ou texte dont la lecture doit être maîtrisée)

5 solutions :
- préparer un cadre (valeurs x y w h) largement plus spacieux.
- utiliser StringGadget en mode lecture-seule
- utiliser EditorGadget en mode lecture-seule pour un texte multi-lignes
- écrire le texte dans une image, et afficher ça avec ImageGadget.
- afficher directement le texte avec DrawText() sur la surface de la fenètre (nécessite une callback pour le rafraîchissement)

Le textGadget a justement cet avantage de gérer le multi-ligne, mais ce qui freine dans ce cas c'est l'absence de contrôle de la taille des caractères : en multi-ligne, autant fabriquer son propre affichage (image, canvas ou directement sur la fenêtre) pour contrôler parfaitement l'affichage.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Mot coupé

Message par falsam »

Bonjour. Je ne vois pas ce qui est anormal. Si ton TextGadget n'a pas la longueur suffisante pour afficher du contenu, le GUI va essayer de faire du Line-Wrapping. Dans ce cas il faut prévoir de hauteur dans ton textegadget.

■ Modifions ton code pour voir ce qu'il se passe.

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 220, 200, "Exemple...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  ButtonGadget  (1, 10, 10, 200, 30, "Fermer")
  
  TextGadget(2,10, 40, 130, 40,"");,#PB_Text_Right )
  SetGadgetText(2,"PONCELETSCHIOCTETCaroline")
  SetGadgetColor(2,#PB_Gadget_BackColor,$888888)
  
  TextGadget(3,10, 90, 130, 40,"");,#PB_Text_Right )
  SetGadgetText(3,"PONCELET SCHIOTTET Caroline")
  SetGadgetColor(3,#PB_Gadget_BackColor,$888888) 
  
  TextGadget(4,10, 140, 130, 40,"");,#PB_Text_Right )
  SetGadgetText(4,Left("PONCELET SCHIOTTET Caroline",16))
  SetGadgetColor(4,#PB_Gadget_BackColor,$888888) 
  
  Repeat
    Event = WaitWindowEvent()
    
    Select Event
        
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 1 
            CloseWindow(0)
            End  
        EndSelect
        
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf
-Premier TextGadget, pas de passage à la ligne, car il n'y pas d'espace dans le texte à afficher.
-Deuxième TextGadget, le passage à la ligne a pu se faire car il y a au moins un espace dans le texte à afficher.
-Troisième TextGadget, inutile de faire un passage à la ligne car tu a demandé l'affichage des seize premiers caractères de ton texte. Ton TextGadget est largement dimensionné.

■ On va utilisé le style SS_EDITCONTROL pour activer le passage à la ligne pour chacun des TextGadget si nécessaire.
:arrow: https://docs.microsoft.com/en-us/window ... ast%20line.

Code : Tout sélectionner

#SS_EDITCONTROL = $2000

If OpenWindow(0, 0, 0, 220, 200, "Exemple...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  ButtonGadget  (1, 10, 10, 200, 30, "Fermer")
  
  TextGadget(2,10, 40, 130, 40,"", #SS_EDITCONTROL);,#PB_Text_Right )
  SetGadgetText(2,"PONCELETSCHIOCTETCaroline")
  SetGadgetColor(2,#PB_Gadget_BackColor,$888888)
  
  TextGadget(3,10, 90, 130, 40,"");,#PB_Text_Right )
  SetGadgetText(3,"PONCELET SCHIOTTET Caroline")
  SetGadgetColor(3,#PB_Gadget_BackColor,$888888) 
  
  TextGadget(4,10, 140, 130, 40,"");,#PB_Text_Right )
  SetGadgetText(4,Left("PONCELET SCHIOTTET Caroline",16))
  SetGadgetColor(4,#PB_Gadget_BackColor,$888888) 
  
  Repeat
    Event = WaitWindowEvent()
    
    Select Event
        
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 1 
            CloseWindow(0)
            End  
        EndSelect
        
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf
Enjoy :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Mot coupé

Message par kernadec »

bjr à tous
peut être ajouter un info-bulle multi-line pour voir en paragraphe tout le texte :D
il y a des codes qui font cela très bien
Cordialement
Bmld76
Messages : 116
Inscription : dim. 09/janv./2022 12:47

Re: Mot coupé

Message par Bmld76 »

Bonsoir a tous,

Merci pour ces précieuses informations, je n'avais pas fait attention que GadgetText affichait sur plusieurs ligne, ce qui explique mes problèmes.


Bien Cordialement
_____________________________________________________________
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5

PureBasic 6.11 MacOS
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Mot coupé

Message par Ollivier »

L'idée de kernadec en code source :

Code : Tout sélectionner

Procedure TipTextGadget(Id, x, y, w, h, text.S, Opt = 0)
Result = StringGadget(Id, x, y, w, h, text, #PB_String_BorderLess | Opt)
If Id = #PB_Any
   GadgetToolTip(Result, text)
Else
   GadgetToolTip(Id, text)
EndIf
ProcedureReturn Result
EndProcedure
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Mot coupé

Message par Ollivier »

Il y a ça aussi : (et c'est violemment utile)

Code : Tout sélectionner

RW = GadgetWidth(TonGadget, #PB_Gadget_RequiredSize)
RH = GadgetHeight(TonGadget, #PB_Gadget_RequiredSize)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Mot coupé

Message par Ar-S »

#PB_Gadget_RequiredSize
Mais ça date de quand ça ??? 8O 8O 8O J'hallucine.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Mot coupé

Message par Mesa »

Sous Windows, on peut aussi ajouté 3 petits points pour la troncature.
En résumé:

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 220, 220, "Exemple...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	
	ButtonGadget  (1, 10, 10, 200, 30, "Fermer")
	TextGadget(2,10, 40, 130,20,"");,#PB_Text_Right )
	SetGadgetText(2,"PONCELETSCHIOCTETCaroline")
	SetGadgetColor(2,#PB_Gadget_BackColor,$888888)
	ResizeGadget(2,#PB_Ignore,#PB_Ignore,GadgetWidth(2, #PB_Gadget_RequiredSize),#PB_Ignore)
	
	TextGadget(3,10, 70, 130,20,"");,#PB_Text_Right )
	SetGadgetText(3,"PONCELET SCHIOTTET Caroline")
	SetGadgetColor(3,#PB_Gadget_BackColor,$888888) 
	ResizeGadget(3,#PB_Ignore,#PB_Ignore,GadgetWidth(3, #PB_Gadget_RequiredSize),#PB_Ignore)
	
	TextGadget(4,10, 100, 130,20,"");,#PB_Text_Right )
	SetGadgetText(4,Left("PONCELET SCHIOTTET Caroline",16))
	SetGadgetColor(4,#PB_Gadget_BackColor,$888888) 
	ResizeGadget(4,#PB_Ignore,#PB_Ignore,GadgetWidth(4, #PB_Gadget_RequiredSize),#PB_Ignore)
	
	;Windows seulement
	TextGadget(5,10, 130, 130,20,"",#SS_ENDELLIPSIS);,#PB_Text_Right )
	SetGadgetText(5,"PONCELET SCHIOTTET Caroline")
	SetGadgetColor(5,#PB_Gadget_BackColor,$888888) 
	
	;Windows seulement
	TextGadget(6,10, 160, 130,20,"",#SS_WORDELLIPSIS);,#PB_Text_Right )
	SetGadgetText(6,Left("PONCELET SCHIOTTET Caroline",16))
	SetGadgetColor(6,#PB_Gadget_BackColor,$888888) 
	
	;Windows seulement
	TextGadget(7,10, 190, 130,20,"",#PB_Text_Right|#SS_WORDELLIPSIS)
	SetGadgetText(7,Left("PONCELET SCHIOTTET Caroline",16))
	SetGadgetColor(7,#PB_Gadget_BackColor,$888888) 
	
	Repeat
		Event = WaitWindowEvent()
		
		Select Event
				
			Case #PB_Event_Gadget
				Select EventGadget()
					Case 1 
						CloseWindow(0)
						End  
				EndSelect
				
		EndSelect
	Until Event = #PB_Event_CloseWindow
EndIf
M.
Répondre