Delphi-PRAXiS
Seite 2 von 3     12 3      

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 Form mit bsToolWindow-BorderStyle und Height := 0 (https://www.delphipraxis.net/31569-form-mit-bstoolwindow-borderstyle-und-height-%3D-0-a.html)

Nuclear-Ping 12. Okt 2004 09:44

Re: Form mit bsToolWindow-BorderStyle und Height := 0
 
Yup, I know. tHx für den Link, auf der Seite war ich vorher noch nicht. Hab das grad mal bisschen überflogen, die Frage die sich dabei jetzt aber stellt ist: Wie setz ich das in Delphi um und krieg da auch die Kompos drauf, die ich haben will? Bisher war mir "nonVCL" ein Buch mit sieben Siegeln und hab's vermieden, wo ich konnte. ;)

Grüße,
Mario

himitsu 12. Okt 2004 09:55

Re: Form mit bsToolWindow-BorderStyle und Height := 0
 
Notfalls könntest du ja noch mir Regions den unteren Teil des Fensters abschneiden.

z.B.
Delphi-Quellcode:
Procedure TForm1.FormCreate(Sender: TObject);
  Begin
    SetWindowRgn(Handle, CreateRectRgn(0, 0, Width, 22), True);
  End;

Stevie 12. Okt 2004 09:58

Re: Form mit bsToolWindow-BorderStyle und Height := 0
 
Hmm, scheint aber auch nicht zu funktionieren, wenn man diese Klasse in CreateWindowsEx benutzt...

LUUUCKIEEEE!!!

Stevie 12. Okt 2004 10:01

Re: Form mit bsToolWindow-BorderStyle und Height := 0
 
Zitat:

Zitat von himitsu
Notfalls könntest du ja noch mir Regions den unteren Teil des Fensters abschneiden.

Baaahh, wie hässlich!!! :mrgreen:

Nuclear-Ping 12. Okt 2004 10:16

Re: Form mit bsToolWindow-BorderStyle und Height := 0
 
Hehe, yo, mit SetWindowRgn (Handle, CreateRectRgn (0, 0, Width, GetSystemMetrics (SM_CYCAPTION)), True) schneidet er's genau bis unter die Titelleiste ab, aber es sieht dann auch entsprechend abgeschnitten aus. :zwinker:

Bild (mit SetWindowRgn):
http://www.open-ware.de/tmp/bsToolWin_Cut.jpg

toms 12. Okt 2004 12:16

Re: Form mit bsToolWindow-BorderStyle und Height := 0
 
So, habe damit ein wenig herumgespielt un habe ein Lösung entdeckt.
Deklariere einfach einen WM_WINDOWPOSCHANGING handler und mache dort nichts.
Dann kannst du eine beliebige Höhe setzen.
Frag mich bitte nicht warum das so funktioniert....

Delphi-Quellcode:
  private
    { Private declarations }
    procedure PosChange(var Msg: TWmWindowPosChanging);
  message WM_WINDOWPOSCHANGING;

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   Height := GetSystemMetrics(SM_CYCAPTION) // + - dy ???;
end;

procedure TForm1.PosChange (var Msg: TWmWindowPosChanging);
begin

end;

Stevie 12. Okt 2004 12:29

Re: Form mit bsToolWindow-BorderStyle und Height := 0
 
Zitat:

Zitat von toms
So, habe damit ein wenig herumgespielt un habe ein Lösung entdeckt.
Deklariere einfach einen WM_WINDOWPOSCHANGING handler und mache dort nichts.
Dann kannst du eine beliebige Höhe setzen.
Frag mich bitte nicht warum das so funktioniert....

SAUBER!!! :thumb:
Ich kann dir sagen, warum: Weil dann nicht überprüft wird, ob das Fenster nicht die Mindestgröße unterschreitet.

P.S: Besser wär so:
Delphi-Quellcode:
procedure TForm1.WMWindowPosChanging(var Message: TWMWindowPosChanging);
begin
  if BorderStyle <> bsToolWindow then
    inherited;
end;

toms 12. Okt 2004 12:35

Re: Form mit bsToolWindow-BorderStyle und Height := 0
 
Zitat:

Height := GetSystemMetrics(SM_CYCAPTION) // + - dy ???;
Noch gibt's noch ein kleines Problem. Wenn die Höhe der Form gleich
GetSystemMetrics(SM_CYCAPTION) gesetzt wird, sieht man noch einen Teil der Form (etwa 2 Pixel)
Wenn ich den klassischen Style von Windows aktivert habe, dann stimmts glaub, wenn ich mich recht erinnere.

Stevie 12. Okt 2004 12:37

Re: Form mit bsToolWindow-BorderStyle und Height := 0
 
Delphi-Quellcode:
ClientHeight := 0;
wär doch richtig, oder?

toms 12. Okt 2004 12:42

Re: Form mit bsToolWindow-BorderStyle und Height := 0
 
Zitat:

ClientHeight := 0;
Ja klar! Hmm, funktioniert aber nur im XP Style aber im klassischen Style erscheint dann die Titelbar einige Pixel zu klein,
resp. abgeschnitten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 Uhr.
Seite 2 von 3     12 3      

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