Używanie Delphi Chciałbym dodać kolejny przycisk do przycisków ikony granicy; zamknij, zmaksymalizuj, zminimalizuj. Wszelkie pomysły, jak to zrobić?Dodaj ikonę granicy do formularza
Odpowiedz
To było łatwe do zrobienia przed Windows Aero. Po prostu musieliście posłuchać wiadomości WM_NCPAINT
i WM_NCACTIVATE
, aby narysować na górze paska napisów, i podobnie moglibyście użyć innych komunikatów WM_NC*
, aby odpowiedzieć na kliknięcia myszy itp., W szczególności WM_NCHITTEST
, WM_NCLBUTTONDOWN
i WM_NCLBUTTONUP
.
Na przykład, aby narysować napis na pasku tytułowym, trzeba było tylko zrobić
unit 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.
Teraz to nie działa z włączonym Aero. Mimo to istnieje sposób na wykorzystanie paska napisów; Zrobiłem to, ale jest to o wiele bardziej skomplikowane. Zobacz this article dla przykładu roboczego.
Tak, ustaw właściwość stylu krawędzi na bsNone i zaimplementuj własny pasek tytułu ze wszystkimi przyciskami i niestandardowym zachowaniem, które lubisz.
Chris Rolliston napisał szczegółowy blog o creating a custom title bar on Vista and Windows 7.
Napisał również kod follow up article i wysłał przykładowy kod pod numer CodeCentral.
- 1. panel Dodaj do granicy ggplot2
- 2. dodaj formant użytkownika do formularza
- 3. Dodaj ikonę do kontekstowego menu podrzędnego
- 4. Dodaj metodę pomocniczą formularza
- 5. Dodaj błąd do elementu formularza Symfony 2
- 6. Symfony2 dodaj pole reCaptcha do formularza rejestracyjnego
- 7. Dodaj atrybut klasy do formularza Błędy
- 8. Dodaj czcionki niesamowite ikonę pełny tytuł kalendarzowego
- 9. Dodaj ikonę wyszukiwania na pasku działań Android
- 10. Jak zmienić ikonę „Dodaj lub usuń programy”
- 11. Dodaj ikonę z tytułem w CollapsingToolbarLayout
- 12. Dodaj ikonę do istniejącego pliku EXE z wiersza polecenia
- 13. Dodaj ikonę svg do przycisku z css/html?
- 14. Dodaj ikonę do opcji jonowej w wyborze jonów
- 15. forma kątowa: Dodaj niestandardowy html do pól formularza
- 16. Dodaj podformularza do formularza z ajax na przedstawienia
- 17. Dodaj pole CCK do formularza niestandardowego w Drupal 7
- 18. Dodaj detektor zdarzeń do elementu formularza dodanego przez detektor zdarzeń
- 19. Programowo dodaj obramowanie do LinearLayout
- 20. php/html formularza dodaj dodatkowe wartości
- 21. Dodaj ikonę w prawym dolnym rogu InboxStyle powiadomienia
- 22. Dodaj ikonę wyszukiwania na końcu grupy wejściowej IN bootstrap 3
- 23. Dodaj do Laravelcollective ikona przycisku
- 24. UILabel kolor tła Przecieki do granicy
- 25. Jak wyciąć tablicę Numpy do granicy?
- 26. Używanie rozmiarów skrzynek do utworzenia wewnętrznej granicy
- 27. Podgląd formularza Django - Dodawanie użytkownika do formularza przed zapisaniem
- 28. Wypełnienie na granicy div
- 29. O dolnej granicy Scala
- 30. Generowanie wieloczęściowej granicy