Je souhaite créer une chaîne qui s'étend sur plusieurs lignes à attribuer à une propriété de légende d'étiquette. Comment cela se fait-il dans Delphi?
Dans le System.pas (qui est automatiquement utilisé), les éléments suivants sont définis:
const
sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF}
{$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};
Ceci est de Delphi 2009 (notez l'utilisation d'AnsiChar et AnsiString). (Fin de ligne ajouté par moi.)
Donc, si vous souhaitez rendre votre TLabel wrap, assurez-vous que AutoSize est défini sur true, puis utilisez le code suivant:
label1.Caption := 'Line one'+sLineBreak+'Line two';
Fonctionne dans toutes les versions de Delphi depuis l'introduction de sLineBreak, qui, je crois, était Delphi 6.
my_string := 'Hello,' + #13#10 + 'world!';
#13#10
est les caractères CR / LF en décimal
Vous pouvez également utiliser le raccourci ^ M + ^ J. Tout est une question de préférence. les codes "CTRL-CHAR" sont traduits par le compilateur.
MyString := 'Hello,' + ^M + ^J + 'world!';
Vous pouvez retirer le + entre ^ M et ^ J, mais vous obtiendrez alors un avertissement du compilateur (mais il compilera toujours correctement).
Sur le côté, une astuce qui peut être utile:
si vous tenez vos multiples chaînes dans un TStrings, il vous suffit d'utiliser la propriété Text des TStrings comme dans l'exemple suivant.
Label1.Caption := Memo1.Lines.Text;
Et vous obtiendrez votre étiquette multiligne ...
var
stlst: TStringList;
begin
Label1.Caption := 'Hello,'+sLineBreak+'world!';
Label2.Caption := 'Hello,'#13#10'world!';
Label3.Caption := 'Hello,' + chr(13) + chr(10) + 'world!';
stlst := TStringList.Create;
stlst.Add('Hello,');
stlst.Add('world!');
Label4.Caption := stlst.Text;
Label5.WordWrap := True; //Multi-line Caption
Label5.Caption := 'Hello,'^M^J'world!';
Label6.Caption := AdjustLineBreaks('Hello,'#10'world!');
{http://delphi.about.com/library/rtl/blrtlAdjustLineBreaks.htm}
end;
La méthode indépendante de la plate-forme serait 'sLineBreak': http://www.freepascal.org/docs-html/rtl/system/slinebreak.html
Écrivez ('Bonjour' + sLineBreak + 'Monde!');
Je n'ai pas de copie de Delphi sous la main, mais je suis assez certain que si vous définissez la propriété wordwrap sur true et la propriété autosize sur false, cela devrait envelopper tout texte que vous le mettez à la taille que vous créez pour l'étiquette. Si vous souhaitez effectuer un saut de ligne à un certain endroit, cela peut fonctionner si vous définissez les paramètres ci-dessus et collez à partir d'un éditeur de texte .
J'espère que cela t'aides.
Parfois, je ne veux pas encombrer mon espace de code, en particulier pour une étiquette statique. Pour simplement le définir avec le formulaire, entrez le texte de l'étiquette sur le formulaire, puis cliquez avec le bouton droit n'importe où sur le même formulaire. Choisissez "Afficher sous forme de texte". Vous verrez maintenant tous les objets tels qu'ils ont été conçus, mais uniquement sous forme de texte. Faites défiler vers le bas ou recherchez votre texte. Lorsque vous le trouvez, modifiez la légende pour qu'elle ressemble à quelque chose comme:
Légende = 'Ligne 1' # 13'Ligne 2 '# 13'Ligne 3'
# 13 signifie un ordinal 13, ou ascii pour le retour chariot. Chr (13) est la même idée, CHR () change le nombre en un type ordinal.
Notez qu'il n'y a pas de point-virgule dans cette facette particulière de Delphi, et "=" est utilisé à la place de ": =". Le texte de chaque ligne est placé entre guillemets simples.
Une fois que vous avez terminé, cliquez à nouveau avec le bouton droit de la souris et choisissez «Afficher sous forme de formulaire». Vous pouvez maintenant faire n'importe quel formatage tel que gras, justifié à droite, etc. Vous ne pouvez tout simplement pas rééditer le texte sur le formulaire ou vous perdrez vos sauts de ligne.
J'utilise également "Afficher sous forme de texte" pour de multiples changements où je veux juste faire défiler et faire des remplacements, etc. Rapide.
Dave
la source