Hallo,
Ich möchte in einem DBGrid die aktuelle Zeile hellblau und die ausgewählte Zelle dunkelblau zeichnen. Das ganze möchte ich gerne so programmieren dass ich diese eine Funktion für viele Tabellen aufrufen kann ohne dass ich mir rigend welche eigenen Zwischenvariablen merken muss.
Ich habe schon meine Tabellen bunt gemalt, aber wie ich dies hin bekomme dazu fehlt mir jetzt der Ansatz bzw. wie ich den Parameter "DataCol" verwende und damit die aktiv ausgewählte Zeile erkenne. (grdDrawColumnCell() ).
Kann mir jeamand bitte einen Tipp geben?
Edit: Ich meine, dass die Zeile ähnlich wie bei "dgRowSelect" gezeichnet wird, aber dennoch einzelne Zellen editierbar sind. Daher darf ich dgRowSelect nicht setzen.
Gruß Markus
DBGrid selektierte Zeile farblich hervorheben [gelöst]
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
DBGrid selektierte Zeile farblich hervorheben [gelöst]
Zuletzt geändert von MmVisual am Sa 22. Jan 2011, 08:03, insgesamt 1-mal geändert.
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: DBGrid selektierte Zeile farblich hervorheben
Ich habe es testweise in ein Grid mal "hart" einprogrammiert:
Dann ein wenig in der Tabelle geklickt, sieht nicht so doll aus:
(die alte Zeile wird nicht komplett neu gezeichnet, sondern nur das eine Feld, das selektiert war)
Code: Alles auswählen
If qBauteilID.AsString = DBTextID_Feld.Caption Then
TDBGrid(Sender).Canvas.Brush.Color := clLime;
(die alte Zeile wird nicht komplett neu gezeichnet, sondern nur das eine Feld, das selektiert war)
- Dateianhänge
-
- Bild1.png (7.51 KiB) 1268 mal betrachtet
Zuletzt geändert von MmVisual am Sa 22. Jan 2011, 08:04, insgesamt 1-mal geändert.
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: DBGrid selektierte Zeile farblich hervorheben
Ich hab es raus gefunden. Es geht nicht. Zumindest nicht ohne Umprogrammieren von TCustomGrid.
Das ist neu:
TCustomGrid neue Option in TGridOption "goRowHighlight"
TGridDrawState neue Eigenschaft "gdRowHighlight"
TCustomDBGrid neue Option in TDBGridOption "dgRowHighlight"
Die beiden geänderten Dateien einkopieren nach "C:\lazarus\lcl\"
Lazarus neu kompillieren
Dann den TDBGrid auf das Formular setzen und man hat unter "Options" die neue Eigenschaft dgRowHighlight.
Sobald die gesetzt ist, dann:
- Farblicher Unterschied der selektierten Zeile
- Nach wie vor die ausgewählte Zelle gleich sichtbar und editierbar
- OnDrawColumnCell beinnhaltet "State: TGridDrawState" mit dgRowHighlight wenn die markierte Datenzeile gezeichnet wird
- Die Farbe wird nach diesem Muster geändert: Color := ColorToRGB(Color) XOr $1F1F1F
- Siehe Bild.
- Kompatibel zur alten LCL, da nur eine Option dazukam die als Default deaktiviert ist.
Kann das bitte jemand mal testen?
Ich habe Lazarus 0.9.31/FPC2.4.1 Build 29158
Gruß Markus.
Das ist neu:
TCustomGrid neue Option in TGridOption "goRowHighlight"
TGridDrawState neue Eigenschaft "gdRowHighlight"
TCustomDBGrid neue Option in TDBGridOption "dgRowHighlight"
Die beiden geänderten Dateien einkopieren nach "C:\lazarus\lcl\"
Lazarus neu kompillieren
Dann den TDBGrid auf das Formular setzen und man hat unter "Options" die neue Eigenschaft dgRowHighlight.
Sobald die gesetzt ist, dann:
- Farblicher Unterschied der selektierten Zeile
- Nach wie vor die ausgewählte Zelle gleich sichtbar und editierbar
- OnDrawColumnCell beinnhaltet "State: TGridDrawState" mit dgRowHighlight wenn die markierte Datenzeile gezeichnet wird
- Die Farbe wird nach diesem Muster geändert: Color := ColorToRGB(Color) XOr $1F1F1F
- Siehe Bild.
- Kompatibel zur alten LCL, da nur eine Option dazukam die als Default deaktiviert ist.
Kann das bitte jemand mal testen?
Ich habe Lazarus 0.9.31/FPC2.4.1 Build 29158
Gruß Markus.
- Dateianhänge
-
grid.diff
- (2.51 KiB) 72-mal heruntergeladen
-
- grids.pas
- (320.65 KiB) 70-mal heruntergeladen
-
- dbgrids.pas
- (106.16 KiB) 83-mal heruntergeladen
-
- Bild1.png (2.22 KiB) 1386 mal betrachtet
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: DBGrid selektierte Zeile farblich hervorheben [gelöst]
Hier ist der Bug-Tracker eintrag:
http://bugs.freepascal.org/view.php?id=18581" onclick="window.open(this.href);return false;
http://bugs.freepascal.org/view.php?id=18581" onclick="window.open(this.href);return false;
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: DBGrid selektierte Zeile farblich hervorheben [gelöst]
Diese beiden Dateien/Änderungen habe ich nun auch unter FPC2.5.1/Lazarus0.9.31 Build 29193 unter Linux gestestet und geht.
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: DBGrid selektierte Zeile farblich hervorheben [gelöst]
*** Kurzmitteilung ***
Jetzt ist es in Lazarus drin.
Jetzt ist es in Lazarus drin.

EleLa - Elektronik Lagerverwaltung - www.elela.de