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