![]() |
Selektieren im DBCtrlGrid
Ein herrliches Oster - Moin, moin
Trotz dieser entspannten Feirtagsstimmung hat mich ein Running - Problem mal wieder an den Computer gezogen: Wie kann ich in einem DBCtrl-Grid ein Selektieren von Datensätzen erreichen und dies zum Beispiel über unterschiedliche Panelfarben darstellen ? Das ganze soll wie beim DBGrid über die Shift-Taste in Verbindung mit den Cursortasten funktionieren. Mein Hauptproblem ist derzeit das interne markieren der Datensätze. Zunächst zeige ich den bisherigen Ansatz: Die Farbe des Panels kann man im OnPanelPaint - Ereignis festlegen:
Delphi-Quellcode:
procedure MyForm.DBCtrlGrid_tlistePaintPanel(
DBCtrlGrid: TDBCtrlGrid; Index: Integer); var State : integer; begin // Problem State := Markierung // Wo kann ich mir merken welches Panel markiert ist ?? // Problem - Ende if DBCtrlGrid.PanelIndex = Index then State := -State; { } { } Case State of 1 : begin DBCtrlGrid.Canvas.Brush.Color := clwhite; end; - 1 : begin // DBCtrlGrid.Canvas.Pen.Color := clyellow; // DBCtrlGrid.Canvas.Brush.Color := clyellow; end; 2 : begin // DBCtrlGrid.Canvas.Pen.Color := $00E1E1E1; // DBCtrlGrid.Canvas.Brush.Color := $00E1E1E1; end; - 2 : begin // DBCtrlGrid.Canvas.Pen.Color := $00D5FFFF ; // DBCtrlGrid.Canvas.Brush.Color := $00D5FFFF; end; end ; { } { } DBCtrlGrid.Canvas.Rectangle ( DBCtrlGrid.Canvas.PenPos.X, DBCtrlGrid.Canvas.PenPos.Y, DBCtrlGrid.PanelWidth, DBCtrlGrid.PanelHeight ); end; Die Tastaturereignisse kann ich im KeyPress-Ereignis des DBCtrlGrids abfangen
Delphi-Quellcode:
procedure TMyForm.DBCtrlGrid_ListeKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if ssShift in Shift then Case Key Of {Cursor Up / Down } 38,40 : Begin // Problem if Markierung = 1 then Markierung := 0 else Markierung := 1; // Problem - Ende End; end; ; end; Aktuelles Problem, wo schreibe ich das Flag für markiert oder nicht markiert hin. Vermeiden möchte ich regelmässige Datenbankzugriffe, da danach die Datenbankmenge neu aufgebaut wird und somit sich die Position im DBCtrlGrid verschiebt. Ideen - Ostereinfälle und Gedankensprünge sind herzlich willkommen ! Grüße // Martin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:49 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