Hallo,
ich hab mal wieder eine Frage an euch Delphi-Freunde:
Ich habe mir eine neue Komponente geschaffen: Abgeleitet aus TPanel mit mehreren Edit-Feldern, Labels, TrackBar, CheckBox und einem Button drauf (Alles wird während der Laufzeit bzw. im Form1.OnCreate, erzeugt). Dem Button habe ich eine OnClick-Methode verpasst, die auf eine Prozedur in der gleichen
Unit. Durch den Button-Klick soll das Panel verschwinden und die Ansicht auf der MainForm soll aktualisiert werden.
Im Moment sieht mein Code so aus:
Delphi-Quellcode:
procedure TNeuesPanel.Loeschen(Sender:TObject);
begin
if sender is TButton then
begin ignoreAtSaving:=true; //Eigenschaft, die vor dem Speichern überprüft wird
CBactive.checked:=false; //Panel wird deaktiviert
Hide; //Provisorische Lösung
// Form1.Refreschen;
end;
end;
procedure TForm1.Refreschen;
var i:integer;
begin
speichern; //Speichert Eigenschaften der Panels in Datei (ohne das weggeklickte Panel)
for i:=1 to anzahlpanels do
NeuesPanel[i].Destroy;; //Alle Panels sollen verschwinden...
LadeVonDatei('costum',Form1,ScrollBox1); //...um danach wieder neu geladen zu werden (natürlich ohne das gelöschte)
//procedure LadeVonDatei(datei:string; Owner: TComponent; ParentObjekt: TWinControl);
end;
Das Problem, wenn man Form1.Refreschen; verwendet, ist schon einleuchtend: Es gibt eine Zugriffsverletzung, weil man ein Objekt freigeben möchte, was noch eine Prozedur ausführt...
Wie kann ich das Problem lösen, wenn das Objekt (NeuesPanel) freigegeben werden soll, um Platz für das Neuladen zu schaffen? Kann man dem Button (OnClick) eine Prozedur zuweisen, die in der Main-
Unit liegt? Und gibt es dann auch noch Zugriffsverletzungen?
Wäre über Antworten sehr dankbar