Hallo Zusammen,
vielen Dank für die Unterstützung. Ich habe es jetzt soweit geschafft, dass ich das Projekt wieder kompilieren kann...
Aber leider scheinen die Procedure in seltsamer Reihenfolge ausgeführt zu werden.
Ich habe jetzt Folgendes gemacht:
Delphi-Quellcode:
type
TConnectCallback = reference to procedure;
TDataRecievedCallback = reference to procedure;
TGridDataRecievedCallback = reference to procedure(WGrid: TWebStringGrid; FNCGrid: TTMSFNCGrid);
Als erstes noch einen passende Typen hinzugefügt.
Delphi-Quellcode:
procedure TLogic.Get_Beobachtete_FA(Sender: TObject);
var
URL:
string;
WGrid: TWebStringGrid;
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;
ShowMessage('
1)'+
URL);
WGrid:= TWebStringGrid.Create(
nil);
Try
Data_Module.Get_Grid_Data(
URL, WGrid, (Sender
as TTMSFNCGrid), WebGrid_FNCGrid(WGrid, (Sender
as TTMSFNCGrid)));
Finally
//WGrid.Free;
End;
end;
Das ist der Aufruf (Data_Module.Get_Grid_Data) und diesem wird die Callback-Procedure WebGrid_FNCGrid(WGrid, (Sender as TTMSFNCGrid)) mitgegeben.
Delphi-Quellcode:
procedure TData_Module.Get_Grid_Data (
URL:
string; WGrid: TWebStringGrid; FNCGrid: TTMSFNCGrid; AOnGridDataRecieved: TGridDataRecievedCallback);
begin
ShowMessage('
2) Get_Grid_Data');
Try
WGrid.LoadFromJSON(
URL);
if Assigned(AOnGridDataRecieved)
then begin
AOnGridDataRecieved(WGrid, FNCGrid);
end;
Finally
//WGrid.Free;
End;
end;
Hier ist der Code von Get_Grid_Data.
Delphi-Quellcode:
procedure TLogic.WebGrid_FNCGrid(WGrid: TWebStringGrid;
FNCGrid: TTMSFNCGrid);
var
I, J: integer;
begin
Showmessage('3)'+IntToStr(FNCGrid.ColumnCount)+' / '+IntToStr(WGrid.ColCount));
FNCGrid.ColumnCount:=WGrid.ColCount;
FNCGrid.RowCount:=Wgrid.RowCount;
for I := 0 to WGrid.RowCount -1 do begin
for J := 0 to WGrid.ColCount -1 do begin
Showmessage(IntToStr(J)+' / '+IntToStr(I)+' / '+WGrid.Cells[J,I]);
FNCGrid.Cells[J,I]:=WGrid.Cells[J,I];
end;
end;
//Design.GridDesign(FNCGrid);
end;
Und schließlich der Code der CallBack Procedure...
Mir fiel auf, dass obwohl die Callback-Funktion aufgerufen wird, keine Daten in dem TWebStringGrid waren...
Ich habe ein paar ShowMeassges gesetzt. Ich hatte erwartet, dass erst
ShowMessage('1)'+URL);
aus Get_Beobachten, dann
ShowMessage('2) Get_Grid_Data');
aus Get_Grid_Data und zum Schluss
Showmessage('3)'+IntToStr(FNCGrid.ColumnCount)+' / '+IntToStr(WGrid.ColCount));
aus der CallBack Procedure WebGrid_FNCGrid angezeigt würde.
Aber zusehen bekomme ich nur 1 und 3, die 2 wird nicht angezeigt...
Kann mir jemand helfen, dass zu verstehen?
Vielen Dank
Patrick