Entwickler-Ecke
Sonstiges (Delphi) - Auf Form zugreifen, die per .parent "verlegt" wurde?
nabbl - Mi 27.05.09 07:48
Titel: Auf Form zugreifen, die per .parent "verlegt" wurde?
Moijn.
Zur Zeit erstelle ich ein neues Form und weise es einem TabSheet zu. Funktioniert auch soweit:
Delphi-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:
| procedure TForm1.AddForm(Caption: String = 'Unnamed'); var aForm : TFrame; tabSheet : TAdvTabSheet; begin tabSheet := TAdvTabSheet.Create(TabControl) ; tabSheet.AdvPageControl := TabControl; tabSheet.ShowClose := True; tabSheet.OnCanClose := TabClose; aForm := TFrame.Create(tabSheet) ; aForm.Parent := tabSheet; aForm.Align := alClient; aForm.BorderStyle := bsNone; aForm.Visible := true; tabSheet.Caption := ExtractFileName(Caption);
TabControl.ActivePage := tabSheet;
if (Caption <> 'Unnamed') then aForm.SourceCode.Lines.LoadFromFile(Caption); aForm.SourceCode.SetFocus; end; |
Mein Frage ist nun: Wie kann ich später auf aForm.SourceCode zugreifen?
Wäre super, wenn ihr mir dabei etwas unter die Arme greifen könntet.
Gruß
Nabbl
BenBE - Mi 27.05.09 08:58
Forms und Frames sind was Unterschiedliches. Bitte nicht in einen Topf werfen ...
Zur Frage:
Tabsheet.Controls ... und dort entsprechend gucken. ODER du merkst Dir irgendwo eine Referenz auf dein Frame.
nabbl - Mi 27.05.09 09:05
BenBE hat folgendes geschrieben : |
Forms und Frames sind was Unterschiedliches. Bitte nicht in einen Topf werfen ...
Zur Frage:
Tabsheet.Controls ... und dort entsprechend gucken. ODER du merkst Dir irgendwo eine Referenz auf dein Frame. |
Ah, sry - ist irreführend:
Delphi-Quelltext
1: 2:
| type TFrame = class(TForm) |
Ich weiß - ist dreckig.. werde ich aber noch ändern ;) versprochen :D
€dit:
Habe gerade das hier ausprobiert:
Delphi-Quelltext
1:
| ShowMessage((TabControl.Controls[0] as TFrame).SourceCode.Lines[0]); |
Bekomme aber leider eine Fehlermeldung beim klicken des Buttons:
Quelltext
1:
| Ungültige Typumwandlung |
BenBE - Mi 27.05.09 09:32
Beachte, wem Du dein Form zuordnest. Wenn du dem Tabsheet das Form zuordnest, musst Du es auch dort suchen.
Ferner: Es kann durchaus sein, dass da mehrere Controls sind; schau also mal mit dem Index durch.
Die Fehlermeldung heißt nur, dass das Control[0] von einem falschen Typ ist; bei einem direkten Typecast ohne Typprüfung hätte es hier mit einer AV gekracht ;-)
nabbl - Mi 27.05.09 09:37
Jo, fettes THX :D
Habs hinbekommen. Für alle, die irgendwann mal suchen:
Delphi-Quelltext
1:
| ShowMessage((TabControl.Pages[0].Controls[0] as TFrame).SourceCode.Lines[0]); |
BenBE - Mi 27.05.09 09:41
Wobei die Indizes an die eigenen Bedürfnisse anzupassen sind ;-)
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!