Hallo zusammen,
ich habe mal wieder eine Frage, diesmal die Borland 2006 IDE betreffend. Und zwar hat es sich um folgendes:
Ich habe eine MainForm, in dem via eines TPageControl ziemlich viele TabSheets drin sind. Jetzt ist die Situation folgende, dass mehrere Personen an unterschiedlichen TabSheets arbeiten wollen, und ich habe keine Möglichkeit gefunden einzelne Sheets zu importieren oder zu exportieren.
Gibt es vielleicht eine Möglichkeit dies irgendwie zu realisieren? Alternativ könnte ich mir auch vorstellen, dass es irgendwie gehen müsste in einer Form, eine Page, TabSheet oder andere Form zu integrieren, die dann komplett in einer anderen Datei erstellt wird. So dass nur diese Datei überschrieben werden muss, und alle Änderungen sind im Projekt eingebaut?
Ich bin hier wirklich für jede Hilfe Dankbar, Tipps und Vorschläge sind auch willkommen!!
Danke schonmal im Vorraus
cherio Woltan
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Es gibt seit geraumer Zeit ein sogenanntes TFrame. Erstellen kannst du das via "neu" -> "Frame" (Zu mindest jetzt hier in Delphi 7). Ein Frame ist in etwa vergleichbar mit einem Form. Allerdings ist ein Frame dazu da um irgendwo zu plaziert zu werden. Der Vorteil ist aber. Du kannst es entweder mehrfach verwenden oder eben von unterschiedlichen Leuten erstellen lassen, da es jeweils eine eigne Unit ist.
Aber ein Wort der Wahrnung. Die Frames hat manchmal leichte Eigenheiten. So kennt es zum Beispiel kein OnCreate. Das müsste man dann selber per Hand via AfterConstruction erledigen. Und ein bereits eingebettes Frame noch einmal zu verändern sollte man auch eher nicht tun. Dann kann es passieren, dass man das eingebette Frame löschen neu erstellen muss. Also wo es eingebettet wurde. Oder eben man erstellt und bettet es zur Laufzeit per Code. Denn da wird es ja dann immer neu eingebettet.
Hey Lossy eX,
habe gerade als du den Post eingestellt hast auch die Frames entdeckt ^^. Was mir allerdings noch nicht so klar ist:
Ich habe eine TPageControl und anstelle eines TabSheets würde ich dann den Frame darstellen? Die Frage ist, wie mache ich das. Abgesehen davon, hab ich nicht so richtig verstanden, wie ich die warnungen am ende deines postings einzuordnen hab. Aber ich befürchte das schlimmste ^^
Kannst du nochmal genauer erklären wie die Frames dargestellt werden?
thx
Woltan
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Wegen der Warnung. Das was ich gesagt habe ist eigentlich alles gewesen. Aber das kann manchmal etwas nervenaufreibend sein. Um genauer zu sein. Die Frames werden inline in das Form gebettet und können danach noch beliebig angepasst werden ohne, dass sich das auf das eigentliche Frame überträgt. Wenn ein eingebettetes Frame in der Größe verändert wurde etc und anschließend an dem ursprünglichen Frame etwas strukturelles verändert wurde, dann kann es leicht passieren, dass die Elemente im eingebetten Frame etwas verschoben sind. Das liegt daran wie das Frame eingebettet wird und das dadurch mehrfach einstellungen für "ein und das selbe" Element existieren. Ja ich weiß ist alles etwas verwirrend. Aber kann es nicht einfacher beschreiben.
Und zur besseren Betrachtung. Stell dir einfach vor ein Frame ist vergleichbar mit einem Panel. Das kannst du überall drauf machen. Du benutzt die Frames also nicht anstelle der TabSheets sondern "packst" es nur auf ein TabSheet drauf. Und dadurch wird es dann eingebettet.
Wobei ich auch gerade sehe, dass das TPageControl wieder eine sehr tolle VCL Klasse ist. Es scheint also so zu sein, dass man einzelne Tabs nicht per Code hinzufügen kann. Nicht mal wenn man die Klasse ableiten würde, weil Borland mal wieder alles wirklich wichtige als Private gemacht hat. *argh*
Wenn du es später doch per Code machen musst/möchtest, dann solltest du dir mal das TabControl anschauen. Allerdings musst du dann die Verwaltung der einzelnen Seiten dann selber vornehmen. Also auch so, dass es automatisch gewechselt wird. Das was in einem PageControl alles so passiert, denn das basiert auch nur auf dem TabControl.
Klar kann man zu einem PageControl neue Tabs zufügen:
Code:
With TTabSheet.Create(Self)
Dobegin
Caption:='Test';
PageControl:=PageControl1;
End;
Hier kannst Du sogar eine eigene TTabSheet Nachfolgerklasse zufügen. Damit bist Du dann völlig frei und musst nicht mit Frames rumfummeln. Alle Elemente, die bei allen Seiten erscheinen müssen können dann auf einem Vorgänger instanziert werden und Deine Kollegen implementieren dann nur die speziellen Sachen. Allerdings kannst Du bei Verwendung eigener Nachfolger den Editor abessen und musst mit Code arbeiten. Hier empfiehlt sich dann doch ein Frame.
_________________ Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ah. Okay. Dann ziehe ich das zurück und behaupte das Gegenteil. Wobei ich das auch nur bei einem PageControl gesucht habe, weil ich eigentlich finde, dass es eher dahin gehört.
Ohje, das klingt alles recht kompliziert, vor allem für einen Delphi/Borland neuling.
Eigendlich ist die ganze Schose auch gar nicht mein Problem. Ich bin nur ein kleines Rad hier in der Firma und das Projekt wird von einem anderen Betreut. Ich wollte nur wohlwollend unter die Arme greifen, aber so ist mir das zu aufwendig .
Danke jedenfalls für die ausfürliche Beschreibung.
Cherio Woltan
Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.