Autor Beitrag
hungrycoder
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Sa 16.02.13 13:27 
Hallo, irgendwie stehe ich heute total auf dem Schlauch. Was ich will: Ich habe eine Hauptform Form1. Aus Form1 möchte ich eine Form2 createn. Diese Form2 soll unabhängig von Form1 zu schließen sein und auch in einem eigenen Windowsfenster laufen.
Mein Problem ist jetzt, dass ich nach dem erstellen der Form2 keinen Zugriff auf jegliche Klicks auf die Buttons von Form2 habe.
Das ganze habe ich so geschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
Form2 := TForm2.Create(nil);
Form2.Parent := nil;
Form2.ParentWindow := GetDesktopWindow;
Form2.ControlStyle := ControlStyle + [csAcceptsControls];
Form2.ControlStyle := ControlStyle + [csCaptureMouse];
Form2.ControlStyle := ControlStyle + [csClickEvents];
Form2.Show;


Ich verzweifele hier. Hat jemand einen besseren Vorschlag oder weiß was ich hier falsch mache, dann BITTE immer her damit.

Viele Grüße

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 16.02.13 16:10 
Wenn die Form nicht automatisch erzeugt wird (was ja standardmäßig der Fall ist), dann geht das in der Regel so:

ausblenden Delphi-Quelltext
1:
2:
3:
if not assigned(Form2) then // testen, ob die Form bereits erzeugt wurde
    Application.CreateForm(TForm2, Form2);  // ggf. erzeugen
Form2.Show; // anzeigen

_________________
We are, we were and will not be.
hungrycoder Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Sa 16.02.13 17:29 
Danke dir für deine Antwort, diese Art kannte ich noch nicht, dennoch löst sie nicht mein Problem, da es ja genau dasselbe ist wie:

Form2 := TForm2.Create(nil);
Form2.Show;

Ich hätte gerne aber, dass die neu erstellte Form in einem eigenen Windwosfenster angezeigt wird. Es wäre auch ok, wenn es nur in einem Windowsfenster wäre nur geht das irgendwie nicht weil meine Form1 kleiner ist als Form2. Form2 sollte dabei dann aber im Hintergrund sein. Wäre klasse, wenn du noch weitere Ideen hättest.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 16.02.13 21:04 
Was ist denn ein eigenes Windowsfenster? :gruebel: Meinst du so MDI-Fenster?

_________________
We are, we were and will not be.
hungrycoder Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 17.02.13 00:51 
Ok ich gebe zu ich hab mich schlecht ausgedrückt. Nein MIDI meine ich nicht. Wenn ich mein Programm starte sehe ich ja in der Taskleiste das Fenster meines Programmes. Hat dieses Programm aber jetzt eine zweite Form erstellt ist es bei mir so, dass diese beiden Forms das gleiche Fenster haben. Da meine Form1 aber kleiner als die Form2 ist kann ich zwischen den beiden nicht umschalten, sondern muss Form2 erst mal schließen. Was ich gerne hätte ist also zwei Forms und zwei Fenster.
Stundenplan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128
Erhaltene Danke: 32

Win 7
Delphi 7 Pers., C# (VS 2010 Express)
BeitragVerfasst: So 17.02.13 09:59 
Wenn ich das richtig verstanden habe, möchtest du also mehrere Formulare in der Taskleiste anzeigen lassen?

Für diesen Beitrag haben gedankt: hungrycoder
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: So 17.02.13 11:18 
Ich vermute Dich stört die "Verdrahtung" des neuen Forms mit dem bestehenden.
Dies lässt sich abschalten indem man per Projekt>Quelltext anzeigen die Zeile
ausblenden Delphi-Quelltext
1:
  // Application.MainFormOnTaskbar := True;					

auskommentiert


oder indem man Popupmode und PopupParent des anzuzeigenden Forms ändert

ausblenden Delphi-Quelltext
1:
2:
3:
  Form3.PopupMode := pmExplicit;
  Form3.PopupParent := nil;
  Form3.Show;

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS

Für diesen Beitrag haben gedankt: hungrycoder
hungrycoder Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 17.02.13 12:52 
@bummi und StundenPlan
Danke genau das habe ich gemeint. Klappt wunderbar.