Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Ereignisbehandlung "abschalten" während Grid.OnDrawCell (https://www.delphipraxis.net/91237-ereignisbehandlung-abschalten-waehrend-grid-ondrawcell.html)

messie 2. Mai 2007 09:07


Ereignisbehandlung "abschalten" während Grid.OnDra
 
Moin,

ich wollte eine Formatierungsprozedur für ein TntStringGrid auslagern, weil ich mehrere Grids mit denselben Daten füttere. Wenn ich im OnDrawCell eine externe Routine aufrufe die das übernimmt, wird auch jedesmal das OnDraw-Ereignis ausgelöst und damit eine Endlosschleife.

Wie kann ich während der Ausführung der ausgelagerten Routine die Ereignisbehandlung Neuzeichnen abschalten? Das Problem ist, daß es ja einmal funktionieren soll.

Grüße, Messie

Bernhard Geyer 2. Mai 2007 09:10

Re: Ereignisbehandlung "abschalten" während Grid.O
 
Das liegt vermutlich daran das die externe Funktion per Application.ProcessMessages genau eine Messagebehandlung will.

Dezipaitor 2. Mai 2007 09:23

Re: Ereignisbehandlung "abschalten" während Grid.O
 
entweder du verwendest CriticalSections
oder du verwendest eine klassenglobale boolean Variable, die angibt, ob der Abschnitt derzeit ausgeführt wird.

kalmi01 2. Mai 2007 09:25

Re: Ereignisbehandlung "abschalten" während Grid.O
 
Moin moin,

ob's in OnDrawCell auch funktioniert, weiss ich nicht, aber an anderer Stelle mache ich Ähnliches so:
Delphi-Quellcode:
function machwas;
  begin
    OnEreignis := nil;
    meinKram;
    OnEreignis := machwas;
  end;

messie 2. Mai 2007 09:25

Re: Ereignisbehandlung "abschalten" während Grid.O
 
Zitat:

Zitat von Bernhard Geyer
Das liegt vermutlich daran das die externe Funktion per Application.ProcessMessages genau eine Messagebehandlung will.

Nein, aber ich habe die Routine einem anderen Object zugeordnet um den Sender übergeben zu können und das wird es wohl auslösen. Ich zeichne ja innerhalb des OnDraw das Grid auch neu.

Grüße, Messie


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 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 by Thomas Breitkreuz