Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Tabellarisches Dateneditieren mit "Typ-Bewusstsein"

  Alt 1. Jul 2014, 16:38
Ich würde wenn dann ein TDrawGrid als Basisklasse verwenden.

Für jeden Datentyp (String, Boolean, ...) würde ich eine spezielle Klasse erstellen, die folgende Routinen implementiert:
Delphi-Quellcode:
procedure Draw(Grid: TDrawGrid; ItemIndex: integer; ItemRect: TRect; Canvas: TCanvas);
procedure MouseDown(Grid: TDrawGrid; ItemIndex: integer; ItemRect: TRect; ...);
procedure MouseUp(Grid: TDrawGrid; ItemIndex: integer; ItemRect: TRect; ...);
procedure KeyDown(Grid: TDrawGrid; ItemIndex: integer; ItemRect: TRect; ...);

etc.
Das Grid bekommt eine Liste solcher Klassen, eine pro Spalte, und gibt dann, abhängig davon, welche Zelle gerade aktiv ist, entsprechende Events an die zuständige Klasse weiter.

Man könnte sich bei den Methoden oben alternativ auch überlegen, die Parameter Grid, ItemIndex und ItemRect wegzulassen und stattdessen als Felder aufzuführen, und dafür zwei Routinen ActivateCell(...) und LeaveCell(...) o.ä. einzuführen. Bei dem Modell wird ja vermutlich eh davon ausgegangen, dass immer nur eine Zelle gleichzeitig editiert werden kann.

Da müsste man halt mal etwas rumspielen und gucken, was sich als am sinnvollsten herausstellt.
  Mit Zitat antworten Zitat