Je souhaite créer une chaîne qui s'étend sur plusieurs lignes à affecter à une propriété Label Caption. Comment cela se fait-il à Delphes?
Dans le fichier System.pas (qui est utilisé automatiquement), les éléments suivants sont définis:
const
sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF}
{$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};
C’est à partir de Delphi 2009 (notez l’utilisation de AnsiChar et AnsiString). (Ajout de ligne ajouté par moi.)
Donc, si vous voulez que votre TLabel soit renvoyé à la ligne, assurez-vous qu'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.
Voici une approche encore plus courte:
my_string := 'Hello,'#13#10' world!';
my_string := 'Hello,' + #13#10 + 'world!';
#13#10
est les caractères CR/LF en décimal
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 := 'Hello,' + ^M + ^J + 'world!';
Vous pouvez enlever le + entre ^ M et ^ J, mais vous recevrez alors un avertissement du compilateur (mais la compilation sera quand même bien).
Du côté, un truc qui peut être utile:
Si vous conservez plusieurs chaînes dans une TStrings, il vous suffit d'utiliser la propriété Text de la TStrings comme dans l'exemple suivant.
Label1.Caption := Memo1.Lines.Text;
Et vous aurez 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 agnostique de la plateforme serait 'sLineBreak': http://www.freepascal.org/docs-html/rtl/system/slinebreak.html
Write ('Hello' + sLineBreak + 'World!');
Je n'ai pas de copie de Delphi sous la main, mais je suis à peu près certain que si vous définissez la propriété wordwrap sur true et la propriété autosize sur false, le texte que vous placez à la taille de l'étiquette. Si vous voulez changer de ligne à un certain endroit, alors cela pourrait fonctionner si vous définissez les paramètres ci-dessus et collez-le à partir d'un éditeur de texte.
J'espère que cela t'aides.
ShowMessage('Hello'+Chr(10)+'World');