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 1 von 2  1 2      
Hansa

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

Stringgrid spät anzeigen bzw. füllen

  Alt 11. Dez 2004, 20:58
Hi,

das Problem ist jetzt nicht gewaltig, aber einer weiß bestimmt was. Ich lasse Daten aus DB in einem Stringgrid anzeigen. Das geht auch, aber es dauert. Hierfür ist nicht die Datenbank vorantwortlich, sondern Delphi bzw. eher Windows. Das ganze liegt an der grafischen Darstellung. Setze ich visible des Stringgrids auf false und erst wenn die Daten da sind auf true, so geht es viel schneller.

Jetzt ist die Sache nur so, daß ich in anderen Fällen das Stringgrid leer anzeige mit FixedRows usw. so daß man schon mal grob sieht was später kommt, selbst wenn nicht alles erforderliche eingegeben wurde. Ich will also das ständige Aktualisieren unterdrücken.
Gruß
Hansa
  Mit Zitat antworten Zitat
omata

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

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

  Alt 12. Dez 2004, 18:25
Moin,

hast du ein eigenes OnDrawCell-Ereignis? Wenn ja, dann häng doch dieses Ereignis solange ab, wie du deine Daten einliest.

OnDrawCell:=nil;

Oder was machst du da genau?

MfG
Thorsten
  Mit Zitat antworten Zitat
Hansa

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

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

  Alt 12. Dez 2004, 19:01
Stimmt, auf Nil setzen. Nur wo ? Bzw. wo setze ich a, bestn meine eigene Prozedur wieder ?
Gruß
Hansa
  Mit Zitat antworten Zitat
omata

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

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

  Alt 12. Dez 2004, 21:35
Moin,

naja am Anfang der Einleseroutine auf NIL setzten und am Ende wieder auf die Prozedur.


MfG
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

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

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

  Alt 13. Dez 2004, 08:11
Hai Hansa,

hast Du es schon einmal mit BeginUpdate / EndUpdate versucht? Das sollte man beim einfügen von großen Datenmengen immer verwenden.

Delphi-Quellcode:
procedure SGBeginUpdate (sg : TStringGrid);
var
  ndx : Integer;
begin
  for ndx := 0 to sg.RowCount-1 do
  begin
    sg.Rows[ndx].BeginUpdate;
  end;
  for ndx := 0 to sg.ColCount -1 do
  begin
    sg.Cols[ndx].BeginUpdate;
  end;
end;

procedure SGEndUpdate (sg : TStringGrid);
var
  ndx : Integer;
begin
  for ndx := 0 to sg.RowCount-1 do
  begin
    sg.Rows[ndx].EndUpdate;
  end;
  for ndx := 0 to sg.ColCount -1 do
  begin
    sg.Cols[ndx].EndUpdate;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   SGBeginUpdate(StringGrid1);
   // Füllen des StringGrids mit Daten
   SGEndUpdate(StringGrid1);
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
 
#6

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

  Alt 13. Dez 2004, 13:57
Hi,

ich bin jetzt dran mit dem Prozedur auf nil setzen usw. Das ganze müßte im BtnClick passieren. Da passen aber die erwarteten Parameter überhaupt nicht zusammen. Hat jemand ein Beispiel dafür ? Und natürlich auch wieder zurück auf die Prozedur setzen. Weiß nicht mehr wie das geht. Bzw. wo steht das im Handbuch / OH ?
Gruß
Hansa
  Mit Zitat antworten Zitat
omata

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

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

  Alt 13. Dez 2004, 19:40
Moin,

was spricht gegen BeginUpdate und EndUpdate? (toller Einwand - danke)

Nun das Abhängen geht folgendermaßen:

Delphi-Quellcode:
StringGrid.OnDrawCell:=nil;
...
StringGrid.OnDrawCell:=StringGridDrawCell;
MfG
Thorsten
  Mit Zitat antworten Zitat
Hansa

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

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

  Alt 13. Dez 2004, 19:45
Zitat von omata:
was spricht gegen BeginUpdate und EndUpdate? (toller Einwand - danke)
Nichts, nur daß es nicht um Update usw. geht.

Hierdrum gehts :

Zitat von Hansa:
Ich lasse Daten aus DB in einem Stringgrid anzeigen. Das geht auch, aber es dauert. Hierfür ist nicht die Datenbank vorantwortlich, sondern Delphi bzw. eher Windows. Das ganze liegt an der grafischen Darstellung. Setze ich visible des Stringgrids auf false und erst wenn die Daten da sind auf true, so geht es viel schneller.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

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

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

  Alt 13. Dez 2004, 22:08
N´abend Hansa,

denke ich ahne worum es geht. Eigentlich gehöre ich schon längst in die Schlafphase...
Also, das aktualisieren bei einem Datensatzwechsel dauert wohl zu lange. Hoffe ich liege da richtig.

Wenn das Dein Problem ist, dann lasse das StringGrid zunächst mit visible auf false.
Du nimmst einen Timer. Der Timer wird bei jedem OnChage-Ereignis der DataSource auf enablde
geschaltet und das StringGrid auf visible = false. Im Timerereignis schaltest Du den Timer
wieder auf Disabled und das StringGrid visible auf true.

Dadurch wird Dein StringGrid bei einem Onchage Ereignis nicht angezeigt, besser Deine Füllroutine noch nicht aufgerufen. Bei selektiertem Datensatz schlägt dann mit kleiner Verzögerung das Timerereignis
zu und führt nun Deine Füllroutine aus und setzt das Grid auf visible.

Gute Nacht // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Hansa

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

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

  Alt 13. Dez 2004, 22:16
Zitat von mschaefer:
...denke ich ahne worum es geht. Eigentlich gehöre ich schon längst in die Schlafphase...
Also, das aktualisieren bei einem Datensatzwechsel dauert wohl zu lange. Hoffe ich liege da richtig.
...
Die Klarstellung steht 2? Beiträge oben drüber. Und ganz am Anfang steht auch noch was. Und mit dem Procedure auf nil setzen, da warte ich nur auf Infos. Bisher kommt eben nichts.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:58 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