![]() |
AW: Daten ins stringgrid einlesen
- Ursprünglichen RowCount merken (das ist der Zeilenindex für die erste Nachricht aus Deiner Liste)
- RowCount entsprechend Anzahl Nachrichten erhöhen - Nachrichten ab gemerktem Zeilenindex eintragen So in etwa sollte es funktionieren. Ich hätte allerdings auch nicht unbedingt ein StringGrid genommen, bei anderen Komponenten fügt man einfach Items an und ist fertig damit. |
AW: Daten ins stringgrid einlesen
Danke ich habe es jetzt
Delphi-Quellcode:
i:=Form3.ElTreeStringGrid1.RowCount;
for Index := Nachrichtenliste downto 1 do begin idmessage1.clear; idPOP31.RetrieveHeader(Index, IdMessage1); Form3.eltreestringgrid1.cells[0,i+index-1] := IdMessage1.From.Address; IdPOP31.Retrieve(index,idMessage1); Form3.eltreestringgrid1.cells[1,i+index-1] := IdMessage1.Subject; IdPOP31.Retrieve(index,idMessage1); Form3.eltreestringgrid1.cells[2,i+index-1]:= IdMessage1.body.GetText; IdPOP31.RetrieveHeader(index,idmessage1); Form3.eltreestringgrid1.Cells[3,i+index-1] := Datetostr(Idmessage1.Date); IdPOP31.RetrieveHeader(index,idmessage1); Form3.eltreestringgrid1.Cells[4,i+index-1] := IdMessage1.From.Name; {IdPOP31.Delete(index);} end; |
AW: Daten ins stringgrid einlesen
Hier mal ein Entwurf, wie das mit der
![]() ![]()
Delphi-Quellcode:
unit MailInfo;
interface uses Contnrs, // <- TObjectList Grids; // <- TStringGrid type TMailInfo = class private FAddress : string; FSubject : string; FBody : string; FDate : TDateTime; FName : string; public property Address : string read FAddress write FAddress; property Subject : string read FSubject write FSubject; property Body : string read FBody write FBody; property Date : TDateTime read FDate write FDate; property Name : string read FName write FName; end; procedure ShowListInStringGrid( AMailInfoList : TObjectList; AStringGrid : TStringGrid ); implementation procedure ShowListInStringGrid( AMailInfoList : TObjectList; AStringGrid : TStringGrid ); var LItem : TMailInfo; LIdx : Integer; LRow : Integer; LCol : Integer; LValue : string; begin // StringGrid anpassen with AStringGrid do begin FixedRows := 0; // keine festen Zeilen FixedCols := 0; // keine festen Spalten // Die Anzahl der Zeilen wird bestimmt durch die Summe der // - festen Zeilen // - Anzahl der Datenzeilen RowCount := FixedRows + AMailInfoList.Count; // Wir wollen 5 Spalten haben ColCount := FixedCols + 5; end; // Jetzt die Daten in das Grid schreiben for LIdx := 0 to Pred( AMailInfoList.Count ) do begin // Das MailItem aus der Liste casten und merken LItem := AMailInfoList[LIdx] as TMailInfo; // In welche Zeile werden wir schreiben? LRow := AStringGrid.FixedRows + LIdx; // Jetzt durch alle Spalten laufen for LCol := 0 to Pred( AStringGrid.ColCount ) do begin case LCol of 0 : LValue := LItem.Address; 1 : LValue := LItem.Subject; 2 : LValue := LItem.Body; 3 : LValue := DateToStr( LItem.Date ); 4 : LValue := LItem.Name; else LValue := ''; end; // Mit dieser Abfrage verhindern wir ein unnötiges Neuzeichnen des Grids if AStringGrid.Cells[LCol,LRow] <> LValue then AStringGrid.Cells[LCol,LRow] := LValue; end; end; end; |
AW: Daten ins stringgrid einlesen
Zitat:
BTW: du könntest deinen Code erheblich kürzen und damit erheblich performanter gestalten:
Delphi-Quellcode:
i:=Form3.ElTreeStringGrid1.RowCount;
for Index := Nachrichtenliste downto 1 do begin idmessage1.clear; idPOP31.RetrieveHeader(Index, IdMessage1); Form3.eltreestringgrid1.cells[0,i+index-1] := IdMessage1.From.Address; Form3.eltreestringgrid1.cells[1,i+index-1] := IdMessage1.Subject; Form3.eltreestringgrid1.cells[2,i+index-1] := IdMessage1.body.GetText; Form3.eltreestringgrid1.Cells[3,i+index-1] := Datetostr(Idmessage1.Date); Form3.eltreestringgrid1.Cells[4,i+index-1] := IdMessage1.From.Name; {IdPOP31.Delete(index);} end; |
AW: Daten ins stringgrid einlesen
Ja hast recht zum Kürzen komme ich meistens immer erst später bis alles läuft . Doppelt gemoppelt hält besser. Ja auf dem weg zum könner fehlt bei mir noch sehr sehr viel grins. Aber darüber können wir ja mal in 10 Jahren nochmal schreiben grins. Danke euch beiden
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz