Einzelnen Beitrag anzeigen

Alphacodex

Registriert seit: 16. Mär 2006
65 Beiträge
 
Delphi 2006 Professional
 
#1

Eigener Editor für TDBAdvGrid

  Alt 26. Aug 2009, 15:40
Datenbank: Firebird • Version: 2.5 • Zugriff über: Interbase
Hallo,

ich weiß nicht , ob es das richtige Forum ist - die Frage selbst hat nicht unmittelbar direkt was mit Datenbank zu tun, die Komponente auf die es sich bezieht ist aber ne Datenbank-Aware Komponente - ich vermute also dass hier am ehesten jemand Erfahrung damit hat...

Also es geht um folgendes:
Ich möchte, wenn der User in eine bestimmte Zelle mit den Datenbank-Daten klickt, dass er keinen Inplace-Editor bekommt sondern ein Form (pickfall) gezeigt wird (die Auswahl und Auswertung des Rückgabewerts ist nicht ganz trivial, deswegen ein eigenes Form). Es gibt bei der Komponente ein OnClickCell Ereignis, das immer dann ausgelöst wird, wenn der User in eine Zelle zum Bearbeiten klickt. Hier rufe ich per ShowModal mein Formular auf, dieses fragt ein paar Dinge vom User ab und schreibt schließlich den Rückgabewert in die Variable pickfall.fallid .

So bis hierher geht auch alles, aber ich schaffe es nicht, dass der Wert in der Variable pickfall.fallid in das Datenbank-Feld übernommen wird...

Hier erstmal der kritische Code:
Delphi-Quellcode:
procedure Tedstunden.grid_stundenClickCell(Sender: TObject; ARow, ACol: Integer);
var fallid : integer;
    pt : TPoint;
begin
  if (grid_stunden.Columns[ACol].FieldName = 'FALL_ID') AND (grid_stunden.PageMode) then begin
    if pickfall.fallid = -1 then begin
      getcursorpos(pt);
      pickfall.Top := pt.Y; pickfall.Left := pt.x;
      if pickfall.ShowModal = mrOK then begin
        fallid := pickfall.fallid;
         { TODO 1 -cBug : Er fügt den Wert nicht in der Zelle ein }
        grid_stunden.Options := grid_stunden.Options + [goEditing];
        grid_stunden.Cells[ACol, ARow] := inttostr(fallid);
        pickfall.fallid := -1;
      end;
    end;
  end;
end;
Normalerweise müsste grid_stunden.Cells[ACol, ARow] := inttostr(fallid); den ermittelten Wert in die Zelle eintragen... macht er aber nicht... Hat jemand ne Idee?? Hängt es evtl. irgendwie damit zusammen, dass der Grid DataAware ist und man nicht so einfach Werte in die Zellen schreiben darf?


Grüße
Codex
  Mit Zitat antworten Zitat