Dann stelle ich jetzt mal die provokative Frage: Wozu brauchst du überhaupt ein Textfile?!?!?!Bernie110 hat geschrieben: Mo 26. Aug 2024, 13:50
Ok akzeptiert. Ich verrenne mich da in einen falschen Code. Schon verstanden.
Im Prinzip, möchte ich jeden Formularnamen von jedem Formular, welches aktuell geöffnet ist, in einer Liste angezeigt bekommen. siehe : CheckListBox1
Mittels Flag in der CheckListBox1 möchte ich bestimmen, welches Formular geschlossen werden soll.
Ich habe ein Textfile angelegt. Jedes geöffnete Formular fügt dort seinen Namen an.
Wird ein Formular geschlossen, wird der Name des Forms aus der Textfile gelöscht.
Um gleichzeitig mehrere Formular schließen zu können gibt es ein Formular mit dieser checklistbox1
Die ChecklistBox1 wird mittels dieser Textfile befüllt.
So werden nun alle geöffneten Formular-Namen dort angezeigt.
Der Code soll nun die Checklistbox1 durchlaufen und die mit Haken gekennzeichneten Formularnamen schliessen´und dann diesen Formnamen aus der Textfile löschen.
Und ich versuchte zu fragen, wie man einen Variable für einen Formnamen definiert.
irgend wie so :
VariableFormName = Flag_ja_in_Checklistbox1
VariableFormName.close;
Lg Bernie
Ein Textfile macht nur Sinn, wenn du den "Zustand" über "Sessions" hinweg speichern willst.
Ich würde einfach Stumpf einen Zeiger auf die (geöffneten) Formulare in Objects von Items speichern.
Die "Items" selbst kann die Caption (oder was auch immer) des jeweiligen Formulars sein.
Und es wurde bereits erwähnt: Wenn du eine Liste durchläufst, in welcher nach deinen Kriterien ("Checked") der COUNT verändert wird: Immer rückwärts durch die Liste.
Ist das einfachste der Welt, da du den Count nicht im Auge behalten musst.
Aircode (Keine Zeit jetzt echten Code zu schreiben)
Setzt voraus, dass beim öffnen eines jeweiligen Formulars ein entsprechends AddObject ausgeführt wird
Code: Alles auswählen
//Öffnen von Formulare --> In OnCreate des jeweilgen Formulars
//Oder was auch immer in der Checklist angezeigt werden soll
frmÜbersicht.MyCheckList.Items.AddObject(Self.Caption, Self);
//frmÜbersicht.MyCheckList.Items.AddObject('Das ist eine Caption', Self);
frmÜbersicht.MyCheckList.Invalidate; //Wegen neu zeichnen? Bin mir gerade nicht sicher
//schliessen von Formularen gemäss Checked-Status
For i:=MyCheckList.Items.Count-1 DownTo 0 Do
Begin
If MyCheckList.Checked[i] Then
Begin
TForm(MyCheckList.Items.Objects[i]).Close;
MyCheckList.Items.Objects[i].Free;
MyCheckList.Items[i].Delete;
End;
End;