ich versuch es mal detailliert und möglichst vollständig.
In Form1 ist folgende Funktion:
Delphi-Quellcode:
procedure TForm1.Listenfuellen;
var i: integer;
begin
CBFluggesellschaft.items.clear;
DBs.TVeranstalter.First;
for i:= 1 to DBs.TVeranstalter.RecordCount do
begin
if DBs.TVeranstalter.Fieldbyname('Status').AsString = '1' then
CBFluggesellschaft.items.add(DBs.TVeranstalter.Fieldbyname('Veranstalter').AsString +
' (' + DBs.TVeranstalter.Fieldbyname('Abkuerzung').AsString + ')');
DBs.TVeranstalter.next;
end;
Wenn ich von Form1 aus diese Funktion aufrufe, läuft es ohne Probleme. In Form2 kann man die Veranstalterliste bearbeiten. Wenn man in Form2 speichert (Button), soll automatisch Form1.Listenfuellen ausgeführt werden. Hierfür sage ich in Form2:
Form1.Listenfuellen;
Ich verfolge die Abarbeitung von Form2 aus mit "Einzelne Anweisung", also F7. Alle Befehle werden abgearbeitet, auch "Form1.Listenfuellen." Nochmal F7, der Compiler springt rüber zu Form1. Versucht die Zeile
CBFluggesellschaft.items.clear;
auszuführen und zeigt dann die Fehlermeldung an. Wenn ich diese Zeile auskommentiere, läuft er in Form1 weiter.
Delphi-Quellcode:
begin
if DBs.TVeranstalter.Fieldbyname('Status').AsString = '1' then
wird auch mehrmals ausgeführt. Wenn die Bedingung erfüllt ist, kommt die nächste Zeile
CBFluggesellschaft.items.add(DBs.TVeranstalter.Fieldbyname('Veranstalter').AsString +
und hier ist wieder Schluss..
Und wenn ich statt CBFluggesellschaft.items.clear eine andere Komponente, z.B. Edit1 anspreche, ist es genauso. Es scheint an den Komponenten zu hängen.
Hoffe, das war ausführlich..