Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Titelleiste! (https://www.delphipraxis.net/2985-titelleiste.html)

fedderle 17. Feb 2003 08:52


Titelleiste!
 
Hallo.

Hab für ein kleines Schulreferath mir die Prozeduren angeschaut, mit denen man die Form eines Programm verändern kann. Das ganze mit der veränderten Form sieht aber nur gut aus, wenn man die Titelleiste des Programms ausblendet. Aber dann kann man das Programm nicht mehr verschieben.
Kann man also irgendwie die Titelleiste so verändern, das diese zum Beispiel eine andere Farbe hat. Oder noch besser wäre, wenn man selbst eine Titelleiste festlegen könnte bzw. in der Form oben einen Streifen definieren könnte, mit dem man das Programm verschieben kann!

Steffen!

janjan 17. Feb 2003 09:05

Fenster verschieben ohne Titelleiste:
http://www.delphipraxis.net/viewtopic.php?t=133

Form des Fensters:
http://www.delphipraxis.net/viewtopic.php?t=52
http://www.delphipraxis.net/viewtopic.php?t=79

Titel selber malen:
http://www.delphipraxis.net/viewtopic.php?t=3250
http://www.scalabium.com/faq/dct0059.htm
http://homepages.borland.com/efg2lab...2001/0816b.txt
http://homepages.borland.com/efg2lab...1999/0516c.txt

jbg 17. Feb 2003 09:18

Möglich ist alles. Die Farbe und Größe kannst du nur global über die Bildschirmeinstellungen ändern. Das ist aber sicherlich nicht dein Ziel.

Die andere Möglichkeit mit der eigenen Titelleiste ist da schon besser.

Hier mal ein kleiner Code:
Delphi-Quellcode:
  TForm1 = class(TForm)
    PanelFormMover: TPanel;
...
    { Private-Deklarationen }
    FMoveStartPos: TPoint;
    FFormMoving: Boolean;
  end;

...

procedure TForm1.PanelFormMoverMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
  begin
    FFormMoving := True;
    FMoveStartPos := Point(X, Y);
  end;
end;

procedure TForm1.PanelFormMoverMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  if FFormMoving then
    SetWindowPos(Handle, 0,
                 Left + (X - FMoveStartPos.X),
                 Top + (Y - FMoveStartPos.Y),
                 0, 0, SWP_NOSIZE or SWP_NOZORDER);
end;

procedure TForm1.PanelFormMoverMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
    FFormMoving := False;
end;
Das Panel PanelFormMover kannst du an jeder beliebigen Stelle des Formulars setzen. Du kannst anstatt eines Panels auch jede andere Komponente verwenden, die die Ereignisse OnMouseDown, OnMouseMove und OnMouseUp unterstützt.


Die Lösung über die Botschaft WM_NCHITTEST funktioniert nicht im Zusammenhang mit Controls, die das Verschieben möglich machen sollen, da WM_NCHITTEST nur gesendet wird, wenn der Mousecursor direkt über dem Formular ist, und das ist er bei einer darauf liegenden Komponente eben nicht.

fedderle 17. Feb 2003 09:56

Danke!

Funktioniert perfekt. Genaus so wollt ich es haben! :D

Steffen!

BrainCode 17. Feb 2003 13:14

Kann ich über via WM_NCPAINT auch den Effekt erzeugen, den Word 95 in seiner Titelleiste hat? Für alle, die das Programm nicht kennen: Die Titelleiste sieht so aus:

Microsoft Word 95

(so in etwa :wink: )

Luckie 17. Feb 2003 15:02

Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang ein Projekt, mit einer roten Titelleiste und einen eigenen Bitmap als Schließen-Button.

jbg 17. Feb 2003 15:24

Der Nebeneffekt bei WinXP mit aktiviertem Themes kann man sich dann anschauen. Meine Gradient-Form Unit mustere ich zur Zeit wegen diesem Problem aus.

Luckie 17. Feb 2003 15:36

Jupp, deswegen lasse ich solche Spielereien auch immer.

Sharky 18. Feb 2003 11:48

Zitat:

Zitat von Luckie
Im Anhang ein Projekt, mit einer roten Titelleiste und einen eigenen Bitmap als Schließen-Button.

Hai Luckie,

kannst Du mir einen Tip geben wie ich noch die beiden Buttons für minimieren und maximieren in die Titelleite bekomme?

Luckie 18. Feb 2003 13:12

Stell sie doch einfach im OI ein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:22 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