放一個 Memo(在 Standard 頁), 一個 StatusBar(在 Win32 頁), 並將 StatusBar 的 Panel 分成三部份
procedure TForm1.StatusBar1Click(Sender: TObject); var mpoint: TPoint; x, i, panel: integer; begin // StatusPanels 未分區 或 StatusBar 的 SimplePanel 設為 true if (StatusBar1.SimplePanel) or (StatusBar1.Panels.Count=0) then begin Memo1.Lines.Add('StatusBar 未分區') ; exit; end; // 取得滑鼠在整個螢幕的座標 mpoint := Mouse.CursorPos; // 將滑鼠位置由整個螢幕座標轉換為 StatusBar 內座標 mpoint := StatusBar1.ScreenToClient(mpoint) ; panel := -1; x := 0; for i := 0 to StatusBar1.Panels.Count - 1 do begin x := x + StatusBar1.Panels[i].Width; if mpoint.X < x then begin panel := i; break; end; end; // 若滑鼠點在最後一區之外 // 則當做點在最後一區處理 if panel = -1 then panel := -1 + StatusBar1.Panels.Count; Memo1.Lines.Add(Format('滑鼠點在第 %d 區',[panel])) ; end;
沒有留言:
張貼留言