Mit Delphi möchte ich eine weitere Schaltfläche zu den Rahmensymbolschaltflächen hinzufügen; schließen, maximieren, minimieren. Irgendwelche Ideen, wie man das macht?Hinzufügen eines Rahmensymbols zum Formular
Antwort
Dies war vor Windows Aero einfach zu tun. Sie mussten einfach die Nachrichten WM_NCPAINT
und WM_NCACTIVATE
hören, die über die Titelleiste gezeichnet wurden, und in ähnlicher Weise könnten Sie die anderen WM_NC*
Nachrichten verwenden, um auf Mausklicks usw. zu reagieren, insbesondere WM_NCHITTEST
, WM_NCLBUTTONDOWN
und WM_NCLBUTTONUP
.
Zum Beispiel eine Zeichenfolge auf der Titelleiste ziehen, mußte man nur
tutunit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
protected
procedure WMNCPaint(var Msg: TWMNCPaint); message WM_NCPAINT;
procedure WMNCActivate(var Msg: TWMNCActivate); message WM_NCACTIVATE;
private
procedure DrawOnCaption;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.WMNCActivate(var Msg: TWMNCActivate);
begin
inherited;
DrawOnCaption;
end;
procedure TForm1.WMNCPaint(var Msg: TWMNCPaint);
begin
inherited;
DrawOnCaption;
end;
procedure TForm1.DrawOnCaption;
var
dc: HDC;
begin
dc := GetWindowDC(Handle);
try
TextOut(dc, 20, 2, 'test', 4);
finally
ReleaseDC(Handle, dc);
end;
end;
end.
Nun, dies funktioniert nicht mit Aero aktiviert. Dennoch gibt es eine Möglichkeit, die Beschriftungsleiste zu zeichnen. Ich habe das gemacht, aber es ist viel komplizierter. Ein Arbeitsbeispiel finden Sie unter this article.
Ja, legen Sie die border style-Eigenschaft des Formulars auf bsNone fest und implementieren Sie Ihre eigene Titelleiste mit allen Schaltflächen und benutzerdefiniertem Verhalten, die Sie mögen.
Chris Rolliston hat einen ausführlichen Blog über creating a custom title bar on Vista and Windows 7 geschrieben.
Er schrieb auch eine follow up article und veröffentlichte Beispielcode auf CodeCentral.
- 1. Simple_form Klasse zum Formular hinzufügen
- 2. Ziehen eines TButton vom Formular zum Formular
- 3. Formularfelder dynamisch zum Django-Formular hinzufügen
- 4. Hinzufügen eines Feldes zu einem Formular (jQuery)
- 5. Klassenbasierte Ansicht, Daten zum Formular hinzufügen
- 6. Hinzufügen von jSignature zum Bootstrap-Formular
- 7. Hinzufügen eines Platzhalterattributs in Django-Formular
- 8. Hinzufügen eines Werts zu einem dynamischen Formular
- 9. Hinzufügen eines Klickereignisses zum Vollkalender
- 10. Hinzufügen eines Elements zum Anfang eines Gruppenelements
- 11. MVC-Formular zum Aktualisieren eines Bildes
- 12. erstellen Formular zum Hinzufügen von Datensätzen in mehreren Tabellen
- 13. Zope-Formular: Hinzufügen einer Schaltfläche zum automatischen Füllen einiger Felder
- 14. Hinzufügen eines NSProgressIndicators zum Dock-Symbol
- 15. Hinzufügen eines Treibers zum Gerätepfad UEFI
- 16. Hinzufügen eines Objekts zum Auflisten in scala
- 17. Hinzufügen eines Bildes zum Plotten in R
- 18. Hinzufügen eines Start-/Titelbildschirms zum Pygame-Code
- 19. Hinzufügen eines Filters zum Projektexplorer in Eclipse
- 20. Hinzufügen eines Ereignishandlers zum ausgewählten Bereich
- 21. Hinzufügen von Schaltflächen zum Steuerfeld eines Formulars?
- 22. Perforce Hinzufügen eines Ordners zum Depot
- 23. Hinzufügen eines virtuellen Gastes zum Bandbreitenpool
- 24. Hinzufügen eines Python-Daemon zum systemd
- 25. Hinzufügen eines serverseitigen Ereignisses zum Extender-Steuerelement
- 26. drupal ----- Hinzufügen eines Felds zum Inhaltstyp Geschichte
- 27. Hinzufügen eines oberen Randes zum Flex-Zentrieren
- 28. Hinzufügen eines vorhandenen DataSet zum Bericht. RDLC
- 29. Hinzufügen eines Verzeichnisses zum Ladepfad in Rails?
- 30. Hinzufügen eines Kontextmenüs nur zum Expander-Header