Hallo,
ich erstelle zur Laufzeit 2 Editkomponenten und eine TList in der die Zeiger auf die Edits verwaltet werden. Das funktioniert auch alles bestens. Probleme treten auf beim freigeben der Edits.
So erzeuge ich die Edits:
Delphi-Quellcode:
procedure TForm1.CreateADVEdits;
var i, links, oben, breit, hoch : integer;
begin
EditListe := TList.create;
Links := 40;
oben := 150;
breit := 40;
hoch := 21;
for i := 1 to 3 do
begin
MyEdit := TEdit.create(self);
MyEdit.Parent := self;
MyEdit.Name := 'MyADVEdit' + inttostr(i);
MyEdit.Setbounds(links+(i-1)* breit, oben, breit, hoch);
EditListe.add(MyEdit);
TEdit(EditListe.Items[i-1]).Text := inttostr(i);
TEdit(EditListe.Items[0]).setfocus;
end;
end;
So geb ich den Speicher wieder frei:
Delphi-Quellcode:
Procedure TForm1.DestroyADVEdits;
begin
while EditListe.Count > 0 do
begin
TEdit(EditListe.Items[0]).free;
EditListe.Delete(0);
end;
end;
Die beiden Proceduren werden mittels zweier Buttons aufgerufen. Jetzt zum Problem:
************************************************** **********
Wenn das erste (und nur dann) Edit den Fokus hat und ich mit der Maus auf den Button zum freigeben klicke klappt alles. Ordne ich dem Button jedoch im OnkeyDown des Formulars eine F Taste zu und drücke zum freigeben die F-Taste, bekomme ich einen AccessViolation am Schluss der
Anwendung. Ich weiß nicht mehr wo ich noch suchen soll, ich finds nicht.
************************************************** **********
Ich hab schon gedacht es läg an den Buttons weil ich Speedbuttons verwende aber mit andere Buttons tritt der Fehler auch auf.
Der Vollständigkeithalber hier noch das OnKeyDown und das Keypress Ereignis des Formulars:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Edit1.Setfocus;
case key of
Vk_F7 : SpeedButton1Click(Form1);//CreateADVEdits;
Vk_F8 : SpeedButton2Click(Form1);//DestroyADVEdits;
end;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
//keyPreview ist true.
if key = #13 then
begin
Self.Perform(WM_NEXTDLGCTL, 0, 0);
key := #0;
end;
end;
Vielleicht hat jemand von euch noch ne Idee worans liegen könnte.
Gruß
Sebastian
[edit=Luckie]Delphi-Tags hinzugefügt. Beim nächsten mal bitte selber machen. Danke. Mfg, Luckie[/edit]