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:
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.
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).
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;
Plattform agnostik yolu 'sLineBreak' olacaktır: http://www.freepascal.org/docs-html/rtl/system/slinebreak.html
Yaz ('Merhaba' + sLineBreak + 'Dünya!');
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.
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
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;