Hallo Zusammen,
das Thema CallBack ist für mich neu und ich stehe gerade völlig auf dem Schlauch...
Ich möchte etwas ausprobieren. Dazu rufe ich einen Service auf dem Server auf, der mir eine Datenmenge aus der Datenbank zurückliefert. Diese Daten werden in ein TWebStringGrid (TMS) geladen. Dort sollen sie rausgeholt und in ein TTMSFNCGrid (TMS) geschrieben werden. Weil ich ja warten muss, bis die Daten auch wirklich übermittelt wurden, wollte ich das mit einer CallBack Procedure machen.
Das ist mein Versuch (ich bin mir ziemlich sicher, dass ich das Zusammenspiel hier falsch mache...)
Das ist der Aufruf
Delphi-Quellcode:
procedure TLogic.Get_Beobachtete_FA(Sender: TObject);
var
URL:
string;
begin
URL:=Data_Module.xConnection.url;
URL:=
URL+'
Data_xChangeService/Get_BeobachteteFAs';
URL:=
URL+'
?User_ID=';
URL:=
URL+Data_Module.xDST_User.FieldByName('
UserID').AsString;
Data_Module.Get_Grid_Data(
URL, (Sender
as TTMSFNCGrid), WebGrid_FNCGrid());
end;
Hier werden die Daten erst einmal in das TWebStringGrid geladen
Delphi-Quellcode:
type
TConnectCallback = reference
to procedure;
TDataRecievedCallback = reference
to procedure;
...
procedure TData_Module.Get_Grid_Data (
URL:
string; FNCGrid: TTMSFNCGrid; AOnDataRecieved: TDataRecievedCallback);
var
WGrid: TWebStringGrid;
begin
WGrid:= TWebStringGrid.Create(
nil);
Try
WGrid.LoadFromJSON(
URL);
if Assigned(AOnDataRecieved)
then begin
AOnDataRecieved(WGrid, FNCGrid);
end;
Finally
//WGrid.Free;
End;
end;
Wenn die Daten im TWebStringGrid sind, soll die AOnDataReceived aufgerufen werden. Das ist die procedure WebGrid_FNCGrid.
Delphi-Quellcode:
procedure TLogic.WebGrid_FNCGrid(WGrid: TWebStringGrid;
FNCGrid: TTMSFNCGrid);
var
I, J: integer;
begin
FNCGrid.Columns.Count:=WGrid.ColCount;
FNCGrid.RowCount:=Wgrid.RowCount;
for I := 0 to WGrid.RowCount -1 do begin
for J := 0 to WGrid.ColCount -1 do begin
FNCGrid.Cells[J,I]:=WGrid.Cells[J,I];
end;
end;
end;
Aber egal wie rum ich es auch ausprobiere (das ist jetzt gerade nur der aktuelle Stand), ich bekomme es nicht ans Laufen...
Hehlermeldung:
Zitat:
[Fehler] TLogicUnit.pas(38): Wrong number of parameters specified for call to "procedure WebGrid_FNCGrid(TStringGrid;TTMSFNCGrid) of Object"
Kann mir jemand einen Tip geben?
Vielen Dank
Patrick