首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 打造 Photoshop 風格彈出面板:無邊框視窗與滑鼠座標定位技巧

     編輯:Delphi

效果預覽

點擊按鈕 → 無標題列、無邊框視窗出現在滑鼠游標位置 → 點擊視窗外任意處自動關閉,完美模擬 PS 筆刷/圖層樣式選單。

Photoshop 筆刷選單風格

實作步驟

  1. 主表單放置 TButton(Button1)。
  2. 新增 Form2,設定:
    • BorderStyle := bsNone(移除標題列與邊框)。
    • 放置 TPanel (Panel1),Align := alClient,BevelInner := bvRaised、BevelOuter := bvRaised 模擬立體邊框。
    • 在 Panel1 內自由佈局按鈕、圖片、色板等控件。
  3. Unit1 的 implementation 區 uses Unit2。
  4. Button1.OnClick:
    procedure TForm1.Button1Click(Sender: TObject);
    var Pt: TPoint;
    begin
      GetCursorPos(Pt);           // 取得螢幕座標
      Form2.Left := Pt.X;
      Form2.Top  := Pt.Y;
      Form2.Show;                 // 非模態顯示
    end;
  5. Form2.OnDeactivate:
    procedure TForm2.FormDeactivate(Sender: TObject);
    begin
      Close;                      // 失去焦點即關閉
    end;

進階強化

  • 動畫展開:AnimateWindow(Handle, 150, AW_SLIDE or AW_VER_POSITIVE)。
  • 螢幕邊界修正:若 Left + Width > Screen.Width 則 Left := Screen.Width - Width,同理 Top。
  • 多螢幕支援:使用 MonitorFromPoint 取得對應監視器工作區。
  • 鍵盤導航:KeyPreview := True,Esc 關閉,方向鍵切換項目。
  • 自訂繪製:Panel 改用 TPaintBox + OnPaint 繪製圓角、陰影、漸層背景。

對比:TPopupMenu vs 自訂 Form

特性TPopupMenu自訂 Form (bsNone)
外觀自訂受限於系統主題完全自由(圓角、陰影、動畫)
控件類型僅選單項任意 VCL 控件
焦點行為點外自動關閉需手動處理 Deactivate
多螢幕自動處理需自行邊界修正
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved