Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TListview alle Einträge in einem TMemo einlesen? (https://www.delphipraxis.net/96232-tlistview-alle-eintraege-einem-tmemo-einlesen.html)

smart 20. Jul 2007 13:51


TListview alle Einträge in einem TMemo einlesen?
 
Hallo Alle.

Wie kann ich aus einem TListview alle Einträge in einem TMemo einlesen?

Gruß
Heike

Bernhard Geyer 20. Jul 2007 13:54

Re: TListview alle Einträge in einem TMemo einlesen?
 
Mit einer For-Schleife

Delphi-Quellcode:
 for i := 0 to ListView.Items.Count do
 begin
   str := ListView.Items[i];
   for j := 0 to ListView.Items[j].SubItems.Count - 1 do
     str := str + ' ' + ListView.Items[j].SubItems[j]
Den rest solltest du mit 1011 Beiträgen schon hinbekommen.

DeddyH 20. Jul 2007 13:56

Re: TListview alle Einträge in einem TMemo einlesen?
 
Zitat:

Zitat von Bernhard Geyer
Den rest solltest du mit 1011 Beiträgen schon hinbekommen.

Eine gewagte Aussage, ich werfe mal den Nick Taktaky in den Raum :zwinker:

Bernhard Geyer 20. Jul 2007 15:44

Re: TListview alle Einträge in einem TMemo einlesen?
 
Zitat:

Zitat von DeddyH
Zitat:

Zitat von Bernhard Geyer
Den rest solltest du mit 1011 Beiträgen schon hinbekommen.

Eine gewagte Aussage, ich werfe mal den Nick Taktaky in den Raum :zwinker:

Groschen gefallen. Man surft ja nicht alleine fremd :-)

smart 20. Jul 2007 16:38

Re: TListview alle Einträge in einem TMemo einlesen?
 
Zitat:

Zitat von Bernhard Geyer
Mit einer For-Schleife

Delphi-Quellcode:
 for i := 0 to ListView.Items.Count do
 begin
   str := ListView.Items[i];
   for j := 0 to ListView.Items[j].SubItems.Count - 1 do
     str := str + ' ' + ListView.Items[j].SubItems[j]
Den rest solltest du mit 1011 Beiträgen schon hinbekommen.

Hallo Bernhard!

Vielen Dank, klappt aber leider nicht. So ähnlich hatte ich es auch schon versucht, das Memo bleib auch leer.
Delphi-Quellcode:
Var
t, j :Integer;
begin
  if SaveDialog1.Execute then
  begin
    for t := 0 to ListView1.Items.Count - 1 do
      Memo1.Lines.Add(ListView1.Items[t].Caption);
    for j := 0 to ListView1.Items[j].SubItems.Count - 1 do
     Memo1.Lines.Add(ListView1.Items[j].SubItems[j]);
  end;
Deswegen auch die "dumme" Frage von mir.

Gruß
Heike

_frank_ 20. Jul 2007 16:50

Re: TListview alle Einträge in einem TMemo einlesen?
 
Zitat:

Zitat von smart
Vielen Dank, klappt aber leider nicht. So ähnlich hatte ich es auch schon versucht, das Memo bleib auch leer.
Delphi-Quellcode:
    for j := 0 to ListView1.Items[j].SubItems.Count - 1 do
     Memo1.Lines.Add(ListView1.Items[j].SubItems[j]);

ziemlich gefährlich...du erhöhst j bis zu subitems.count von item j, d.h. du fügst subitem1 von item 1 hinzu, subitem2 von item 2 usw....
was passiert, wenn mehr subitems als items vorhanden sind? ;)

ich denke mal, du willst es in etwa so machen:

Delphi-Quellcode:
for k:=0 to Listview1.items.count-1 do
begin
  Memo1.lines.add(listview1.Items[k].caption);
  for j:=0 to listview1.Items[k].subitems.count-1 do
  begin
    Memo1.Lines.add(' '+listview1.Items[k].subitems[j]);
  end;
end;
Gruß Frank

marabu 20. Jul 2007 18:00

Re: TListview alle Einträge in einem TMemo einlesen?
 
Hallo Heike,

Zitat:

Zitat von smart
Wie kann ich aus einem TListview alle Einträge in einem TMemo einlesen?

da gibt es zwei grundsätzliche Wege:

(1) Jedes Item wird auf genau eine Line abgebildet (delimited text format, CSV) oder
(2) jedes Subitem wird auf genau eine Zeile abgebildet und zu jedem Item gibt es eine Trennzeile (name-value format, INI, LDIF).

Für CSV hatte ich bereits früher eine Demo bereit gestellt. Hier eine Routine zur Erzeugung von name-value pairs:

Delphi-Quellcode:
procedure SaveItems(items: TListItems; lines: TStrings;
    const nameValueSeparator: string = '');
var
  i, iSub: Integer;
  item: TListItem;
  s: string;
begin
  lines.BeginUpdate;
  lines.Clear;
  for i := 0 to Pred(items.Count) do
  begin
    item := Items[i];
    for iSub := 0 to item.SubItems.Count do
    begin
      if nameValueSeparator = ''
        then s := ''
        else s := item.ListView.Column[iSub].Caption + nameValueSeparator;
      if iSub = 0
        then s := s + item.Caption
        else s := s + item.SubItems[Pred(iSub)];
      lines.Add(s);
    end;
    lines.Add('');
  end;
  lines.EndUpdate;
end;
Freundliche Grüße

smart 21. Jul 2007 08:52

Re: TListview alle Einträge in einem TMemo einlesen?
 
Zitat:

Zitat von marabu
Hallo Heike,

Zitat:

Zitat von smart
Wie kann ich aus einem TListview alle Einträge in einem TMemo einlesen?

da gibt es zwei grundsätzliche Wege:

(1) Jedes Item wird auf genau eine Line abgebildet (delimited text format, CSV) oder
(2) jedes Subitem wird auf genau eine Zeile abgebildet und zu jedem Item gibt es eine Trennzeile (name-value format, INI, LDIF).

Für CSV hatte ich bereits früher eine Demo bereit gestellt. Hier eine Routine zur Erzeugung von name-value pairs:

Delphi-Quellcode:
procedure SaveItems(items: TListItems; lines: TStrings;
    const nameValueSeparator: string = '');
var
  i, iSub: Integer;
  item: TListItem;
  s: string;
begin
  lines.BeginUpdate;
  lines.Clear;
  for i := 0 to Pred(items.Count) do
  begin
    item := Items[i];
    for iSub := 0 to item.SubItems.Count do
    begin
      if nameValueSeparator = ''
        then s := ''
        else s := item.ListView.Column[iSub].Caption + nameValueSeparator;
      if iSub = 0
        then s := s + item.Caption
        else s := s + item.SubItems[Pred(iSub)];
      lines.Add(s);
    end;
    lines.Add('');
  end;
  lines.EndUpdate;
end;
Freundliche Grüße

Hi marabu!

Vielen Dank. Wie rufst Due es auf? Ich habe es versucht, aber das Memo wird immer noch nicht gefüllt.

Gruß
Heike

marabu 21. Jul 2007 09:51

Re: TListview alle Einträge in einem TMemo einlesen?
 
Moin Heike,

aufrufen kannst du es so:

Delphi-Quellcode:
SaveItems(ListView.Items, Memo.Lines);
// Test:
ShowMessage(Memo.Text);
Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 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