AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Selektieren im DBCtrlGrid
Thema durchsuchen
Ansicht
Themen-Optionen

Selektieren im DBCtrlGrid

Ein Thema von mschaefer · begonnen am 12. Apr 2004
Antwort Antwort
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#1

Selektieren im DBCtrlGrid

  Alt 12. Apr 2004, 09:41
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
Martin Schaefer
  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 12:13 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