Hi,
du hast verschiedene Möglichkeiten.
Ich würde anstatt dem Namen des Formulares das Formular selbst abspeichern.
Also:
Delphi-Quellcode:
Var
ActiveNote: TZettel;
ActiveNoteName: String;
...
//Deine Methode dann halt
procedure TNotiz.ZettelMerken(Sender: TObject);
begin
if Screen.ActiveForm is TZettel then
begin
ActiveNote := Screen.ActiveForm;
ActiveNoteName := ActiveNote.Name;
Notiz.Caption :='Aktiver Zettel: ' + ActiveNoteName;
end;
end;
Oder du iterierst über Screen.Forms und wenn Screen.Forms[i].Name = AktiverZettel dann Screen.Forms[i].Free.
Dass man nicht Destroy aufrufen soll, ist auch schon oft erwähnt wurden.
Aber, wenn du TForm für Zettel nimmst, dann würde ich einfach auf dem Zettel irgendwo ein Kreuz zum Löschen platzieren und den Zettel über Close löschen (Action im OnClose auf caClose).
Frank
[DEIT]und zum Abspeichern in der Listbox nur 2 Hinweise:
Formular mit speichern: Zettelliste.AddItem(Screen.ActiveForm.Caption, Screen.ActiveForm);
Formular referenzieren: TForm(Zettelliste.Items.Objects[i]).Free;
[/EDIT]