![]() |
Dbgrid: Zelle flimmert
Hi all,
ich hab da grad was seltsames in meinem (TJV)DbGrid: Ich setze eine bestimmte Zelle Readonly:
Delphi-Quellcode:
Allerdings habe ich dann das Problem, das die Spalte 'Anzahl Essen' flimmert...schwer zu beschreiben, sieht so aus als ob die Zelle nonstop aktualisiert würde.
procedure Tfrm_essenserfassung.dbgrid_uebersichtDrawColumnCell(
Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if DataCol = 2 then //2nd column is 'Anzahl Essen' begin // Abgerechnete Datensätze sperren... if q_erfassung.FieldByName('abgerechnet').AsString = 'True' then Column.ReadOnly := true else Column.ReadOnly := false; end; end; Wenn ich den obigen Code rausnehme und die Zelle nicht auf readonly setze, sieht es normal aus. Hat jemand ne Idee was das sein könnte ?? Danke schonmal, gruß ben |
Re: Dbgrid: Zelle flimmer
Du setzt die gesamte Spalte auf Readonly und nicht nur die aktuelle Zelle!
|
Re: Dbgrid: Zelle flimmer
Stimmt, danke... Aber liegt daran die Sache mit dem Flimmern?
Und wie kann ich eigentlich eine einzelne Zelle(oder Zeile) read-only setzen ? |
Re: Dbgrid: Zelle flimmer
Kann sein das das setzen von Readonly das erneute Zeichnen auslöst?
einfach debuggen gucken ob sowas wie invalidate, repaint, refresh etc augerufen wird. |
Re: Dbgrid: Zelle flimmert
Keine Ahnung woran das liegt, bin jetzt einen andren weg gegangen.
Da ich ja eigentlich auch nur die aktuelle Zeile sperren will, wenn diese 'abgerechnet' ist, hab ich die Prüfung nun ins OnMouseDown implementiert. Hät mich natürlich trotzdem interessiert, wie sowas zustande kommt... |
Re: Dbgrid: Zelle flimmert
Du darf Column.ReadOnly nur im Event [TDataSet].AfterScroll setzen.
Delphi-Quellcode:
Wenn das DBGrid gezeichnet wird, dann werden ja meist immer mehrere Records abgerufen.
DBGrid1.Columns[2].ReadOnly := Dataset.FieldByName('abgerechnet').AsBoolean;
Ach ja:
Delphi-Quellcode:
if q_erfassung.FieldByName('abgerechnet').AsString = 'True' then // schlecht, könnte bei deutschem Delphi auch "Wahr" sein !
if q_erfassung.FieldByName('abgerechnet').AsBoolean then // Richtig ! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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