J'ai remarqué qu'on ne peut pas avoir plusieurs lignes avec les labels en C++ Builder alors que c'est possible en VB.
Dès que j'appuie sur Entrée, la saisie s'arrête.
J'ai remarqué qu'on ne peut pas avoir plusieurs lignes avec les labels en C++ Builder alors que c'est possible en VB.
Dès que j'appuie sur Entrée, la saisie s'arrête.
En effet, les labels de C++ Builder et de Delphi sont différents de VB, quand on appuie sur Entrée, cela ne crée pas une autre ligne du label.
Mais il est possible d'avoir un label multiligne mais pas dans l'EDI.
Pour cela, il faut éditer directement avec bloc-notes le fichier DFM, les caractères #10#13 sont à insérer pour descendre à la ligne.
randriano.dvp.com
Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).
Mais je me demande aussi pour accélérer les choses,
n'existe-t-il pas des composants freewares tous faits pour écrire des labels multilignes dans l'EDI de C++ Builder.
randriano.dvp.com
Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).
Les composants TBX font ça:
http://www.g32.org/tbx/
C'est un descendant de toolbar2k:
http://www.jrsoftware.org/
Les 2 sont en fait des composants de docking toolbars (pas de rapport avec un Label multiligne à priori mais...).
Toolbar2k est excellent, mais je trouve TBX un peu lourd pour ce qu'il apporte en plus à toolbar2k.
yarp
www.senosoft.com
Pour faire plus simple, tu peux peut-être aussi utiliser un TMemo avec BorderStyle=bsNone, TabStop=false, ReadOnly=true et éventuellement ParentColor=true (pour le mode Transparent) ?
Salut !
Sans doute en ajoutant un "\n" ...
Ca devrait se trouver dans les "trucs et astuces" !
A plus !
Damned, c'est vrai, c'est encore ce qu'il y a de plus simple !
Cela dit, ça ne fonctionne pas en mode conception.
Le problème avec Memo c'est qu'il est sélectionnable!
Le problème avec "\n" c'est qu'il faut alors utiliser un code du genre
Label1->Caption=... alors que je veux le faire directement en RAD.
merci pour tous ces conseils!
Salut !
Dans ce cas, ce n'est pas la peine de travailler avec BCB, WORD suffit !
Au premier niveau, BCB n'offre que des solutions génériques pour la plus part purement bureautiques !
Autre solution : concevoir un composant répondant à ce type de comportement !
Et dans ce cas précis, si l'éditeur de la propriété TStrings n'est pas satisfaisant tu peux très bien en concevoir un autre !
Rien n'empèche non plus pour ce nouveau composant d'utiliser un simple AnsiString et de prendre en charge la représentation graphique de son contenu dans la zone client de ce composant, en y mettant tout ton génie !
N'est-ce pas un minimum à attendre d'un développeur ?
Entre nous, rajouter une ligne de code dans le constructeur de la form n'a jamais tué personne !
A plus !
Salut, on peut écrire un TLabel sur plusieurs lignes à sa comecption.
Il suffit de mettre sa propriété "WordWrapd" à true et d'ajuster la taille du TLabel.
Salut!
Je ne comprends pas le truc du WordWrap, j'ai essayé mais je ne vois pas aucune différence.
A propos de:
Est-ce que tu peux me donner un tuyau, henderson!Entre nous, rajouter une ligne de code dans le constructeur de la form n'a jamais tué personne !
Actuellement, je suis à la recherche de tutoriel sur la création de composants visuels. Je sais créer des classes mais les ajouter des EVENEMENTS me posent des problèmes.
http://chgi.developpez.com/compo/
ou/et
http://dvsoft.developpez.com/Articles/EditeursProperty/
Pour le wordwrap, il permet effectivement d'afficher le texte sur plusieurs lignes mais contrôler la façon de couper les lignes est un peu fastidieux (si tu as un texte très long).
Tu mets Wordwrap et AutoSize à true et tu redimensionnes ton composant en longueur et en largeur. Le contenu des lignes s'adapte. Tu peux insérer des espaces pour provoquer des retours à la ligne.
Salut !
Dans un contexte d'édition normale, avec un TLabel tel qu'il est fourni par BCB, c'est l'éditeur de propriété pour AnsiString (Caption) qui prend le dessus et qui interdit la prise en compte du CR + LF.
On est donc dans la situation où Caption ne peut être initialisé que dynamiquement, par le programme lui même pour l'obliger en prendre en compte (n) lignes :
Dans le constructeur de la form :
Code : Sélectionner tout - Visualiser dans une fenêtre à part AnsiString NL = "\n";
A plus !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Label1->Caption = "Première ligne" + NL + "Deuxième ligne" + NL + "Troisième ligne";
Oui, pour la création d'un nouveau composant, une solution serait peut-être de désactiver la propriété Caption (en partant de TCustomLabel) et d'ajouter une propriété de type TStringList qui renseigne Caption ?
Salut !
Dans un premier temps je me suis contenté de créer un nouveau composant dérivé de TLabel.
Ce composant est désormais dans la palette Exemples.
J'ai surchargé sa méthode Paint :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class PACKAGE TMyLabel : public TLabel { private: protected: public: __fastcall TMyLabel(TComponent* Owner); void __fastcall Paint(); __published: };L'idée ici est de laisser l'édition de Caption par BCB, mais d'agir sur le contenu de la chaîne au moment du dessin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void __fastcall TMyLabel::Paint() { TReplaceFlags Flags = Flags << rfReplaceAll; Caption = StringReplace(Caption, ".", "\n", Flags); TLabel::Paint(); // << sans quoi il ne se passe rien ! }
Dans cet exemple, je considière le point comme indicateur d'une nouvelle ligne.
On peut prendre n'importe quel caractère... sauf bien entendu un VK_RETURN puisqu'il est détecté par l'éditeur des AnsiString pour terminer la saisie.
A toi de voir... !
A plus !
Désolé du retard,
Si tu mets la propriété WordWrap à true, et qu'ensuite tu modifies la taille de ton TLabel en longueur et hauteur, le nombre de ligne s'adaptera automatiquement.
Je ne sais pas si c'est clair, mais c'est simple à faire![]()
L'expert CnWizard (le truc qui va avec le CnPack) change l'éditeur de propriété et permet ainsi le multiligne.
Merci à vous tous: josse65, henderson, etc.
J'ai tenu compte de tous vos conseils! tous ont été des bons conseils! Thanks
Partager