Ich habe schon lange nichts mehr mit einem StringGrid gemacht, aber es müsste eigentlich
BeginUpdate und
EndUpdate unterstützen (wie viele andere Win-Controls auch). Damit blockierst du quasi die Bildschirmausgabe, was auch ein bisschen mehr Speed bringt. Die Betonung liegt auf "bisschen", also erwarte bitte keine Wunder.
Empfehlenswert ist es aber in jedem Fall, denn gerade bei sehr langwierigen Prozeduren entfällt das unschöne "Aufbauen" der Liste. Stattdessen macht es am Schluss -schwupp!- und die Liste ist voll. Falls das Grid das nicht direkt unterstützt, probier´s mal direkt mit der API
Delphi-Quelltext
1: 2: 3: 4:
| procedure BeginUpdate(const wnd: HWND; UpdateState: boolean); begin SendMessage(wnd,WM_SETREDRAW,WPARAM(not UpdateState),0); end; |
Anzuwenden wie folgt:
Delphi-Quelltext
1: 2: 3: 4: 5:
| BeginUpdate(StringGrid1.Handle,TRUE);
BeginUpdate(StringGrid1.Handle,FALSE); |
Ob´s was bringt, kann ich dir aber nicht garantieren.
Zu deiner
FindFirst-Sache - Ich habe die Erfahrung gemacht, dass nur der allererste Durchlauf u.U. sehr lange dauert. Ich habe mal mit einer ähnlichen Funktion alle Ordner meiner C-Partition scannen lassen. Das dauerte beim ersten Mal auch recht lange. Aber schon der zweite Durchlauf beanspruchte nur noch einen Bruchteil der Zeit. Warum auch immer.
