Also die müssen meiner Meinung nach neu erzeugt werden da die Situation so aussieht:
Alle Felder und Labels werden dynamisch aus einer
CSV erzeugt.
Diese
CSV wird durch ein anderes Programm wärend der Laufzeit geändert.
d.h. der Inhalt aus der ersten Zelle der
CSV wird in Edit1 geschrieben und die überschrift dazu in Label1.
dies kann aber sich alles wärend der Laufzeit ändern, sodass ich wenn der User auf Aktuallisieren klickt nicht weiß ob die Caption von Label 1 immernoch die Überschrift der Spalte 1 ist und ich weiß auch nicht ob der Inhalt von Edit1 immernoch der gleiche Inhalt ist wie Zelle 1 der
CSV.
Desweiteren weiß ich vorher nicht ob die
CSV nicht vllt nach dem Aktuallisieren Leer ist, oder ob da noch Spalten zugekommen ist.
Da ich soviele Sachen nicht weiß, dachte ich mir das ein destroy und nachher wieder erzeugen besser wäre als tausende von Prüfungen und anschließend die dazugekommenden zu erzeugen.
Bin natürlich offen für alle Ideen, also wenn einer was besseres weiß als .free und dann wieder erzeugen immer her damit.
Dazu kommt noch das .free sehr sehr langsam ist. Also das .free mach ich gerade so:
Delphi-Quellcode:
if pruefung = true then begin
for i:= 1 to AnzahlSpalten-1 do begin
TEdit(Scrollbox1.FindComponent('Edit'+ IntToStr(i))).Free;
TLabel(Scrollbox1.FindComponent('Label'+ IntToStr(i))).Free;
end;
end;
dabei ist pruefung eine variable des typ boolean welche auf true gesetzt wird wenn 1mal felder erzeugt wurden.
AnzahlSpalten ist die Anzahl der Spalten der
CSV wovon ich vorher (bevor die
CSV durch ein anderes Programm verändert worden ist) die Objects erzeugt habe. Mit AnzahlSpalten weiß ich also wieviele Objects ich zu löschen habe.
mit FindComponents suche ich mir die dann raus da ich ja die Objects nicht mit Edit[i] oder Label[i] ansprechen kann oder??
nun klappt alles, aber ich habe bei der .free Methode eine CPU-Auslastung von 100 % also geht alles zu langsam. Gibt es eine bessere Möglichkeit???
So .... nun seit ihr wieder gefragt ^^
Danke schonmal
MFG
Andre