AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stringgrid spät anzeigen bzw. füllen

Ein Thema von Hansa · begonnen am 11. Dez 2004 · letzter Beitrag vom 14. Dez 2004
Antwort Antwort
Seite 2 von 2     12   
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Stringgrid spät anzeigen bzw. füllen

  Alt 13. Dez 2004, 23:42
Moin Hansa,

habe dir doch ein Beispiel geliefert, da bist du leider nicht drauf eingegangen

schade

MfG
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#12

Re: Stringgrid spät anzeigen bzw. füllen

  Alt 14. Dez 2004, 08:29
Moin, moin,

also Hansa Du bist auf dem Holzweg - Eiche

Mit einfach mal was auf Nil setzten ist das nicht getan. Du kannst Dir ein Grid ableiten und das OnPaint Ereignis solange blockieren, wie der Update läuft. Also letzlich die Routine in einer If Abfrage solange nicht ausführen solange Dein Ipdate läuft und am Ende rufst Du Paint nochmal auf. Ohne Komponentenableitung geht es meines Wissens nach nicht den Flaschenhals Windows Bildakutalisierung zu umgehen.

Ansonsten höre auf dne Hai, den Sharky hat den anderen Flaschenhals, die fürchterlich langsamen Stringlisten ins Echolot genommen indem er Dir Begin- und Endupdate Routinen
zugeschwemmt hat.

Möge der Tag Kekse gute Laune und viele Lösungen bringen // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Stringgrid spät anzeigen bzw. füllen

  Alt 14. Dez 2004, 09:06
Zitat von Hansa:
...Nichts, nur daß es nicht um Update usw. geht. ...
Das ist schon klar.
BeginUpdate macht aber nichts anderes als dafür zu sorgen das, in diesem Fall das SG, nicht neugezeichnet wird bis das EndUpdate aufgerufen wird. Genau dies ist nämlich das Nadelöhr beim Füllen von TStringListen, TListViews usw.

Aber Du kannst ja beide genannten Möglichkeiten kombinieren:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  myDrawCell : TDrawCellEvent;
begin
  myDrawCell := StringGrid1.OnDrawCell; // Event "merken"
  StringGrid1.OnDrawCell := nil; // Kein OnDrawCell
  SGBeginUpdate(StringGrid1);

  // Füllen des StringGrids mit Daten

  SGEndUpdate(StringGrid1);
  StringGrid1.OnDrawCell := myDrawCell; // gemerketes Event zuweisen
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14

Re: Stringgrid spät anzeigen bzw. füllen

  Alt 14. Dez 2004, 09:54
Kurze Zwischenfrage : setze ich OnDrawCell auf nil, so tut sich absolut nichts. Ich kann es genau so gut weglassen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#15

Re: Stringgrid spät anzeigen bzw. füllen

  Alt 14. Dez 2004, 09:56
Zitat von Hansa:
Kurze Zwischenfrage : setze ich OnDrawCell auf nil, so tut sich absolut nichts. Ich kann es genau so gut weglassen.
Eigentlich auch richtig
Durch das BeginUpDate wird ja das neu zeichnen unterbunden. Darum sollte das OnDraw beim füllen eh nicht aufgerufen wird.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Stringgrid spät anzeigen bzw. füllen

  Alt 14. Dez 2004, 10:10
Ich habe eben mal etwas gespielt: Ein StringGrid mit 5 Spalten und 10.000 Zeilen.
Ohne BeginUpdate / EndUpdate dauert das füllen jeder Zelle mit einem festen String ca. 140 ms. Mit BeginUpdate nur noch ca. 50ms.
Ob ich das OnDrawCell "deaktiviere" macht keinen Unterschied wenn BeginUpDate verwendet wird.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 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