Autor |
Beitrag |
MIK
Hält's aus hier
Beiträge: 7
|
Verfasst: Do 13.04.06 14:46
Hallo!
Ich bin neu hier und habe ein kleineres Problem.
Ich hab ein Formular mit einer TTreeView Komponente, die mein Menü darstellt. Im Moment wird bei der Auswahl eines Punktes ein neues Formular (Modal) geöffnet.
Ich würde aber gerne ein Panel rechts neben meiner Treeview Komponente platzieren, auf welchem meine Formulare erstellt werden.
Wenn ich jetzt allerdings ein Formular auf meinem Panel erstelle kann ich es in meinem Panel so verschieben, dass es im Nirvana verschwindet. Ich möchte aber, dass mein Panel die Fläche darstellt, in der sich das Formular bewegen lässt. dh der Rahmen des Panels darf vom Formular nicht überquert werden.
Ich wäre für jeden Lösungsvorschlag dankbar!
|
|
der Berliner
      
Beiträge: 417
Win Xp Home
delphi 2005
|
Verfasst: Do 13.04.06 14:55
Hallo
Setzt doch im OI Aligment auf allClient.
gruß
_________________ [b]Ich weiß nicht immer, wovon ich rede. Aber ich weiß, dass ich recht habe.[b]
|
|
MIK 
Hält's aus hier
Beiträge: 7
|
Verfasst: Do 13.04.06 15:34
Ich habe das versucht, doch leider ist das nicht das was ich wollte!
Nochmals:
Das Programm hat einen ähnlichen Aufbau wie eine Standardwebseite: Links das Menü und rechts der Darstellungsbereich. Der "Darstellungsbereich" ist jetzt ein leeres Panel. Auf diesem Panel Soll ein Formular erstellt werden. (Muss nicht auf dem Panel sein aber ich dachte mir, dass ist am einfachsten) Jedenfalls möchte ich ein Formular in meinem Formular öffnen. Nicht erstellen sondern nur öffnen. Das neue Formular darf jetzt nicht in den Menübereich bzw. über den Rand meines Hauptformulars verschoben werden bzw. werden können.
Ich dachte mir ein Panel eignet sich sehr gut für eine solche Aufgabe. !?!?! Keine Ahnung ob dem so ist. Ich habe auch schon gehört, das MDI eine Möglichkeit wäre. Leider habe ich noch keine Beispiele für MDI gefunden bzw. kann ich das ganze nicht ganz nachvollziehen. In meinen Delphi Bücher ist dieses Thema auch recht sparsam beschrieben.
|
|
Alpha_Wolf
      
Beiträge: 297
Ubuntu, Win XP, Win Vista
C#, Delphi 6 Prof, Delphi 2007 Prof, Java
|
Verfasst: Do 13.04.06 15:35
Als kleiner Vorschlag würde für dich auch eine MDI-Anwendung.
Oder du überprüfst einfach im MouseMove deine Mauskoordinaten und vergleichs sie mit dem Panel Rand.
Ist allerdings nich wirklich sauber sowas.
_________________ Diskutiere nie mit einem Irren - er zieht dich auf sein Niveau und schlägt dich mit seiner Erfahrung.
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Do 13.04.06 18:34
alternativ kannst du auch dem parent deiners formulares, das dann erscheinne soll das panel zuweisen.
so in der art:
Delphi-Quelltext 1:
| meinformular.parent := meinpanel; |
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
MIK 
Hält's aus hier
Beiträge: 7
|
Verfasst: Fr 14.04.06 14:10
Hallo!
Danke für eure Antworten. Ich habe beides schon versucht. MDI und Parent auf Panel1 zu setzen.
MDI:
Bei dieser Variante kann ich ein Formular in mein Hauptformular einbetten. (ich hoffe ich habe das richtig verstanden). Wenn ich jetzt Compiliere ist mein Hauptformular komplett mit einem "MDI-Formular" ausgefüllt. Somit ist das wohl nichts für mich. Ich möchte ja am linken Rand meines Hauptformulars ein TTreeview platzieren mit Menüpunkten (Mitarbeiter anzeigen, Mitarbeiter bearbeiten, etc.). Jetzt möchte ich für die einzelnen Menüpunkte natürlich unterschiedliche Formulare verwenden.
Was ich so über MDI gelesen habe eignet sich wohl besser für Texteditoren, da sich die neuen Formulare nicht von einander unterscheiden.
PARENT:
Ich habe ein Formular entworfen und mit
Quelltext 1: 2: 3: 4: 5: 6: 7:
| Form2.ShowModal; Form2.Parent:=Panel1;
bzw.
Form2.Parent:=Panel1; Form2.ShowModal; |
aufgerufen.
Leider führt das ganze zu einem Programmabsturz.
Vielleicht könnt ihr mir nochmal helfen. Es ist eine Weile her, dass ich viel mit Delphi gearbeitet habe bzw. arbeiten musste. (Delphi wurde 5 Jahre bei uns in der Schule unterrichtet.) Leider haben wir wenig im Bereicht Programmdesign bzw. Programmaufbau gemacht.
Jetzt würde ich das brauchen.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Fr 14.04.06 14:41
Hallo,
müssen es denn Formulare zur jeweiligen Bearbeitungsoberfläche sein?
Schau Dir doch mal das PageControl an, darin erstellst Du dann TabSheets auf denen dann die Bearbeitungselemente plaziert werden können.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Alpha_Wolf
      
Beiträge: 297
Ubuntu, Win XP, Win Vista
C#, Delphi 6 Prof, Delphi 2007 Prof, Java
|
Verfasst: Fr 14.04.06 17:02
MIK hat folgendes geschrieben: | MDI:
Bei dieser Variante kann ich ein Formular in mein Hauptformular einbetten. (ich hoffe ich habe das richtig verstanden). Wenn ich jetzt Compiliere ist mein Hauptformular komplett mit einem "MDI-Formular" ausgefüllt. Somit ist das wohl nichts für mich. Ich möchte ja am linken Rand meines Hauptformulars ein TTreeview platzieren mit Menüpunkten (Mitarbeiter anzeigen, Mitarbeiter bearbeiten, etc.). Jetzt möchte ich für die einzelnen Menüpunkte natürlich unterschiedliche Formulare verwenden.
Was ich so über MDI gelesen habe eignet sich wohl besser für Texteditoren, da sich die neuen Formulare nicht von einander unterscheiden.
|
Das ist so nicht richtig.
Mit einer MDI Anwendung kannst du ganz normal eine Hauptform aufbauen mit links n TreeView und rechts den Formularen..
Setze dazu dein Hauptformular(da wo der TreeView drauf soll und nebendran die einzlnen Forms) auf fsMDIForm (im Objektinspektor unter "FormStyle" zu finden)
Nun setzt du auf dein Hauptformular einfach deinen TreeView.. und von mir aus noch n Splitter damit du die Größe verändern kannst.. *g*
Deine Child Fenster die also neben dem TreeView aufgehen soll setzt du "fsMDIChild" ebenfalls unter "FormStyle" zu finden.
So müsste es funktionieren..
_________________ Diskutiere nie mit einem Irren - er zieht dich auf sein Niveau und schlägt dich mit seiner Erfahrung.
|
|
MIK 
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 18.04.06 14:27
Titel: Erledigt
Hallo und vielen Dank für eure Hilfe.
Ich werde das ganze jetzt über ein TPageControl machen. Die Geschichte mit MDI funktioniert noch nicht ganz, da wie oben beschrieben das gesamte Formular als MDIForm betrachtet wird und ich somit mein MDIChild hinter meine TreeView-Komponente verschieben kann. Ich möchte auf keinen Fall die Position des Fensters während dem Verschieben überprüfen.
Mit PageControl kann man auch sehr gut arbeiten.
Nur noch eine kleine Frage:
Ich habe jetzt ein PageControl mit 4 Registerkarten. Allerdings möchte ich für unterschiedliche Punkte, unterschiedliche PageControls öffnen.
Wie hässlich ist es, wenn ich das benötigte PageControl einfach auf Visible = True setze und die anderen auf Visible = False ?? Ich möchte keine Komponenten zur Laufzeit erstellen. (wenn möglich!) Trotzdem soll das Programm sauber programmiert werden. Könnt ihr mir einen Tip geben wie ihr das machen würdet.
Wenn ihr mir hier noch eine kleine Hilfestellung geben könntet kann ich diesen Beitrag auf erledigt setzen!
|
|
Ironwulf
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Di 18.04.06 14:33
nimm statt page control lieber notebook, das ist letztendlich dasselbe nur ohne die unschönen reiter
|
|
Alpha_Wolf
      
Beiträge: 297
Ubuntu, Win XP, Win Vista
C#, Delphi 6 Prof, Delphi 2007 Prof, Java
|
Verfasst: Di 18.04.06 14:46
Kanns hier leider nicht testen, aber bei mir war es jedenfalls immer so das ich nix hinter den Tree schieben konnte.. ob es daran lag das noch ein Panel dahinter lag kann ich dir jetzt nicht sagen.
Wenn du aber eine PageControl nimmst, dann hättest du doch genauso auch die ChildFenster maximieren können oder? ^^
Aber da du ja jetzt schon umgestellt hast wollte ich das nur nochmal anmerken. 
_________________ Diskutiere nie mit einem Irren - er zieht dich auf sein Niveau und schlägt dich mit seiner Erfahrung.
|
|
MIK 
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 18.04.06 14:58
Ich habe es natürlich gleich getestet
Auch mit Panel kann ich das Form verschieben. Schade  macht aber nix. Ich bleibe bei PageControl.
@Ironwolf: Die Reiter gefallen mir eigentlich ganz gut und so kann ich auch die Unterpunkte des TreeView schön darstellen.
Nur weiß ich jetzt nicht, wie ich mehrere PageControls auf meinem Hauptformular designen soll.
|
|