Guten Morgen,
ich habe vor, dass in meinem DBGrid sobald sich irgendwas in diesem Tut, eine Prozedure aufgerufen wird.
Diese Procedure greift auf die mit dem DBGrid verknüpfte Datenbank zu und durchläuft diese.
Es soll geguckt werden, ob in dem speziellen Datensatz der Artikel bestellt ist oder nicht. In der Datenbank wird existiert dafür ein Boolisches Feld. Die Prozedur sieht wir folgt aus:
Delphi-Quellcode:
procedure TAuftrag_form.BestellbtnCreate();
var
i:integer;
begin
i:=1;
Ersatzteil_Dataset.First;
while not Ersatzteil_Dataset.Eof do
begin
if Ersatzteil_DatasetBestellt.Value=True then
begin
DBAdvGrid4.RemoveButton(7,DBAdvGrid4.Row);
end;
Ersatzteil_Dataset.Next;
end;
Ersatzteil_Dataset.first;
while not Ersatzteil_Dataset.Eof do
begin
if Ersatzteil_DatasetBestellt.Value=False then
begin
DBAdvGrid4.AddButton(7,DBAdvGrid4.Row,50,15,'Bestellen',TCellHAlign(2),TCellVAlign(2));
end;
Ersatzteil_Dataset.Next;
end;
end;
Da sich die Daten in dem Grid ändern und somit evtl. auch der Bestell Status muss immer erst geschaut werden ob der Button gezeichnet werden muss oder eben nicht.
Wen ich mir die Prozedur auf einen Knopf lege ist alles inordnung.
Möchte ich allerdings diese Prozedur in der Datasource beim OnChange aufrufen stürzt das Programm immer ab und gibt die Meldung "Stack Überlauf".
Ich könnte mir vorstellen, dass die Datasource noch nicht bereit ist oder noch irgendwelche Aufgaben erledigen muss aber wie kann ich Abfragen ob dem so ist?
Bzw. wie kann ich generell dieses Problem lösen?
Gruß Chris