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