AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Titelleiste!

Ein Thema von fedderle · begonnen am 17. Feb 2003 · letzter Beitrag vom 18. Feb 2003
Antwort Antwort
fedderle

Registriert seit: 3. Jan 2003
Ort: Reiskirchen
51 Beiträge
 
#1

Titelleiste!

  Alt 17. Feb 2003, 09:52
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!
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3
  Alt 17. Feb 2003, 10: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.
  Mit Zitat antworten Zitat
fedderle

Registriert seit: 3. Jan 2003
Ort: Reiskirchen
51 Beiträge
 
#4
  Alt 17. Feb 2003, 10:56
Danke!

Funktioniert perfekt. Genaus so wollt ich es haben!

Steffen!
  Mit Zitat antworten Zitat
Benutzerbild von BrainCode
BrainCode

Registriert seit: 18. Jan 2003
119 Beiträge
 
#5
  Alt 17. Feb 2003, 14: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 )
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 17. Feb 2003, 16:02
Im Anhang ein Projekt, mit einer roten Titelleiste und einen eigenen Bitmap als Schließen-Button.
Angehängte Dateien
Dateityp: zip wm_ncpaint.zip (192,7 KB, 95x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7
  Alt 17. Feb 2003, 16: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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8
  Alt 17. Feb 2003, 16:36
Jupp, deswegen lasse ich solche Spielereien auch immer.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#9
  Alt 18. Feb 2003, 12:48
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?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10
  Alt 18. Feb 2003, 14:12
Stell sie doch einfach im OI ein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:59 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