Entwickler-Ecke
WinForms - .Net Formulare in GroupBox reparenten ??
Marauder - Di 24.05.05 23:45
Titel: .Net Formulare in GroupBox reparenten ??
Kann man ein .Net Formular in eine GroupBox reparenten ?
Unter VB6 / C++ im Visual Studio und unter Delphi mit den Windows Api's war
das ja immer möglich.
Geht das auch mit den .Net Forms ? Weiss da jemand was drüber ? :shock:
Gruß
sakura - Mi 01.06.05 15:04
Titel: Re: .Net Formulare in GroupBox reparenten ??
Marauder hat folgendes geschrieben: |
Geht das auch mit den .Net Forms ? Weiss da jemand was drüber ? :shock: |
Es ist sogar recht einfach. Folgendes Beispiel geht von 2 Formularen aus. Das einzubindene Form heißt
frmSub und wird innerhalb der Gropubox
grbSubForm angezeigt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure frmMain.btnLoadSubForm_Click(sender: System.Object; e: System.EventArgs); var SF: frmSub; begin SF := frmSub.Create; SF.TopLevel := False; grbSubForm.Controls.Add(SF); SF.Dock := DockStyle.Fill; SF.Visible := True; end; |
Die entscheidende Zeile ist
SF.TopLevel := False;. Normalerweise sind Formulare sogenannte Top-Level Controls, welche nicht innerhalb anderer Controls gehostet werden können. Dieses Verhalten kann durch das setzen der Eigenschaft
TopLevel angepasst werden.
:welcome:
deccer - Mi 01.06.05 15:23
blöde frage, aber gibts in delphi.net kein TFrame?
Marauder - Mi 01.06.05 15:49
Cool... funktioniert. Thnx.
:wink:
sakura - Mi 01.06.05 16:09
deccer hat folgendes geschrieben: |
blöde frage, aber gibts in delphi.net kein TFrame? |
Für VCL.NET-Applikationen schon, aber nicht für WinForm-Applikationen ;)
...:cat:...
Robert_G - Di 27.09.05 23:48
Titel: Re: .Net Formulare in GroupBox reparenten ??
sakura hat folgendes geschrieben: |
Die entscheidende Zeile ist SF.TopLevel := False;. Normalerweise sind Formulare sogenannte Top-Level Controls, welche nicht innerhalb anderer Controls gehostet werden können. Dieses Verhalten kann durch das setzen der Eigenschaft TopLevel angepasst werden. |
Darf ich hier mal etwas verspätet Einwände erheben?
Wer sich schonmal Gedanken darüber gemacht hat, warum man seine Clients überhaupt in .Net anstatt native oder in Java zu entwickeln, dürfte über den Begriff Smart Clients und somit auch über CAS gestolpert sein. [1]
Standardmäßig darf eine .Net App in der Internet Zone nur Top Level windows benutzen. Solche "Hacks" werden mit einer Security exception und einem nicht funktionierenden bzw. extra zu konfigurierenden Client bestraft. ;)
sakura hat folgendes geschrieben: |
deccer hat folgendes geschrieben: | blöde frage, aber gibts in delphi.net kein TFrame? |
Für VCL.NET-Applikationen schon, aber nicht für WinForm-Applikationen ;) |
Es gibt UserControls, die ähnlich wie Frames funktionieren.
Dadurch ist der oben genannte, umständliche Umweg und die Folgen absolut unnötig. :)
[1] CAS gehört IMHO zu den #1 Killer features von .Net und wird in den nächsten Jahren, hauptsächlich mit XAML, einiges auf den Kopf stellen.
Es mit solchen Dingen oder der VCL.Net einfach so wegzuwerfen ist mir unverständlich...
Christian S. - Di 27.09.05 23:59
Hallo!
Robert_G hat folgendes geschrieben: |
sakura hat folgendes geschrieben: | Die entscheidende Zeile ist SF.TopLevel := False;. Normalerweise sind Formulare sogenannte Top-Level Controls, welche nicht innerhalb anderer Controls gehostet werden können. Dieses Verhalten kann durch das setzen der Eigenschaft TopLevel angepasst werden. |
Darf ich hier mal etwas verspätet Einwände erheben? |
Na gut, ausnahmsweise ;-)
Robert_G hat folgendes geschrieben: |
Standardmäßig darf eine .Net App in der Internet Zone nur Top Level windows benutzen. Solche "Hacks" werden mit einer Security exception und einem nicht funktionierenden bzw. extra zu konfigurierenden Client bestraft. ;) |
Sehe ich das richtig, dass dieses Vorgehen bei einer Stand-Alone-Anwendung unproblematisch ist. Ich nutze das nämlich bei den Plugins für
SharpPix 2.0 [
http://www.c-sharp-forum.de/topic_SharpPix+20+inkl+Plugins_48772.html].
Das ist sehr praktisch, weil ein Plugin-Entwickler die GUI als WinForm mit entsprechendem Designer entwerfen kann und ich die dann in einem Tabcontrol reparente.
Grüße
Christian
Robert_G - Mi 28.09.05 00:12
Wir mögen vielleicht eine unterschiedliche Auffassung von praktisch haben.[1] ;)
Lasse die PlugIns ein UserControl publizieren, dass kann ohne Gefrickel gleich dorthin wo es soll. ;)
Gebe ihnen vielleicht eine Art Mini SDK in Form einer Assembly mit Attributen, die das Verhalten steuern, und einer Usercontrol-Ableitung, die sich bsser integrert, zur Hand.
Auch eine Ableitung von UserControl hat vollen design time support. ;)
[1]Schließlich hast du die neue Version von einer State-of-the-Art .Net Sprache mit einem schillernden upgrade Pfad auf .Net 2.0 zum ewig hinterher hinkenden und standards-ignorierenden Delphi.Net portiert.
Christian S. - Mi 28.09.05 00:17
Robert_G hat folgendes geschrieben: |
Wir mögen vielleicht eine unterschiedliche Auffassung von praktisch haben.[1] ;)
[1]Schließlich hast du die neue Version von einer State-of-the-Art .Net Sprache mit einem schillernden upgrade Pfad auf .Net 2.0 zum ewig hinterher hinkenden und standards-ignorierenden Delphi.Net portiert. |
Da bist Du ein bisschen Schuld dran. *g* Deine Postings in der DP haben eine Trotzreaktion nach dem Motto "Kann doch nicht so schlimm sein" ausgelöst. Okay, es ist nicht so schlimm, aber wahrscheinlich würde ich das nächste Mal doch wieder C# verwenden ;-)
Robert_G hat folgendes geschrieben: |
Lasse die PlugIns ein UserControl publizieren, dass kann ohne Gefrickel gleich dorthin wo es soll. ;) |
Okay, danke für den Tipp! Das werde ich mir mal anschauen. :-)
Christian S. - Mi 28.09.05 01:00
Schick, das mit den UserControl funktioniert prima! :-) Werde das morgen noch mal alles durchsehen, ob ich nichts übersehen haben, aber im Großen und Ganzen geht das schon mal.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!