![]() |
Form 2 in einer GroupBox öffnen !
Hallo,
ist es Möglich ein Form in einer GroupBox zu öffnen? Habe zum Beispiel im Form 1 zwei GroupBoxen, in der zweiten GroupBox2 ( Algin(alclient)) möchte ich jetzt gerne ein Form 2 öffnen. Das Form 2 sollte sich aber nur in dieser GroupBox 2 bewegen können. Hat einer eine Idee ? |
AW: Form 2 in einer GroupBox öffnen !
Parent auf die GroupBox setzen?
|
AW: Form 2 in einer GroupBox öffnen !
Hallo Sir Rufo,
wenn ich jetzt zum Beispiel ein Form über Button 1 öffnen würde, würde es so aussehen.
Delphi-Quellcode:
Form2.show;
Jetzt möchte ich aber, dass das Form 2 in der GroupBox geöffnet wird. Wie bekomme ich das hin ? Danke für Deine Hilfe :-) |
AW: Form 2 in einer GroupBox öffnen !
Wurde doch schon gesagt?
Zitat:
Delphi-Quellcode:
Form2.Parent := ...;
Form2.Show; |
AW: Form 2 in einer GroupBox öffnen !
Hallo,
ich noch mal ;-) leider geht es nicht! Das ganze läuft unter Lazarus ? ??? |
AW: Form 2 in einer GroupBox öffnen !
Also,
mit Delphi geht es auch nicht :shock: |
AW: Form 2 in einer GroupBox öffnen !
Geht nicht, gibt's nicht.
Teile uns doch mal deinen Code mit dann können wir vielleicht helfen. |
AW: Form 2 in einer GroupBox öffnen !
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
hier erstmal der Code :
Delphi-Quellcode:
Fehlermeldung als Anhang
procedure TForm1.BitBtn1Click(Sender: TObject);
begin Form2 := TForm2.Create(Form1); Form2.Parent := Form1; Form2.FormStyle := fsNormal; Form2.Visible := true; end; |
AW: Form 2 in einer GroupBox öffnen !
Liste der Anhänge anzeigen (Anzahl: 1)
also so funktioniert´s bei mir:
Delphi-Quellcode:
Wobei Form2 bei mir beim Testen schon vorhanden war
procedure TForm1.Button1Click(Sender: TObject);
begin Form2.Parent := GroupBox1; Form2.FormStyle := fsNormal; Form2.Visible := true; end; |
AW: Form 2 in einer GroupBox öffnen !
Form1?
Delphi-Quellcode:
Aber ich dachte es soll in eine GroupBox?
Form2 := TForm2.Create(Self);
Form2.Parent := Self; Form2.FormStyle := fsNormal; Form2.Visible := true;
Delphi-Quellcode:
Bei welchem Befehl tritt nun eigentlich der Fehler auf?
Form2 := TForm2.Create(Self);
Form2.Parent := GroupBox1; Form2.FormStyle := fsNormal; Form2.Visible := true; Wobei ich ebenfalls wette, daß genau dieser Code bei mir im Delphi auch läufen würde. Und grade dieses BitBtn1Click ist ein gutes Beispiel, warum man nicht auf diese globalen Variablen zugreifen sollte. Was steht in der Form2, wenn ich zweimal draufklicke und vorallem was steht da drin, wenn ich das letzte Fenster wieder schließe? |
AW: Form 2 in einer GroupBox öffnen !
Hallo,
habe nur die Probleme, wenn das Form 2 auf (Align : alClient) steht! :? |
AW: Form 2 in einer GroupBox öffnen !
Zitat:
Also bei mir geht das Darstellen einer Form in einer GroupBox mit Align = alClient |
AW: Form 2 in einer GroupBox öffnen !
ich verstehe es gerade auch noch nicht!
arbeite zurzeit auch mit lazarus :( |
AW: Form 2 in einer GroupBox öffnen !
Liste der Anhänge anzeigen (Anzahl: 1)
hier noch ein Anhang :
|
AW: Form 2 in einer GroupBox öffnen !
warum "weigerst" du dich, der Form2 auch das zu sagen, was sie laut deiner Aussage tun soll: In der GroupBox sichtbar zu sein
In deinem Bild ist zu sehen, dass da immer noch steht
Delphi-Quellcode:
,
Form2.parent := Form1;
es wurde aber schon mehrmals darauf hingewiesen, dass es
Delphi-Quellcode:
lauten muss
Form2.parent := GroupBox1; //oder wie auch immer deine GroupBox heisst
|
AW: Form 2 in einer GroupBox öffnen !
hallo helmi,
habe es mit der GroupBox1, Panel1 und mit der Form1 versucht. Es liegt bestimmt an Lazarus ??? |
AW: Form 2 in einer GroupBox öffnen !
Wechsel schon einmal zum kostenlosen Turbo Delphi. Damit hast du sehr viel weniger Probleme.
|
AW: Form 2 in einer GroupBox öffnen !
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ein kleines (Delphi)Beispiel, rauskopiert aus einem meiner Bildschirmschoner, und leicht angepasst.
Form2 wird in eine GroupBox gesetzt. |
AW: Form 2 in einer GroupBox öffnen !
Hallo,
Zitat:
Delphi-Quellcode:
könnte problematisch sein - irgendwie sieht mir Dein Form1 auch nicht wie ein MDIForm aus -, aber vielleicht liege damit auch völlig falsch.
Form2.FormStyle := fsMDIChild
Gruß |
AW: Form 2 in einer GroupBox öffnen !
Es würde klappen, wenn vor dem Setzen des Parents der FormStyle auf
Delphi-Quellcode:
gesetzt würde.
fsNormal
Allerdings drängt sich durchaus die Frage auf, warum FormStyle auf
Delphi-Quellcode:
steht (wenn es doch eh keine MDI-Anwendung wird) :roll:
fsMDIChild
|
AW: Form 2 in einer GroupBox öffnen !
Liste der Anhänge anzeigen (Anzahl: 2)
Also ich hab gerade versucht das Bespiel unter Lazarus auszuführen. Lazarus kennt einige Funktionen nicht, wie z. B. GetWindowRect, SetParent, GetWindowLong, SetWindowLong. Damit läßt sich das obere Beispiel nicht so ohne weiteres umsetzten.
Natürlich sind das alles Windows Api Funktionen, womit sich die Frage stellt ob Lazarus drauf zugreifen kann. Wenn ja, dann dürfte es kein Problem sein. Allerdings kenne ich mich nicht so in Lazarus aus. Anbei das gleiche Beispiel wie oben, aber als Lazarusprojekt. Es funktioniert nicht, da Lazarus die oberen Funktionen nicht kennt. Wer weiß wie man die einbinden kann... EDIT: Dieses Beispiel funktioniert. Ich hab gerade etwas experimentiert und festgestellt, dass alles nötige in Lazarus da ist, auch die oberen Funktionen sind vorhanden. Man muss nur die Unit Windows einbinden. Anscheinend wird die Unit bei Lazarus nicht automatisch eingebunden. Macht man das, dann klappt auch das Beispiel:
Delphi-Quellcode:
unit Unit1;
{$mode objfpc}{$H+} interface uses Windows, ..., Unit2; |
AW: Form 2 in einer GroupBox öffnen !
Hallo,
Zitat:
Worauf ich hinaus wollte: In einer Delphi-Anwendung ein MDIChild erzeugen ohne ein MDIForm als Hauptformular scheppert meines Wissens - keine Ahnung wie das mit Lazarus ist. Gruß |
AW: Form 2 in einer GroupBox öffnen !
Ok, ich nehme zwar nicht wirklich alles zurück (das mit dem MDI bleibt), aber das Hauptproblem hier liegt bei
Delphi-Quellcode:
.
Align := alClient
Das mag die LCL nicht ... warum auch immer (würde ich als Bug bezeichnen). Was geht ist
Delphi-Quellcode:
.
WindowState := wsMaximized;
Allerdings gibt es da wohl ein Problem mit der Aktualisierung des Fensters, denn es wird nur der Bereich (Höhe,Breite) neu gezeichnet, den das Fenster vor der Maximierung eingenommen hatte. Auch das würde ich als Bug ansehen. Die Bounds der GroupBox stimmen auch nicht (die Caption der Groupbox wird verdeckt) Ok, problematisch ist der Rahmen der Form ...
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var LForm : TForm; begin // Wenn Parent gesetzt wird, braucht es keinen Owner // Auf jeden Fall nicht die Instanz aus der globalen Variable (Form1) nehmen, sondern hier Self LForm := TForm2.Create( nil ); // und auch hier, statt Form1 einfach Self nehmen LForm.Parent := Self; // Wolltest du nicht in die GroupBox??? LForm.FormStyle := fsNormal; LForm.BorderStyle := bsNone; LForm.Align := alCLient; LForm.Visible := true; end; |
AW: Form 2 in einer GroupBox öffnen !
Der Thread ist zwar nicht mehr aktuell, bin aber gerade darüber gestolpert. Für nachfolgende Leser (ich arbeite z.Zt. nur unter Lazarus (Win7)):
@Popov: Das Beispiel eines Formulars in einer Groupbox darstellen funktioniert auch unter Lazarus problemlos, ohne die Einbindung der Unit Windows (plattformunabhängig)!
Code:
uses ..., Unit2;
... procedure TForm1.Button1Click(Sender: TObject); begin Form2.BorderStyle:=bsNone; Form2.SetBounds(0, 0, GroupBox1.ClientWidth, GroupBox1.ClientHeight); Form2.Parent:=GroupBox1; Form2.Show; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz