![]() |
Titelleiste der Form ausblenden, aber Rahmen beibehalten
Ich würde gerne die Titelleiste einer Form ausblenden, den Rahmen und Schatten aber beibehalten (Vista/7).
Gleichzeitig darf der Besucher die Formgröße nicht ändern können (Mouseover am Rand soll gar nicht erst die Resize-Mausicons zeigen). Hier ein Beispiel aus Windows7: ![]() Ich habe mich jetzt durch diverse Beispiele und Forumseinträge gewälzt und bekomme das nicht hin. Entweder es ist alles weg, oder mit Darstellungsfehlern oder die Größe bleibt änderbar... Jemand eine konkrete Lösung? |
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Hast Du hierfür eine Lösung gefunden? ich stehe derzeit vor dem gleichen Problem,
Viele Grüße. |
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Nein, leider nicht. Ich habe es vorerst aufgeschoben und mich an andere Baustellen gemacht, weil ich keine Lösung dafür hatte.
Für Lösungsvorschläge wäre ich immer noch sehr dankbar. |
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Hallo,
Form ohne Leisten BorderStyle auf bsNone setzen und auf die Form ein Bild mit den Rändern plazieren? Grüße Klaus |
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Hallo Klaus,
das ist keine wirkliche Lösung, oder willst du für jedes Windows Layout was es inzwischen gibt ein Bild nachzeichnen und dann alles hin und herschalten? Viele Grüße. |
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Damit geht die Titelleiste weg ... aber so richtig hübsch sieht es noch nicht aus
Delphi-Quellcode:
procedure TForm1.FormCreate( Sender : TObject );
begin SetWindowLong( Handle, GWL_STYLE, GetWindowLong( Handle, GWL_STYLE ) and not WS_CAPTION ); ClientHeight := Height; end; |
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Liste der Anhänge anzeigen (Anzahl: 1)
Meine Idee dazu ist, das vorhandene Hauptfenster durch ein weiteres (rahmenloses) Fenster zu verdecken. Die Größe des zweiten Formulars muss dann entsprechend angepasst werden. Das Ganze ist bestimmt noch optimierbar, aber vielleicht hilft das ja schon weiter. Anbei kleine Demo (getestet mit Delphi 2007+2009). Hier ein Auszug, der das Grundprinzip zeigt:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin Form2 := TForm2.Create(Self); ResizeClientForm; Form2.Show; end; procedure TForm1.ResizeClientForm; begin if Assigned(Form2) then begin Form2.SetBounds(Left + Glassframe.Left, Top + Glassframe.Top, ClientWidth, ClientHeight + GetSystemMetrics(SM_CYCAPTION)); end; end; procedure TForm1.WMMove(var msg: TWMMove); begin ResizeClientForm; end; |
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Meine Lösung:
Delphi-Quellcode:
[edit]
procedure TfrmMain.FormCreate(Sender: TObject);
var lStyle: cardinal; begin lStyle := WS_POPUP or WS_THICKFRAME; SetWindowLong(Handle, GWL_STYLE, lStyle); SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or SWP_NOMOVE or SWP_NOREPOSITION or SWP_NOSIZE or SWP_NOACTIVATE); end; Ach sorry, hab nicht gelesen, dass es nicht in der Größe veränderbar sein darf. [/edit] |
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
@NamenLozer
Also das geht ja schon in die richtige Richgung. Es müsste ja "nur" noch das Resizen deaktiviert werden. Jetzt habe ich eine halbe Stunde lang mit den ganzen WS_... Werten herumgespielt. Aber entweder es war kein Rahmen mehr da, es war nur der Rahmen da aber mit Resize oder es war der Rahmen da ohne Resize, aber dafür mit Programmleiste oben. Irgendwo muss doch da der Trick sein... Vielleicht hat ja jemand mehr Erfolg beim Ausprobieren... |
Re: Titelleiste der Form ausblenden, aber Rahmen beibehalten
Probier mal lStyle := WS_DLGFRAME
Grüsse, Dirk |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 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