Autor Beitrag
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 378
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: Mi 15.01.14 23:09 
Liebe Experten,

ich kämpfe (und umschiffe) seit laengerer Zeit folgendes Problem:

Ein Button (oder was sonst) soll in der linken unteren Ecke meines MainForms sein. Ich habe für den Button den Anchor auf left/bottom gesetzt. Das mainform wird mit windowsstate = wsnormal gestartet. Wenn ich dann oben rechts im Fenster das Maximizefeld anclicke, dann gibt es das Vollbild mit dem Button unten links, bestens.

Wenn ich aber gleich mit Vollbild starten will, also im Delphi Objectinspector windowsstate=wsmaximized setze, dann ist der Button nicht mehr am Rand.

Ich finde schon Work-Arounds, aber wie macht man das richtig?

Grüße GuaAck
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 15.01.14 23:25 
Liegt vielleicht an der Taskleiste..
Es macht einen Unterschied, ob die Creationphase des Fensters schon vorbei ist.

Vielleicht so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.FormShow(Sender: TObject);
begin
Form1.WindowState:= wsMaximized;
end;


Oder so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
function getHeightOfTaskBar : integer;
var hTaskBar:HWND;
    rect : TRect;
begin
     hTaskbar := FindWindow('Shell_TrayWnd'Nil);
     if hTaskBar<>0 then
        GetWindowRect(hTaskBar, rect);

     Result:=rect.bottom - rect.top;
end;

procedure Maximizer; 
begin
    if Form1.WindowState=wsNormal then
       begin
        Form1.WindowState:=wsMaximized;
        Form1.SetBounds(0,0,screen.Width,screen.Height-getHeightOfTaskBar);
       end
       else
       begin
         Form1.WindowState:=wsNormal;
       end;

   //    ShowTrayWindow;
end;

Für diesen Beitrag haben gedankt: GuaAck
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 15.01.14 23:58 
Wenn das bei dir nicht geht, ist das ein Fehler in deiner Delphiversion. Bis Delphi 7 gab es an der Stelle ja immer wieder Probleme durch solche Fehler...

Ein Beispiel, in XE5 kompiliert, liegt inkl. Quelltext im Anhang.
Einloggen, um Attachments anzusehen!
GuaAck Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 378
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: Do 16.01.14 20:33 
Danke,

einfach vor dem typischen Application.Run ein Form1.windowsstate :=wsmaximized, und nun geht es prima.

Gruß
GuaAck