Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Probleme beim löschen von Dynamischen Tabsheets
Siggus19 - Di 08.04.03 11:14
Titel: Probleme beim löschen von Dynamischen Tabsheets
Hallo ich hab eín Problem beim Löschen(Freigeben) oder clearen von Tabsheets kann mir jemand helfen?
Hier die Source:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49:
| procedure TFMain.Fuege_Neues_TabSheet_Hinzu; var ActIndex : Integer; TabSheet : TTabSheet; Panel : TPanel; Image : TImage; Memo : TMemo; Edit : TEdit; begin TabSheet := TTabSheet.Create(Self); TabSheet.PageControl := PCoRez; TabSheet.Caption := 'Neues Rezept';
Edit := TEdit.Create(Self); // Edit.Name := 'e_Tab_' + inttostr(TabSheet.TabIndex); Edit.Text := TabSheet.Caption; Edit.Parent := TabSheet; Edit.Top := 8; Edit.Height := 21; Edit.Width := round((TabSheet.ClientWidth - 16) / 2) + 8; Edit.Left := 8; Edit.OnChange := Edit_Change; Memo := TMemo.Create(Self); Memo.Parent := TabSheet; Memo.Left := 8; Memo.Width := round((TabSheet.ClientWidth - 16) / 4) * 3 - 4; Memo.Top := 8 + 21 + 4; Memo.Height := TabSheet.ClientHeight - 16 - (21 + 4); Memo.Anchors := [akLeft, akRight, akTop, akBottom]; // Memo.Name := 'm_Tab_' + inttostr(TabSheet.TabIndex); Memo.Lines.Clear;
Panel := TPanel.Create(Self); Panel.Parent := TabSheet; Panel.Left := round((TabSheet.ClientWidth - 16) / 4) * 3 + 8; Panel.Width := round((TabSheet.ClientWidth - 16) / 4); Panel.Top := 8; Panel.Height := TabSheet.ClientHeight - 16; Panel.Anchors := [akRight, akTop, akBottom]; Panel.OnClick := Panel_Click; Panel.Name := 'p_Tab_' + inttostr(TabSheet.TabIndex); Panel.Caption := ''; panel.PopupMenu := PMRezept; Tabsheet.Tag := Tabsheet.TabIndex;
PCoRez.ActivePage := TabSheet; Edit.SetFocus; end; |
Moderiert von
Klabautermann: Code-Tags hinzugefügt.
LCS - Di 08.04.03 11:29
Hallo und herzlich willkommen
Wenn du deine Codezeilen in [code] und [/code]einschliesst wird das ganze etwas übersichtlicher.
Aber auch so kann ich an deinem Posting keine Frage erkennen. :roll: Wo ist denn dein Problem?
Gruss Lothar
Siggus19 - Di 08.04.03 11:43
Titel: ich kann sie nicht frei geben
Ich habe die Tabsheet ja auf einem Panel und benutze dieses für mehrer Objekte um Rezepte zu speichern aber wenn ich auf ein anderes Objekt klicke bleiben die Texte und infor in den Feldern stehen und ich will das wieder wie am anfang nur das panel dort steht.
LCS - Di 08.04.03 11:58
Hi
vielleicht steht ich ja auf der Leitung, aber ich versteh's immer noch nicht so richtig. So wie ich das sehe erzeugst du eine neues TabSheet in einem PageControl und setzt da ein Edit, ein Memo und ein Panel drauf.
Wenn du jetzt diese TabSheet wieder löschst, dann müssen auch die entsprechenden Controls wieder gelöscht werden. Am einfachsten erreichst du das wenn du beim Erstellen der Steuerelemente jeweils das TabSheet als Owner angibst.
Quelltext
1: 2: 3: 4: 5:
| ... Edit.Owner := TabSheet; ... Memo.Owner := TabSheet; ... |
Der Owner ist für das freigeben alle untergeordneten Steuerelemente verantwortlich, wenn er selbst gelöscht wird. Wenn du also das entsprechende TabSheet wieder entfernst z. B. mit
Quelltext
1:
| PCoRez.ActivePage.Free; |
werden auch die darauf plazierten Steuerelemente gelöscht.
Gruss Lothar
Siggus19 - Di 08.04.03 12:11
Titel: Hat funktioniert
Vielen dank es hat geklappt.
Ich werde wohl noch öfter fragen müßen bin gerade an meinem Abschlußprojekt.
Klabautermann - Di 08.04.03 14:47
Hallo Siggus19,
wen du eine neue Frage hast, stelle diese bitte in einem neuen Toppic, damit eventuell andere Benutzer die das selbe Problem haben eine chance bekommen die lösung zu finden ohne eine eigene Frage stellen zu müssen.
Deine zweite Frage findest du mit Antworten
hier [
http://www.delphi-forum.de/viewtopic.php?t=9682].
Gruß
Klabautermann
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!