AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Titelleiste der Form ausblenden, aber Rahmen beibehalten
Thema durchsuchen
Ansicht
Themen-Optionen

Titelleiste der Form ausblenden, aber Rahmen beibehalten

Ein Thema von Keks · begonnen am 15. Nov 2009 · letzter Beitrag vom 30. Nov 2014
Antwort Antwort
Seite 2 von 3     12 3      
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#11

Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten

  Alt 28. Mär 2010, 01:13
Du könntest auch einfach mal versuchen mit einem Tool wie WinSpy die Style-Eigenschaften des Beispielfensters aus dem 1. Beitrag auszulesen.
  Mit Zitat antworten Zitat
Keks

Registriert seit: 25. Mai 2005
122 Beiträge
 
#12

Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten

  Alt 28. Mär 2010, 01:34
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#13

Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten

  Alt 28. Mär 2010, 09:36
Zitat von NamenLozer:
[edit]
Ach sorry, hab nicht gelesen, dass es nicht in der Größe veränderbar sein darf.
[/edit]
Für sowas gibt es auch noch die Constraints.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#14

Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten

  Alt 28. Mär 2010, 10:41
Eine weitere Möglichkeit wäre folgende: (Auch hier ist aber mindestens Delphi 2007 erforderlich)

Delphi-Quellcode:
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;
Dies erzeugt dann zunächst mal ein rahmenloses Fenster. Der Glassrahmen wird dann mit Hilfe der Eigenschaft "Glassframe" wieder hinzugefügt.

Edit:
Delphi-Quellcode:
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;
Edit:
Bei älteren Delphi-Version muss man vermutlich die Funktion "DwmExtendFrameIntoClientArea" bemühen, um den Glassrahmen in dem Clientbereich zu erzeugen.
Angehängte Dateien
Dateityp: zip specialwindow2_687.zip (219,1 KB, 40x aufgerufen)
  Mit Zitat antworten Zitat
Keks

Registriert seit: 25. Mai 2005
122 Beiträge
 
#15

Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten

  Alt 29. Mär 2010, 00:13
Zitat von samso:
Bei älteren Delphi-Version muss man vermutlich die Funktion "DwmExtendFrameIntoClientArea" bemühen, um den Glassrahmen in dem Clientbereich zu erzeugen.
Ich verwende Delphi 2006 Pro. GlassFrame habe ich also nicht zur Verfügung. Mit DwmExtendFrameIntoClientArea habe ich jetzt ein bisschen herumgespielt, aber damit bekomme ich das auch nicht hin. Ich war zwar soweit, dass ich den Glas-Rand überall auf 5px gesetzt habe, aber dann waren am oberen Rand die drei Buttons auf der rechten Seite immer noch vorhanden, aber halbwegs schön auf 5px verkleinert ... dafür ohne Funktion.
Kannst Du das bei Dir mal testen, ob Du das geschickter hinbekommst?
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#16

Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten

  Alt 29. Mär 2010, 02:59
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:
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;
Wie der "originale" Windowsstyle ist kann man leider nur vermuten, da es sich nicht um irgend welche
besonderen Windowsstyle-Eigenschaften handelt (Bild).
Möglicher weise wird das MS so oder anders machen...
Miniaturansicht angehängter Grafiken
bild_869.jpg  
Angehängte Dateien
Dateityp: zip testproject_157.zip (157,8 KB, 88x aufgerufen)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Keks

Registriert seit: 25. Mai 2005
122 Beiträge
 
#17

Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten

  Alt 29. Mär 2010, 03:33
Jaaa! Perfekt, vielen, vielen Dank!
Sieht sogar in XP noch vernünftig aus.
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE.Y85
MuTzE.Y85

Registriert seit: 11. Apr 2006
152 Beiträge
 
#18

AW: Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten

  Alt 14. Mai 2013, 11:14
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:

Delphi-Quellcode:
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_SIZEBOX or WS_BORDER or WS_MINIMIZEBOX;
  Params.ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST or WS_EX_WINDOWEDGE;
end;

procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin
  inherited;
  Message.Result := htClient;
end;
EDIT: Wenn ein Eintrag in der Taskleiste gewünscht ist, dann einfach noch "WS_EX_APPWINDOW" hinzufügen.
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;
LAN-PC: C2Q Q9550 @ 4004 MHz @ 1.232 V @ Mugen 2 | DFI LANParty JR P45-T2RS | G.Skill 4GB DDR2-1000 CL5 | ZOTAC GTX 280 @ GTX 285 @ 1.06 V | WD Caviar Blue 320GB / WD Caviar Black 640GB | BeQuiet DPP P7 450W | Antec Mini P180

Geändert von MuTzE.Y85 (14. Mai 2013 um 12:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von 010101
010101

Registriert seit: 27. Nov 2014
34 Beiträge
 
#19

AW: Titelleiste der Form ausblenden, aber Rahmen beibehalten

  Alt 28. Nov 2014, 12:17
das hier klappt gut beim xp...

http://www.delphipraxis.net/379391-post1.html

gibt es auch ne möglichkeit den windows rahmen bei der MessageDlgPos wegzubekommen?


mfg
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: Titelleiste der Form ausblenden, aber Rahmen beibehalten

  Alt 28. Nov 2014, 12:19
Alos den Rahmen ausblenden, diesen aber trotzdem anzeigen?
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:21 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