كيف يمكنني إدراج حرف السطر الجديد في سلسلة في دلفي?

StackOverflow https://stackoverflow.com/questions/254407

  •  05-07-2019
  •  | 
  •  

سؤال

أريد إنشاء سلسلة تمتد عبر عدة خطوط تعيين تسمية توضيحية الملكية.كيف يتم ذلك في دلفي?

هل كانت مفيدة؟

المحلول

في لSystem.pas (الذي يعتاد تلقائيا) ويعرف ما يلي:

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

وهذا من دلفي 2009 (لاحظ استخدام AnsiChar وANSIString و). (الخط التفاف أضاف لي من قبل.)

وحتى إذا كنت تريد أن تجعل TLabel التفاف الخاص بك، تأكد من تعيين AutoSize إلى true، ومن ثم استخدام التعليمات البرمجية التالية:

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

ويعمل في جميع إصدارات دلفي منذ بدء sLineBreak، الذي أعتقد أنه كان دلفي 6.

نصائح أخرى

إليك هذا النهج حتى أقصر:

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

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

و#13#10 هو CR / LF الأحرف في العشرية

وأو يمكنك استخدام ^ M + J ^ الاختصار أيضا. كل مسألة تفضيل. يتم تحويل رموز "CTRL-CHAR" من قبل المجمع.

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

ويمكنك أن تأخذ + بعيدا بين ^ M ^ وJ، ولكن بعد ذلك سوف تحصل على تحذير من قبل المجمع (ولكن لا تزال تجمع على ما يرام).

في الجانب، وهي الحيلة التي يمكن أن تكون مفيدة:
إذا كنت تحمل سلاسل متعددة الخاص بك في TStrings، لديك فقط لاستخدام الخاصية نص TStrings كما في المثال التالي.

Label1.Caption := Memo1.Lines.Text;

وسوف احصل على تسمية متعدد الخطوط ...

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 سيكون "sLineBreak ': http://www.freepascal.org/docs-html/rtl/system /slinebreak.html

والكتابة ( 'مرحبا' + sLineBreak + 'العالم!')؛

ShowMessage('Hello'+Chr(10)+'World');

أنا لا أميل لها نسخة دلفي إلى يد ، لكن أنا متأكد إذا قمت بتعيين wordwrap الخاصية إلى true الخاصية autosize إلى false يجب أن التفاف أي النص الذي وضعه في الحجم الذي جعل التسمية.إذا كنت ترغب في كسر خط في مكان معين ثم قد تعمل إذا قمت بتعيين الإعدادات أعلاه و لصق من محرر النص.

ويساعد هذا الأمل.

وأحيانا كنت لا تريد فوضى مساحة قانون بلدي، وخاصة بالنسبة للتسمية ثابتة. لديك فقط لأنه يعرف مع النموذج، أدخل نص التسمية في النموذج، ثم انقر بزر الماوس الأيمن في أي مكان على نفس النموذج. اختيار "عرض كنص". سترى الآن كافة الكائنات كما تم تصميمها، ولكن كنص فقط. انتقل لأسفل أو البحث عن النص. عند العثور عليه، تعديل التسمية التوضيحية، بحيث يبدو شيء من هذا القبيل:

وتسمية توضيحية = "الخط 1 '# 13'Line 2' # 13'Line 3 '

و# 13 يعني ترتيبي 13، أو أسكي للإرجاع. مركز حقوق الانسان (13) هو نفس الفكرة، CHR () تغيير الرقم إلى نوع ترتيبي.

ملاحظة أنه لا توجد منقوطة في هذا الجانب معين من دلفي، و "=" وتستخدم بدلا من ": =". ومرفق طيه النص لكل خط في علامات الاقتباس المفردة.

وبمجرد الانتهاء، انقر بزر الماوس الأيمن مرة أخرى واختيار "عرض بشكل نموذج". يمكنك الآن القيام بأي التنسيق مثل الغامق، تبرير حق، وما إلى ذلك فقط لا يمكن إعادة تحرير النص على النموذج أو ستفقد فواصل الخط الخاص بك.

وأود أيضا أن استخدام "إرسال كنص" لعدة تغييرات حيث أريد فقط للتمرير من خلال والقيام البدلاء، الخ السريعة.

وديف

 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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top