außerhalb gelegenes Control hochpoppen

12/09/2012 - 17:28 von R.Kantas | Report spam
Ich suche eine Möglichkeit, ein Control eines Usercontrols über mehrere
Usercontrol-Ebenen hinweg etwa wie ein Popup-Fenster anzuzeigen.

Konkret: Ich habe ein Usercontrol zur Schriftartauswahl gebaut bestehend aus
einer Textbox mit danebenliegendem Button und einem Tabellen-Usercontrol als
Listboxersatz. Ein Klick auf den Button vergrößert das Usercontrol und das
Tabellencontrol wird sichtbar. Soweit so gut.

Jetzt kommt dieses Schriftartauswahlcontrol auf ein Toolbarcontrol. Das
Tollbarcontrol bildet mit einer direkt darunter platzierten Richtextbox ein
Editorcontrol.

Wenn jetzt das Schriftartauswahlcontrol durch Anzeigen der Tabellencontrols
in der Höhe vergrößert wird, würde das nur funktionieren, wenn das
Toolbarcontrol ebenfalls in der Höhe vergrößert *und* das RTB-Control
verkleinert wird. Letzteres möchte ich wegen dem dann fàlligen Zeilenumbruch
etc. vermeiden.

Andererseits bekomme ich es mit ZOrder nicht hin, daß die Toolbar 'höher'
liegt als die Richtextbox und somit eine Vergrößerung der Toolbarhöhe die
Richtextbox überlappt, jedenfalls hatte ich mir das so vorgestellt:
RTB.Zorder 1, Toolbar.Zorder 2. Oder umgekehrt, klappt jedenfalls nicht. Die
Toolbar höher machen wàre kein Problem, aber sie überlappt die Richtextbox
eben nicht.

Ideal wàre daher, wenn ich ohne die ganze Größenànderungen der Usercontrols
lediglich ein *außerhalb* eines Usercontrols gelegenen Controls (hier also
das Tabellencontrol im Schriftartenauswahlcontrol) über alle
"Parent-Controls" hinweg hochpoppen könnte und das Ganze als Usercontrol
funktionierte, also nicht als eigenstàndiges Fenster (gàbe andere Probleme).

Weiß jemand, ob sowas geht, ein außerhalb von (0,0)-(.Width,.Height)
gelegenes Control anzuzeigen?
 

Lesen sie die antworten

#1 Heinz-Mario Frühbeis
12/09/2012 - 17:52 | Warnen spam
"R.Kantas"...
Ich suche eine Möglichkeit, ein Control eines Usercontrols über mehrere
Usercontrol-Ebenen hinweg etwa wie ein Popup-Fenster anzuzeigen.



[schnipp]

Weiß jemand, ob sowas geht, ein außerhalb von (0,0)-(.Width,.Height)
gelegenes Control anzuzeigen?



Ich bin nicht ganz sicher, ob ich das alles verstanden habe ...

Ein Control kann immer mit Ctl.ZOrder 0 ganz nach oben in der ZOrder
gebracht werden und überdeckt damit immer* alle anderen Controls.
AFAIK funktioniert ZOrder allerdings nicht mit Ctl.ZOrder 2, Ctl.ZOrder 3,
etc..
Ctl.ZOrder 1 setzt AFAIK ein Control immer ganz unten in der Hierarchie.
Wenn du mit WindowsPos arbeiten willst, dann kannst du mit der hWnd des
Controls und hWndAfter, hWndBefore, etc. arbeiten.

Auch vllt. darauf achten, daß das zu "poppende" Control auch tatsàchlich in
der sichtbaren Flàche platziert ist.

Mit Gruß
Heinz-Mario Frühbeis

Ähnliche fragen