Delphi'de bir dizeye yeni satır karakterini nasıl eklerim?


97

Bir Etiket Başlığı özelliğine atamak için birden çok satıra yayılan bir dize oluşturmak istiyorum. Delphi'de bu nasıl yapılır?

Yanıtlar:


174

System.pas'ta (otomatik olarak kullanılır) aşağıdakiler tanımlanır:

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

Bu Delphi 2009'dan alınmıştır (AnsiChar ve AnsiString kullanımına dikkat edin). (Satır kaydırma benim tarafımdan eklendi.)

Dolayısıyla, TLabel sarmalamanızı yapmak istiyorsanız, Otomatik Boyutlandırmanın doğru olarak ayarlandığından emin olun ve ardından aşağıdaki kodu kullanın:

label1.Caption := 'Line one'+sLineBreak+'Line two';

Delphi 6 olduğuna inandığım sLineBreak piyasaya sürüldüğünden beri tüm Delphi sürümlerinde çalışıyor.


33

İşte daha da kısa bir yaklaşım:

my_string := 'Hello,'#13#10' world!';

15

my_string := 'Hello,' + #13#10 + 'world!';

#13#10 ondalık sayıdaki CR / LF karakterleridir


8

Veya ^ M + ^ J kısayolunu da kullanabilirsiniz. Hepsi bir tercih meselesi. "CTRL-CHAR" kodları derleyici tarafından çevrilir.

MyString := 'Hello,' + ^M + ^J + 'world!';

^ M ve ^ J arasındaki + işaretini alabilirsin, ama sonra derleyici tarafından bir uyarı alırsın (ama yine de iyi derleyecektir).


7

Yanda, yararlı olabilecek bir numara:
Birden çok dizenizi bir TS dizesinde tutuyorsanız, aşağıdaki örnekte olduğu gibi TStrings'in Text özelliğini kullanmanız yeterlidir.

Label1.Caption := Memo1.Lines.Text;

Ve çok satırlı etiketinizi alacaksınız ...


3
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;



0

Elimde Delphi'nin bir kopyası yok, ancak wordwrap özelliğini true olarak ve autosize özelliğini false olarak ayarlarsanız, koyduğunuz herhangi bir metni etiketi yaptığınız boyuta kaydırması gerektiğinden oldukça eminim. Belirli bir yerde satır sonu yapmak istiyorsanız, yukarıdaki ayarları yapıp bir metin düzenleyiciden yapıştırırsanız işe yarayabilir .

Bu yardımcı olur umarım.


-2

Bazen, özellikle statik bir etiket için kod alanımı karıştırmak istemiyorum. Sadece formla tanımlanması için, forma etiket metnini girin, ardından aynı formda herhangi bir yere sağ tıklayın. "Metin Olarak Görüntüle" yi seçin. Artık tüm nesneleri tasarlandığı gibi, ancak yalnızca metin olarak göreceksiniz. Aşağı kaydırın veya metninizi arayın. Bulduğunuzda, aşağıdaki gibi görünmesi için başlığı düzenleyin:

Başlık = 'Satır 1' # 13 'Satır 2' # 13 'Satır 3'

# 13, sıra 13 veya satırbaşı dönüşü için ascii anlamına gelir. Chr (13) aynı fikirdir, CHR () sayıyı sıra tipine değiştirir.

Delphi'nin bu özel yüzünde noktalı virgül bulunmadığını ve ": =" yerine "=" kullanıldığını unutmayın. Her satırın metni tek tırnak içine alınmıştır.

İşiniz bittiğinde, bir kez daha sağ tıklayın ve "Form Olarak Görüntüle" yi seçin. Artık kalın, sağa yaslama, vb. Gibi herhangi bir biçimlendirme yapabilirsiniz. Formdaki metni yeniden düzenleyemezsiniz, aksi takdirde satır sonlarınızı kaybedersiniz.

Ayrıca, yalnızca kaydırmak ve değişiklik yapmak, vb. İstediğim birden çok değişiklik için "Metin Olarak Görüntüle" seçeneğini de kullanıyorum. Hızlı.

Dave


Kabul edilen cevap, soruda olduğu gibi doğrudan konuya yöneliktir. Bu cevap, aksine, sorulandan fazlasını ekler; daha da kötüsü: çok net olmayan bir şekilde.
ranieribt

-2
 private
   { Private declarations }
   {declare a variable like this}
   NewLine : string; // 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;

Lütfen kodunuzu biçimlendirin ve bunun sorunu nasıl çözdüğüne dair bir açıklama ekleyin.
Blastfurnace
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.