AGB  ·  Datenschutz  ·  Impressum  







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

Dbgrid: Zelle flimmert

Ein Thema von bwolf · begonnen am 22. Mai 2007 · letzter Beitrag vom 22. Mai 2007
Antwort Antwort
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#1

Dbgrid: Zelle flimmert

  Alt 22. Mai 2007, 11:57
Hi all,

ich hab da grad was seltsames in meinem (TJV)DbGrid:

Ich setze eine bestimmte Zelle Readonly:

Delphi-Quellcode:
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 = 'Truethen
      Column.ReadOnly := true
   else
      Column.ReadOnly := false;
  end;
end;
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.
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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Dbgrid: Zelle flimmer

  Alt 22. Mai 2007, 12:00
Du setzt die gesamte Spalte auf Readonly und nicht nur die aktuelle Zelle!
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Dbgrid: Zelle flimmer

  Alt 22. Mai 2007, 12:10
Stimmt, danke... Aber liegt daran die Sache mit dem Flimmern?
Und wie kann ich eigentlich eine einzelne Zelle(oder Zeile) read-only setzen ?
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#4

Re: Dbgrid: Zelle flimmer

  Alt 22. Mai 2007, 12:18
Kann sein das das setzen von Readonly das erneute Zeichnen auslöst?
einfach debuggen gucken ob sowas wie invalidate, repaint, refresh etc augerufen wird.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Dbgrid: Zelle flimmert

  Alt 22. Mai 2007, 13:18
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...
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Dbgrid: Zelle flimmert

  Alt 22. Mai 2007, 18:50
Du darf Column.ReadOnly nur im Event [TDataSet].AfterScroll setzen.
DBGrid1.Columns[2].ReadOnly := Dataset.FieldByName('abgerechnet').AsBoolean; Wenn das DBGrid gezeichnet wird, dann werden ja meist immer mehrere Records abgerufen.

Ach ja:
Delphi-Quellcode:
if q_erfassung.FieldByName('abgerechnet').AsString = 'Truethen // schlecht, könnte bei deutschem Delphi auch "Wahr" sein !
if q_erfassung.FieldByName('abgerechnet').AsBoolean then // Richtig !
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:27 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