Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Form2 immer vor Form1 (https://www.delphipraxis.net/91440-form2-immer-vor-form1.html)

Cyberbob 4. Mai 2007 22:24


Form2 immer vor Form1
 
Guten Abend DPler,

ich bin schon den ganzen abend am suchen, wie ich ein formluar immer vor einem anderen haten kann, ohne das es immer im vordergrund des desktops ist.
sowas wie form2.stayonform1 also. ich habe schon die optionen mdichild und mdiform versucht, habe aber nur eine exeption bekommen, das kein mdi-fenster vorhanden oder aktiv sei.
ich möchte form2 immer vor form1 halten. dabei soll form1 aber noch fokussierbar sein. wenn ich nun form2.stayontop setze und den explorer in den vordergrund hole, ist zwar form1 weg, form2 ist aber immer noch davor.
es sollen also entweder beide sichtbar oder beide im hintergrund erscheinen.

Danke im voraus!

Gruß,
Christian

mkinzler 4. Mai 2007 22:28

Re: Form2 immer vor Form1
 
.ShowModal()

Cyberbob 4. Mai 2007 22:35

Re: Form2 immer vor Form1
 
Zitat:

Zitat von Cyberbob
...dabei soll form1 aber noch fokussierbar sein...

geht nicht!

mkinzler 4. Mai 2007 22:42

Re: Form2 immer vor Form1
 
Dann mußt du es wohl über Events machen.

bitsetter 5. Mai 2007 00:25

Re: Form2 immer vor Form1
 
Moin Moin,

Mein Vorschlag:
Delphi-Quellcode:
  private
    procedure WMWINDOWPOSCHANGED(var AMsg: TMessage); message WM_WINDOWPOSCHANGED;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

function SetWinPos(hWnd: THandle; WinPos: PCardinal): Boolean; stdcall;
begin
  Result := true;
  if IsWindowVisible(hWnd) then
  begin
    if hWnd = Form1.Handle then
    begin
      SetWindowPos(Form2.Handle, WinPos^, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
      Result := false;
    end;
    WinPos^ := hWnd;
  end;
end;

procedure TForm1.WMWINDOWPOSCHANGED(var AMsg: TMessage);
var
  WinPos : Cardinal;
begin
  WinPos := 0;
  if Form1.Showing and Form2.Showing then
    EnumWindows(@SetWinPos, integer(@WinPos));
  //SetWindowPos(Form1.Handle, Form2.Handle, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;

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

MondoShiva 24. Okt 2007 15:17

Re: Form2 immer vor Form1
 
Soll das Form2 auf der Form1 liegen (als modul oder etwas dergleichen)?? oder als seperates fenster stehen??

Edit:
out of date sry nicht drauf geachtet


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz