![]() |
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Du könntest auch einfach mal versuchen mit einem Tool wie
![]() |
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Wenn ich da bei "Styles" schaue, steht da "noch nicht implementiert"... Oder übersehe ich, wo das stehen könnte?
Ich hatte vorhin noch "Winspector" versucht, aber da konnte ich das Fenster nicht auswählen, weil sich das immer automatisch schließt, sobald man außerhalb klickt und ich wusste nicht, wie man das sonst auswählen könnte. Wenns jemand anders ausprobieren möchte: Das besagte Fenster kommt, wenn man in Win7 auf ein Icon in der Taskleiste rechtsklickt oder wenn man auf die Uhr linksklickt. (gibt natürlich noch mehr Möglichkeiten). Das mit der Uhr könnte übrigens auch in Vista gehen, bin mir aber nicht mehr sicher. |
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Zitat:
|
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Liste der Anhänge anzeigen (Anzahl: 1)
Eine weitere Möglichkeit wäre folgende: (Auch hier ist aber mindestens Delphi 2007 erforderlich)
Delphi-Quellcode:
Dies erzeugt dann zunächst mal ein rahmenloses Fenster. Der Glassrahmen wird dann mit Hilfe der Eigenschaft "Glassframe" wieder hinzugefügt.
type
TForm1 = class(TForm) procedure WMNCCALCSIZE(var msg: TWMNCCalcSize); message WM_NCCALCSIZE; public end; .... procedure TForm1.WMNCCALCSIZE(var msg: TWMNCCalcSize); begin msg.CalcValidRects := True; msg.Result := 0; end; Edit:
Delphi-Quellcode:
Edit:
procedure TForm1.FormShow(Sender: TObject);
begin if IsCompositionActive //Aero aktiv? then begin GlassFrame.Enabled := True; GlassFrame.Left := GetSystemMetrics(SM_CXSIZEFRAME); GlassFrame.Right := GetSystemMetrics(SM_CXSIZEFRAME); GlassFrame.Top := GetSystemMetrics(SM_CYSIZEFRAME); GlassFrame.Bottom := GetSystemMetrics(SM_CYSIZEFRAME); end; end; Bei älteren Delphi-Version muss man vermutlich die Funktion "DwmExtendFrameIntoClientArea" bemühen, um den Glassrahmen in dem Clientbereich zu erzeugen. |
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Zitat:
Kannst Du das bei Dir mal testen, ob Du das geschickter hinbekommst? |
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Liste der Anhänge anzeigen (Anzahl: 2)
Eigentlich ist das doch recht einfach zu erstellen.
Dazu den Borderstyle im OI auf bsNone stellen und die Form der Form von Hand festlegen.
Delphi-Quellcode:
Wie der "originale" Windowsstyle ist kann man leider nur vermuten, da es sich nicht um irgend welche
type
TForm1 = class(TForm) // ... private { Private-Deklarationen } public { Public-Deklarationen } procedure CreateParams(var Params: TCreateParams); override; procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; end; // ... implementation // ... procedure TForm1.CreateParams(var Params: TCreateParams); begin inherited; Params.Style := WS_POPUP or WS_THICKFRAME; Params.ExStyle := WS_EX_TOOLWINDOW; end; procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest); begin inherited; Message.Result := htClient; end; besonderen Windowsstyle-Eigenschaften handelt (Bild). Möglicher weise wird das MS so oder anders machen... ;) |
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Jaaa! Perfekt, vielen, vielen Dank! :D
Sieht sogar in XP noch vernünftig aus. |
AW: Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
turboPASCAL genau das habe ich gesucht! :)
Ich danke dir! Ich habe mir das Fenster der Tray Apps nochmal angesehen. Macht optisch keinen Unterschied, aber es ist genau so eingestellt: Zitat:
Code:
procedure TForm1.CreateParams(var Params: TCreateParams);
begin inherited; Params.Style := WS_POPUP or WS_THICKFRAME or WS_DLGFRAME or WS_MINIMIZEBOX; Params.ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST or WS_EX_WINDOWEDGE or WS_EX_APPWINDOW; end; |
AW: Titelleiste der Form ausblenden, aber Rahmen beibehalten
das hier klappt gut beim xp...
![]() gibt es auch ne möglichkeit den windows rahmen bei der MessageDlgPos wegzubekommen? mfg |
AW: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Alos den Rahmen ausblenden, diesen aber trotzdem anzeigen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:57 Uhr. |
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