Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by sx2008,
15. Dez 2008
Exaktamente. :zwinker: Und weil der Fehler so schwer zu erkennen ist, war mein Rat, den Owner ganz wegzulassen und vom Steuerelement abzugreifen.
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by sx2008,
15. Dez 2008
Hmmm... es hat bei dir noch nicht "klick" gemacht.
Ich wiederhole deinen Code vom 1. Beitrag:
procedure TForm1.FormCreate(Sender: TObject);
begin
AutoComplete1 := TAutoComplete.Create(self,'worte.txt',Memo1); // RICHTIG
AutoComplete2 := TAutoComplete.Create(Form1,'plz.txt',LabeledEdit1); // FALSCH
AutoComplete3 := TAutoComplete.Create(Form1,'words4.txt',RichEdit1); //...
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by sx2008,
15. Dez 2008
Du hast ein Klasse TForm1 und eine globale Variable Form1.
Solange es nur ein Formular dieser Klasse gibt ist alles in Ordnung.
Wenn es aber mehrere Formulare der gleichen Klasse gibt, dann können ja nicht alle in der Variable Form1 gespeichert sein.
Das würde dann bedeuten, dass die Autocomplete Komponente auf das falsche Formular zugreift.
Es könnte sogar sein, dass die Variable Form1 = nil...
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by sx2008,
13. Dez 2008
Was mir nicht so gut gefällt, ist dass der Owner im Konstruktor mitgegeben werden muss.
Gerade dein Beispiel:
AutoComplete2 := TAutoComplete.Create(Form1,'plz.txt',LabeledEdit1);
zeigt, dass man damit schwerzufindende Fehler begehen kann.
Folgendes Beispiel zeigt, dass man Formulare auch mit lokalen Variablen erstellen kann.
procedure Test;
var
x : TForm1;
begin
x :=...