Autor Beitrag
Marauder
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 72



BeitragVerfasst: Di 24.05.05 23:45 
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
ontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 137

W2KS, W2K3S
D1Pr, D3Pr, D4Pr, D5E, D7A, D8A, D2005A
BeitragVerfasst: Mi 01.06.05 15:04 
user profile iconMarauder 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:
ausblenden 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:

_________________
Das Lächeln ist die eleganteste Art dem Gegner die Zähne zu zeigen.
Borland SE
deccer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 57



BeitragVerfasst: Mi 01.06.05 15:23 
blöde frage, aber gibts in delphi.net kein TFrame?
Marauder Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 72



BeitragVerfasst: Mi 01.06.05 15:49 
Cool... funktioniert. Thnx.
:wink:
sakura
ontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 137

W2KS, W2K3S
D1Pr, D3Pr, D4Pr, D5E, D7A, D8A, D2005A
BeitragVerfasst: Mi 01.06.05 16:09 
user profile icondeccer 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:...

_________________
Das Lächeln ist die eleganteste Art dem Gegner die Zähne zu zeigen.
Borland SE
Robert_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: Di 27.09.05 23:48 
user profile iconsakura 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. ;)
user profile iconsakura hat folgendes geschrieben:
user profile icondeccer 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 27.09.05 23:59 
Hallo!

user profile iconRobert_G hat folgendes geschrieben:
user profile iconsakura 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 ;-)

user profile iconRobert_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.

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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Robert_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: Mi 28.09.05 00:12 
user profile iconChristian S. hat folgendes geschrieben:
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.

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.

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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 28.09.05 00:17 
user profile iconRobert_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 ;-)

user profile iconRobert_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. :-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".