2008-10-31 7 views
73

मैं एक स्ट्रिंग बनाना चाहता हूं जो लेबल कैप्शन प्रॉपर्टी को असाइन करने के लिए एकाधिक लाइनों को फैलाता है। डेल्फी में यह कैसे किया जाता है?डेल्फी में एक स्ट्रिंग में मैं एक न्यूलाइन कैरेक्टर कैसे शामिल करूं?

उत्तर

141

System.pas (जो स्वचालित रूप से इस्तेमाल किया जाता है) में निम्नलिखित परिभाषित किया गया है:

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

यह डेल्फी 2009 से है (AnsiChar और AnsiString के उपयोग के नोटिस)। (लाइन रैप मेरे द्वारा जोड़ा।)

इसलिए यदि आप अपने TLabel चादर बनाने के लिए, सुनिश्चित करें कि AutoSize सही पर सेट किया है, और उसके बाद निम्न कोड का उपयोग करना चाहते: डेल्फी के सभी संस्करणों में

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

वर्क्स चूंकि स्लेनब्रैक पेश किया गया था, जो मुझे लगता है कि डेल्फी 6 था।

+10

इसके लिए धन्यवाद! मैंने हमेशा # 13 # 10 का उपयोग किया है। –

+1

वाह, यह मेरी अपेक्षा से काफी बेहतर है! – Brendan

12

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

#13#10 दशमलव

+0

और यह अभी भी 2009 (यूनिकोड) के लिए काम करता है। –

28

में सीआर/वामो अक्षर है यहाँ एक भी कम पहुंच दी गई है:

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

क्रॉसप्लेटफार्म नहीं :) – naXa

7

तरफ, एक चाल है कि उपयोगी हो सकता है:
आप तो टीएसट्रिंग्स में अपने एकाधिक तारों को पकड़ें, आपको बस निम्नलिखित उदाहरणों में टीएसट्रिंग्स की टेक्स्ट प्रॉपर्टी का उपयोग करना होगा।

Label1.Caption := Memo1.Lines.Text; 

और आप अपने बहु लाइन लेबल मिल जाएगा ...

8

या आप भी^एम +^जम्मू शॉर्टकट का उपयोग कर सकते हैं। वरीयता का सब कुछ। "CTRL-CHAR" कोड का संकलन कंपाइलर द्वारा किया जाता है।

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

आप +^एम और^जम्मू के बीच दूर ले जा सकते हैं, लेकिन फिर आप (लेकिन यह अभी भी ठीक संकलन होगा) संकलक द्वारा एक चेतावनी मिल जाएगा।

0

मेरे पास डेल्फी की एक प्रति हाथ नहीं है, लेकिन मैं निश्चित रूप से निश्चित हूं कि यदि आप वर्डवाप संपत्ति को सत्य में सेट करते हैं और ऑटोसाइज प्रॉपर्टी को गलत पर सेट करना है तो उसे किसी भी को लपेटना चाहिए पाठ जिसे आप लेबल बनाते हैं उस आकार पर डालते हैं। यदि आप किसी निश्चित स्थान पर लाइन ब्रेक करना चाहते हैं तो यदि आप उपरोक्त सेटिंग्स सेट करते हैं और टेक्स्ट एडिटर से पेस्ट करते हैं तो यह काम कर सकता है।

उम्मीद है कि इससे मदद मिलती है।

1
ShowMessage('Hello'+Chr(10)+'World'); 
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; 
-2

कभी-कभी मैं अपने कोड स्थान को अव्यवस्थित नहीं करना चाहता, खासकर एक स्थिर लेबल के लिए। इसे फ़ॉर्म के साथ परिभाषित करने के लिए, फॉर्म पर लेबल टेक्स्ट दर्ज करें, फिर उसी फ़ॉर्म पर कहीं भी राइट क्लिक करें। "टेक्स्ट के रूप में देखें" चुनें। अब आप सभी वस्तुओं को डिज़ाइन किए गए देखेंगे, लेकिन केवल टेक्स्ट के रूप में। नीचे स्क्रॉल करें या अपने पाठ की खोज करें।जब आप इसे खोजने के लिए, शीर्षक संपादित करते हैं, तो यह तरह दिखता है:

कैप्शन = 'पंक्ति 1' # 13'Line 2 '# 13'Line 3'

# 13 का मतलब है एक क्रमसूचक 13, या ascii कैरिज रिटर्न के लिए। Chr (13) एक ही विचार है, सीएचआर() संख्या को एक सामान्य प्रकार में बदलता है।

ध्यान दें कि डेल्फी के इस विशेष पहलू में कोई अर्ध-कॉलन नहीं है, और "=" का उपयोग ": =" के बजाय किया जाता है। प्रत्येक पंक्ति के लिए पाठ एकल उद्धरण में संलग्न है।

एक बार जब आप कर लेंगे, एक बार फिर राइट-क्लिक करें और "फॉर्म के रूप में देखें" चुनें। अब आप बोल्ड, सही औचित्य इत्यादि जैसे किसी भी प्रारूपण कर सकते हैं। आप फॉर्म पर टेक्स्ट को दोबारा संपादित नहीं कर सकते हैं या आप अपनी लाइन ब्रेक खो देंगे।

मैं कई बदलावों के लिए "टेक्स्ट के रूप में देखें" का भी उपयोग करता हूं जहां मैं बस स्क्रॉल करना और प्रतिस्थापन आदि करना चाहता हूं।

डेव

+0

स्वीकृत उत्तर बिंदु पर सीधे है, जैसा सवाल है। इसके जवाब में, इसके विपरीत, पूछा गया था से अधिक जोड़ता है; अभी भी बदतर: एक स्पष्ट तरीके से नहीं। – 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; 
+0

कृपया अपना कोड प्रारूपित करें और इस समस्या को हल करने के तरीके के बारे में कुछ विवरण जोड़ें। – Blastfurnace

संबंधित मुद्दे