101 votes

Comment inclure un caractère de nouvelle ligne dans une chaîne en Delphi?

Je veux créer une chaîne qui s'étend sur plusieurs lignes à affecter à une propriété de légende d'étiquette. Comment cela se fait-il en Delphi?

180voto

Jim McKeeth Points 22637

Dans le fichier System.pas (qui est automatiquement utilisé), la définition suivante est définie :

const
  sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF} 
               {$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};

Ceci provient de Delphi 2009 (notez l'utilisation de AnsiChar et AnsiString). (Saut de ligne ajouté par moi.)

Donc, si vous voulez que votre TLabel passe à la ligne, assurez-vous que AutoSize est défini sur true, et utilisez ensuite le code suivant :

label1.Caption := 'Ligne un'+sLineBreak+'Ligne deux';

Fonctionne dans toutes les versions de Delphi depuis l'introduction de sLineBreak, je crois que c'était à partir de Delphi 6.

38voto

Zartog Points 1125

Voici une approche encore plus courte :

my_string := 'Bonjour,'#13#10' monde!';

18voto

Brendan Points 7674

my_string := 'Bonjour,' + #13#10 + 'monde!';

#13#10 sont les caractères CR/LF en décimal

8voto

François Points 17557

À côté, un astuce qui peut être utile:
Si vous stockez vos chaînes de caractères multiples dans un TStrings, il vous suffit d'utiliser la propriété Text du TStrings comme dans l'exemple suivant.

Label1.Caption := Memo1.Lines.Text;

Et vous obtiendrez votre étiquette multi-ligne...

8voto

skamradt Points 13049

Ou 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 := 'Bonjour,' + ^M + ^J + 'monde!';

Vous pouvez supprimer le + entre ^M et ^J, mais alors vous recevrez un avertissement du compilateur (mais il compilera quand même correctement).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X