Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi nachträglich Zeilenumbruch in String einfügen (https://www.delphipraxis.net/63414-nachtraeglich-zeilenumbruch-string-einfuegen.html)

goessler 18. Feb 2006 13:31


nachträglich Zeilenumbruch in String einfügen
 
Es soll in den String, der anschließend in der Listbox angezeigt wird,
nach 17 und 34 Zeichen ein Zeilenumbruch stattfinden.

Anzeige:
12345678901234567
Text2



if Melodie.ShowModal = mrOk then
begin
Insert(#13#10, DialogStr, 17);
Insert(#13#10, DialogStr, 34);
MelLB.Items.Add(DialogStr);
MelLB.ItemIndex:=MelLB.Items.Count+1;
end


Es werden aber nur zusätzlich zwei dicke, senkrechte Striche (||) angezeigt.



wer kann helfen, danke.
H.

mkinzler 18. Feb 2006 13:33

Re: nachträglich Zeilenumbruch in String einfügen
 
Füge doch Kommas ein un benutze die Eigenschaft CommaText bzw. DelimitedTest der Stringliste.

goessler 18. Feb 2006 14:03

Re: nachträglich Zeilenumbruch in String einfügen
 
das Problem ist nicht das Einfügen von Zeichen sondern die
korrekte Darstellung in Listbox.
H.

igel457 18. Feb 2006 14:16

Re: nachträglich Zeilenumbruch in String einfügen
 
Dann würde ich dir Raten folgendes zu tun:

Delphi-Quellcode:
var
  liste:TStringlist;
begin
  liste := TStringlist.Create;
  liste.assign(mellb.items);
  .
  . Hier führst du jetzt deine Zeilenumbrüche ein. Allerdings nimmst du anstatt Mllb.items liste.items
  .
  mellb.text := liste.text;
  liste.free;
end;

mkinzler 18. Feb 2006 14:23

Re: nachträglich Zeilenumbruch in String einfügen
 
Zitat:

Zitat von goessler
das Problem ist nicht das Einfügen von Zeichen sondern die
korrekte Darstellung in Listbox.
H.

Wenn du bei einer Stringliste die Eigenschaft .CommaText setzt, wird der zugewiesene String anhand der Kommas getrennt und in verschiedene Zeilen der Stringliste verteilt.

marabu 18. Feb 2006 14:44

Re: nachträglich Zeilenumbruch in String einfügen
 
Hallo H.

Mit der folgenden Funktion kannst du einen String in einen Text mit einer bestimmten Zeilenlänge verwandeln:

Delphi-Quellcode:
procedure LineToText(var line: String; len: Integer; sep: String = sLineBreak);
var
  chunks: integer;
begin
  chunks := Length(line) div len + Ord(Length(line) mod len > 0);
  while chunks > 1 do begin
    Dec(chunks);
    Insert(sep, line, Succ(chunks * len));
  end;
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
var
  DialogStr: String;
begin
  DialogStr := '12345678901234567Text2';
  LineToText(DialogStr, 17);
  ListBox.Items.Text := DialogStr;
end;
Warum du Steuerzeichen einer StringList nicht per Insert() oder Add() hinzufügen kannst, das kannst du hier nachlesen: klick. Bei deiner Vorgehensweise würde nur die erste Zeile 17 Stellen aufweisen, die nächste hätte nur 15 Stellen ...

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz