Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Form zu einer "Gruppe" zuweisen? (https://www.delphipraxis.net/50700-form-zu-einer-gruppe-zuweisen.html)

VT-DA 29. Jul 2005 23:21


Form zu einer "Gruppe" zuweisen?
 
Hi,

Nach längerem suchen ohne Erfolg, gebe ich hiermit auf und stelle erneut einen noobigen Thread.
Ich habe ein Fenster erstellt. Dieses Fenster ist mein "Mainform". So. Nun möchte ich ein zweites Fenster erstellen was zu dieser Gruppe hinzugefügt wird. Also z.B. wenn man dass MainFnester schließt, schließt sich das andere Fenster auch. Halt ein Hauptfenster. Nur mein Problem ist, dass ich nicht weiß wie ich das andere Fenster zu dem Mainfenster hinzuufügen soll?
Ich habe versucht beim erstellen des Fensters einfach den Handel dabei anzugeben.
Doch irgendwie wird das Fenster noch in der Taskleiste angezeigt was es eigentlich nicht dürfte.
Außerdem bleibt das Fenster offen wenn man das Hauptfenster schließt.

Mfg

Olli 30. Jul 2005 00:15

Re: Form zu einer "Gruppe" zuweisen?
 
Das Schließen mußt du schon selber und explizit machen. Also zB vom ersten das zweite Fenster schließen.

VT-DA 30. Jul 2005 14:16

Re: Form zu einer "Gruppe" zuweisen?
 
Hi,

hmm. Okay. Trodzdem weiß ich aber noch nicht wie ich das andere Fenster zu einer Gruppe machen soll. :gruebel:

Mfg

Olli 30. Jul 2005 14:33

Re: Form zu einer "Gruppe" zuweisen?
 
Zitat:

Zitat von VT-DA
Trodzdem weiß ich aber noch nicht wie ich das andere Fenster zu einer Gruppe machen soll. :gruebel:

Erklär mal, was du unter Gruppe verstehst. Dieser Begriff ist mir komplett neu und ich arbeite schon ein paar Jahre mit der Win32-API!

VT-DA 30. Jul 2005 14:38

Re: Form zu einer "Gruppe" zuweisen?
 
Hi,

Also ich nehme mal Delphi als beispiel. Bei Delphi sind ja mehrere Fenster. Zum beispiel einmal ein Form oder halt der Object Inspector... Doch unten in der Leite siehst du ja nur ein Programm. Delphi. Normaler weise sind dann ja drei Fenster zu sehen weil die ja eigeständig sind. Aber das Programm wird unten als ein ganzes angezeigt und wenn man oben die Hauptleiste schließt, schließen sich auch automatisch alle anderen Fenster. Da ich ja alles aus einer DLL hole ist es ja nicht so...

Mfg

malo 30. Jul 2005 14:51

Re: Form zu einer "Gruppe" zuweisen?
 
In der Titelleiste schließt du das MainForm (ist glaub ich bei Delphi die Menuleiste oben...). Wenn das MainForm geschlossen wird, ist das Programm geschlossen. Und dabei werden ALLE Fenster geschlossen, die zu deinem Programm gehören.

VT-DA 30. Jul 2005 16:04

Re: Form zu einer "Gruppe" zuweisen?
 
Hi,

Ja. Aber ja nicht wenn ich eine DLL erstelle und die dann in einer anderen Programmiersprache öffne.
Dort sind dann zwei Fenster aufgelistet. Auch wenn ich ein Projekt als "Form" öffne gehts auch so.Ich brauche halt einen Befehl oder einen Parameter wo das halt sozusagen Manuell geht.

Mfg

DBR 30. Jul 2005 16:10

Re: Form zu einer "Gruppe" zuweisen?
 
Falls du nicht scheust, das von Hand zu machen, nimm den folgenden Code. Beide Fenster werden zusammen geöffnet, sind zusammen aktiv und werden zusammen minimiert. Weitere Dinge kannst du ja selbst einbauen.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, SysUtils, Classes, Forms, Dialogs, StdCtrls, Controls, Messages;

type

  TForm1 = class(TForm)
    procedure FormActivate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    procedure Minimieren(var M: TMessage); message WM_NCLBUTTONDOWN;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

uses Unit2;

procedure TForm1.FormActivate(Sender: TObject);
begin
  sendmessage(Form2.handle, WM_NCACTIVATE, 1, 0);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  Form2.show;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.Title := 'Gruppe W1';
  Caption := Application.Title;
end;

procedure TForm1.Minimieren(var M: TMessage);
begin
  DefaultHandler(M);
  if M.WPARAM = HTREDUCE then
    Form2.windowstate := wsminimized;
end;

end.

--------------------------------------------------------------
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm2 = class(TForm)
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    procedure CreateParams(var Params: TCreateParams); override;
    procedure Minimieren(var M: TMessage); message WM_NCLBUTTONDOWN;
  end;

var
  Form2: TForm2;

implementation

{$R *.DFM}

procedure TForm2.FormActivate(Sender: TObject);
begin
  sendmessage(Application.Mainform.handle, WM_NCACTIVATE, 1, 0);
end;

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.WndParent := GetDesktopWindow;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Application.MainForm.close;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  Caption := 'Gruppe W2';
end;

procedure TForm2.Minimieren(var M: TMessage);
begin
  DefaultHandler(M);
  if M.WPARAM = HTREDUCE then
    Application.minimize;
end;

end.
-------------------------------------------

Gruß DBR

[edit=alcaeus]Delphi-Tags eingefuegt. In Zukunft bitte selbst machen. Mfg, alcaeus[/edit]

Olli 30. Jul 2005 16:43

Re: Form zu einer "Gruppe" zuweisen?
 
Das in der Taskleiste ist ein Fenster (Application.Handle) welches du sonst garnicht zu sehen bekommst. Es hat nichts mit den Forms (wieviele auch immer) zu tun.
Der Grund warum es in der Taskleiste angezeigt wird ist, daß der Stil WS_EX_APPWINDOW gesetzt ist.

VT-DA 30. Jul 2005 19:15

Re: Form zu einer "Gruppe" zuweisen?
 
Hi,

hmm. Danke aber so wichtig ists dann doch nicht. Ich habe auch mal versucht nochmal mit handel.Parent das Fenster zu dem Mainfenster hinzuzufügen doch dann ist das Fenster in dem anderem Fenster und das will ich ja nicht. Naja. Egal. Trodzdem danke nochmal.

Mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 Uhr.
Seite 1 von 3  1 23      

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-2025 by Thomas Breitkreuz