Entwickler-Ecke
Sonstiges (Delphi) - Verdeckte Komponente beim Entwickeln nach vorne holen
tortom1000 - Do 26.01.17 10:30
Titel: Verdeckte Komponente beim Entwickeln nach vorne holen
Hallo,
ich habe das Problem, das ich mehrere Panels exakt übereinander angeordnet habe, die die identische Größe und den identischen Ursprung haben.
Somit komme ich an die unteren Panels "quasi nicht mehr ran", um sie nach oben zu holen.
Hier im Forum wurde dieses Problem schon mal angefragt, leider funktionieren die Lösungen bei mir bzw. bei meiner Delphi-Installation nicht.
Ich benutze Delphi 7.
"Im Object Treeview auswählen (zumindest bei D7 und älter), denke aber in den neueren Versionen wird es auch so etwas geben."
-> Dort kann ich das Panel natürlich anwählen, aber ich kann es darüber nicht nach vorne holen
"Rechte Maustaste auf das verdeckende Steuerelement und "Element\Nach vorne bringen" auswählen."
-> die Funktion "Element\Nach vorne bringen" gibt es in der "Object-Hierarchie" nicht und direkt anklicken geht
ja nicht, da ja andere Panels drüber liegen.
Ich habe auf jedem Panel noch einen Gradienten (Farbverlauf) liegen, so das ich auch nicht umgekehrt das zu oberst liegende Panel in
den Hintergrund bringen kann, was ja, wenn ich es mit jedem der Panels so machen könnte, auch das gewünschte Panel nach oben holen würde.
Wäre zwar etwas umständlich, aber zielführend.
Wie gesagt, das geht ja leider nicht, ohne die Gradienten zu verändern, damit ich an die Panels zum Rechtklick komme, um dann über
Element\Nach hinten setzen zum Ziel zu kommen...
Gibt es dazu noch andere Möglichkeiten?
Gruß
Tom
Delete - Do 26.01.17 12:53
- Nachträglich durch die Entwickler-Ecke gelöscht -
Sinspin - Do 26.01.17 13:42
Hey, nimm einfach ein PageControl und packe jedes Panel in eine neue Page. Dann kannst Du zur Designzeit einfach via Tabs umschalten. Zur Laufzeit schaltest Du die Tabs einfach aus und hast dann im Hintergrund auch eine ordentliche Methode mit der Du die Panel via ActivePage Property wechseln kannst.
doublecross - Do 26.01.17 13:43
Hallo
tortom1000,
um das ganze bearbeiten zu können würde mir einfalle, mit rechts auf das Formular zu klicken und dann "Ansicht als Text" zu wählen. Dann erhältst du Quasi den Quelltext des Formulars, welchen du bearbeiten kannst.
Generell würde ich dir aber empfehlen auf solche Konstruktionen zu verzichten. Wahrscheinlich willst du zur Laufzeit mal das eine, mal das Andere Panel Anzeigen, oder? In dem Fall würde ich dir empfehlen eine PageControl zu nehmen und jedes Panel auf eine Seite des Page Controls zu legen. Dann kannst du zur Designezeit bequem zwischen den Seiten umschalten. Die einzelnen Tabreiter würde ich dann erst zur Laufzeit per Code ausblenden.
Das kannst du z.B. im Form Create machen, dort würde ich auch die "Start Seite" festlegen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm2.FormCreate(Sender: TObject); var i : integer; begin for i := 0 to PageControl1.PageCount - 1 do PageControl1.Pages[i].TabVisible := False; PageControl1.ActivePage := TabSheet1; end; |
Natürlich darfst die Komponenten auch sinniger benennen.
Edit: @
Sinspin: Zwei dumme ein Gedanke ;).
Slipstream - Sa 28.01.17 15:17
tortom1000 hat folgendes geschrieben : |
"Im Object Treeview auswählen (zumindest bei D7 und älter), denke aber in den neueren Versionen wird es auch so etwas geben."
-> Dort kann ich das Panel natürlich anwählen, aber ich kann es darüber nicht nach vorne holen |
Mit Object Treeview meinst du sicher den Objektinspektor
OI, wo man all die Eigenschaften, die man Properties nennt, eintragen kann. Du kannst dir damit behelfen, dass du die im OI ausgewählte Komponente über den OI verschiebst, indem du die Properties LEFT und TOP vorübergehend veränderst, so dass dein Panel, an dem du gerade herumfummeln willst, sichtbar wird.
Wenn ich davon ausgehe, dass du zur Laufzeit im Programm immer nur eines dieser übereinanderliegenden Panels anzeigst (Visible := True) und die anderen verbirgst (Visible := False), kannst du die gewünschte Position und Grösse auch erst zur Laufzeit zuweisen. Der Vorteil: Du musst dann nicht im Formulareditor alle Panels exakt übereinander legen.
jaenicke - Sa 28.01.17 17:24
Slipstream hat folgendes geschrieben : |
Mit Object Treeview meinst du sicher den Objektinspektor OI, wo man all die Eigenschaften, die man Properties nennt, eintragen kann. |
Nein, er meint den visuellen Baum mit allen auf dem Formular vorhandenen Komponenten. ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 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!