Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Eigener Editor für TDBAdvGrid (https://www.delphipraxis.net/139317-eigener-editor-fuer-tdbadvgrid.html)

Alphacodex 26. Aug 2009 15:40

Datenbank: Firebird • Version: 2.5 • Zugriff über: Interbase

Eigener Editor für TDBAdvGrid
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:57 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