Je souhaite créer une chaîne qui s’étend sur plusieurs lignes à atsortingbuer à une propriété Label Caption. Comment cela se passe-t-il à 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} AnsiSsortingng(#13#10) {$ENDIF};
Ceci est à partir de Delphi 2009 (notez l’utilisation de AnsiChar et AnsiSsortingng). (Enveloppement de ligne ajouté par moi.)
Donc, si vous souhaitez rendre votre retour à la ligne TLabel, assurez-vous que l’option AutoSize est définie 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_ssortingng := 'Hello,'#13#10' world!';
my_ssortingng := 'Hello,' + #13#10 + 'world!';
#13#10
est les caractères CR / LF en décimal
Ou vous pouvez aussi utiliser le raccourci ^ M + ^ J. Tout est une question de préférence. les codes “CTRL-CHAR” sont traduits par le compilateur.
MySsortingng := 'Hello,' + ^M + ^J + 'world!';
Vous pouvez prendre le + entre le ^ M et le ^ J, mais vous obtiendrez alors un avertissement du compilateur (mais il comstackra toujours bien).
Sur le côté, un truc qui peut être utile:
Si vous conservez plusieurs chaînes dans un TSsortingngs, il vous suffit d’utiliser la propriété Text des TSsortingngs comme dans l’exemple suivant.
Label1.Caption := Memo1.Lines.Text;
Et vous obtiendrez votre label multiligne …
var stlst: TSsortingngList; begin Label1.Caption := 'Hello,'+sLineBreak+'world!'; Label2.Caption := 'Hello,'#13#10'world!'; Label3.Caption := 'Hello,' + chr(13) + chr(10) + 'world!'; stlst := TSsortingngList.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 manière agnostique de la plate-forme serait ‘sLineBreak’: http://www.freepascal.org/docs-html/rtl/system/slinebreak.html
Write (‘Bonjour’ + sLineBreak + ‘World!’);
ShowMessage('Hello'+Chr(10)+'World');
Je n’ai pas de copie de Delphi à ma disposition, mais je suis assez certain que si vous définissez la propriété wordwrap sur true et la propriété autosize sur false, elle doit envelopper le texte que vous avez placé à la taille de l’étiquette. Si vous souhaitez effectuer un saut de ligne à un certain endroit, cela peut fonctionner si vous définissez les parameters ci-dessus et collez-les à 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 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 en tant que texte”. Vous allez maintenant voir tous les objects 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, de sorte qu’elle ressemble à ceci:
Caption = ‘Line 1’ # 13’Line 2 ‘# 13’Line 3’
# 13 signifie un ordinal 13 ou ascii pour un 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é plutôt que “: =”. Le texte de chaque ligne est entre guillemets simples.
Une fois que vous avez terminé, cliquez à nouveau avec le bouton droit de la souris et choisissez “Afficher en tant que formulaire”. Vous pouvez maintenant effectuer n’importe quelle mise en forme telle que gras, justifiée à droite, etc. Vous ne pouvez simplement pas ré-éditer le texte sur le formulaire ou vous perdrez vos sauts de ligne.
J’utilise également “Afficher en tant que texte” pour de multiples changements où je veux juste faire défiler et faire des remplacements, etc. Rapide.
Dave
private { Private declarations } {declare a variable like this} NewLine : ssortingng; // ok // in next event handler assign a value to that variable (NewLine) // like the code down procedure TMainForm.FormCreate(Sender: TObject); begin`enter code here` NewLine := #10; {Next Code To show NewLine In action} //ShowMessage('Hello to programming with Delphi' + NewLine + 'Print New Lin now !!!!'); end;