愛招飛幫助手冊 愛招飛幫助手冊
  • FastERP-1
  • Smart
  • PinToo
  • FastWeb
  • FastERP-2 企業管理系統 (opens new window)
  • 印染業ERP (opens new window)
  • 工廠終端機 (opens new window)
  • TARS
  • MARS
  • TaskRunner
  • Flying
  • FastDesk
  • HiDesk
  • HiNAT
  • FastBPM
  • 設備故障診斷 (opens new window)
  • 設備最佳運轉效益 (opens new window)
  • 企業智能助手SmeGPT (opens new window)
  • 燈號管理 (opens new window)
  • 戰情室 (opens new window)
  • 能源管理 (opens new window)
  • 人車定位 (opens new window)
  • 戰情指揮系統 (opens new window)
  • FastERP-1
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
  • FastERP-1
  • Smart
  • PinToo
  • FastWeb
  • FastERP-2 企業管理系統 (opens new window)
  • 印染業ERP (opens new window)
  • 工廠終端機 (opens new window)
  • TARS
  • MARS
  • TaskRunner
  • Flying
  • FastDesk
  • HiDesk
  • HiNAT
  • FastBPM
  • 設備故障診斷 (opens new window)
  • 設備最佳運轉效益 (opens new window)
  • 企業智能助手SmeGPT (opens new window)
  • 燈號管理 (opens new window)
  • 戰情室 (opens new window)
  • 能源管理 (opens new window)
  • 人車定位 (opens new window)
  • 戰情指揮系統 (opens new window)
  • FastERP-1
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
  • Smart幫助主頁
  • 學習手冊

    • 基本入門

    • 功能介紹

    • 控制元件說明

      • 公共屬性
      • 公共方法
      • 公共事件
        • 1. 公用事件
          • 1.1. OnCanResize事件
          • 1.2. OnChange事件
          • 1.3. OnClick事件
          • 1.4. OnDblClick事件
          • 1.5. OnDragDrop事件*
          • 1.6. OnDragOver事件*
          • 1.7. OnEnter 事件
          • 1.8. OnKeyDown事件
          • 1.9. OnKeyPress事件
          • 1.10. OnKeyUp事件
          • 1.11. OnMouseDown事件
          • 1.12. OnMouseMove事件
          • 1.13. OnMouseUp事件
          • 1.14. OnStartDrag事件*
          • 1.15. OnShow事件*
          • 1.16. OnClose事件*
          • 1.17. OnActivate事件*
      • 視窗控制元件
      • 系統控制元件
      • 標準控制元件
      • 對話方塊控制元件
      • 標準工控控制元件
      • 專業工控控制元件
      • 數據控制控制元件
      • 數據表格控制元件
      • 數據感知控制元件
      • 通訊控制控制元件
      • 儀表採集控制元件
      • 監控視訊控制元件
      • 數據圖表控制元件
      • 流程圖表控制元件
      • 數據分析控制元件
      • 複合數控控制元件
      • 模擬數控控制元件
      • 調節數控控制元件
      • 數位數控控制元件
      • 數據數控控制元件
      • 地圖控制元件
      • 其他控制元件
      • SVG控制元件
      • IsoBean控制元件
      • 樣式控制元件
      • 樣式外觀控制元件
      • 樣式高級控制元件
      • 樣式工具控制元件
      • 樣式數據控制元件
      • 樣式控制元件GP
      • 樣式數據控制元件GP
    • 功能用法

    • 專用模板

    • 開發流程

    • 函式程式

  • 開發手冊

目录

公共事件

# Smart 公共事件


# 1. 公用事件

  有些事件對所有元件都是通用的,這些事件可以是與鍵盤有關的事件,也可以是與游標輸入有關的事件,還可以是由於元件本身的狀態改變(屬性)或由於元件發生了某種行為(操作)而觸發的事件。其中與鍵盤和游標相關的事件常常是大多陣列件共有的事件,下表列出了 其中的一些事件及說明。

事件 適用範圍 觸發條件
OnCanResize 很多元件 發生在元件大小改變時,並允許使用者停止操作
OnChange 很多元件 發生在對像或其他數據改變時
OnClick 大部分元件 發生在用滑鼠單擊元件時
OnDblClick 很多元件 發生在用滑鼠雙擊元件時
OnDragDrop 大部分元件 發生在停止拖動元件時
OnDragOver 大部分元件 發生在用滑鼠拖動元件時
OnEnter 視窗元件 發生在元件被啟用時,即元件接受焦點時
OnKeyDown 視窗元件 發生在按住鍵不鬆開時,該箏件向具有輸入焦點的元件發送
OnKeyPress 視窗元件 發生在按鍵過程中,該事件向具有輸入焦點的元件發送
OnKeyUp 視窗元件 發生在鬆開鍵時,該事件向具有輸入焦點的元件發送
OnMouseDown 大部分元件 發生在按下游標時,向光標所在元件發送
OnMouseMove 大部分元件 發生在移動游標時,向光標所在元件發送
OnMouseUp 大部分元件 發生在釋放游標時,向光標所在元件發送
OnStartDrag 大部分元件 發生在元件開始被拖動時
OnShow 大部分元件 當元件或窗體顯示的時候
OnCIose 大部分元件 當元件或窗體關閉的時候
OnActivate 大部分元件 當元件啟用時

# 1.1. OnCanResize事件

property OnCanResize: TCanResizeEvent;
1

  當窗體大小改變時觸發該事件,利用該功能可控制窗體是否可以改變其大小。

  • 應用
      當窗體的大小改變到一定的範圍時就停止改變。
procedure TMyHandler.BASEFORMCANRESIZE;
//窗體改變時觸發事件 ,限制大小
begin
  if((NewWidth > 700) or (NewHeight > 500)) or ((NewWidth < 300) or (NewHeight < 200)) then
    Resize := False
  else
    Resize := True;
end;
1
2
3
4
5
6
7
8

# 1.2. OnChange事件

type TNotifyEvent = procedure (Sender: TObject) of object; 
property OnChange: TNotifyEvent;
1
2

  編輯元件中的文字發生改變時觸發該事件,編寫其事件處理程式可執行特定的功能。利用Modified屬性檢視是否實際改變,編輯元件的Text屬性已經被更新來反映所做的改變。OnChange事件提供了第1次響應使用者輸入編輯元件的通知。

  • 應用
      OnChange事件是當文字框里的內容改變時被觸發的。可以利用該事件提示使用者輸入合法數據。
procedure TMyHandler.EDIT1CHANGE;
begin
  if FThis.Edit1.Text = '' then exit;
  try
    StrToFloat(Trim(FThis.Edit1.Text));
  except
    ShowMessage('請輸入數字');
    FThis.Edit1.SetFocus;
    exit;
  end;
end;

1
2
3
4
5
6
7
8
9
10
11
12
OnChange事件應用界面

# 1.3. OnClick事件

property OnClick: TNotifyEvent;
1

  當用戶用滑鼠單擊按鈕時觸發OnClick事件。

  • 應用
      在設計程式時,如果使用按鈕元件,幾乎都會用到OnClick事件。當用戶單擊按鈕時,程式會呼叫按鈕的OnClick事件處理過程。
procedure TMyHandler.BUTTON1CLICK;
begin
  if paxfunc.YesNoMsg('確定要關閉此程式嗎?','提示') then
    FThis.Close;
end;
1
2
3
4
5
點選「確認」按鈕,出現關閉程式的提示

# 1.4. OnDblClick事件

type TNotifyEvent = procedure (Sender: TObject) of object; 
property OnDblClick: TNotifyEvent;
1
2

  雙擊元件產生該事件,可用該事件編寫響應雙擊事件的程式碼。

  • 應用
      OnDblClick事件足在使用者雙擊面板時被觸發。
procedure TMyHandler.PANEL1DBLCLICK;
//雙擊面板觸發該事件
begin
  ShowMessage('使用者雙擊了滾動框');
end;
1
2
3
4
5
雙擊事件

# 1.5. OnDragDrop事件*

type TDragDropEvent = procedure(Sender, Source: TObject; X, Y: Integer) of object;
property OnDragDrop: TDragDropEvent;
1
2

  OnDragDrop事件是在使用者放下一個正被拖動的對象時被觸發,其事件處理程式可指定使用者放下一個對像時需要執行的行為。Source參數指定放下的對象,Sender指定放置對象的元件,X和Y是滑鼠在元件上的位罝座標。


# 1.6. OnDragOver事件*

TDragOverEvent = procedure(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean) of object; 
property OnDragOver: TDragOverEvent;
1
2

  當用戶在元件上拖動對像時觸發該事件,使用這個事件可用訊號通知元件接受拖動的對象,使使用者放下或停靠對象。在該事件處理程式中將Accept參數設定為 False表示拒絕被拖動對象,設定為True表示允許使用者在元件上放下或停靠被拖動對象。

  在觸發這個事件前修改元件的DragCursor屬性值可改變游標的形狀,表示元件可接受被拖動對象。

  Source參數指定拖動對象,Sender指定可能放下或停靠的位置,X和Y是螢幕的畫素座標, State指定拖動對像在元件上移動的方法。

  說明:在該事件處理程式內,Accept參數預設為True。但如果未提供該事件處理程式,則元件拒絕被拖動對象,如同Accept參數設定為False。


# 1.7. OnEnter 事件

type TNotifyEvent = procedure (Sender: TObject) of object; 
property OnEnter: TNotifyEvent;
1
2

  當元件接受輸入焦點時觸發該事件。,視窗元件變為啟用狀態時,可使用其事件處理程式 執行指定的處理。當在窗體之叫轉換,或在包含窗體元件的應用程式與另一個Windows應用程 序之閬轉換時,該事件不會被觸發。當在元件之間轉化時,而這些元件分別在不同的容器元件 中,例如在TPanel和TGroupBox元件中時,則在觸發元件的這個事件前先觸發容器元件的OnEnter 事件。

  • 應用
      OnEnter事件在編輯框獲得焦點時被觸發。
procedure TMyHandler.BUTTON1CLICK;
//點選以獲得焦點
begin
  FThis.Edit1.SetFocus;
end;

procedure TMyHandler.EDIT1ENTER;
//接受輸入焦點時觸發
begin
  ShowMessage('編輯框獲得了焦點');
end;
1
2
3
4
5
6
7
8
9
10
11
Edit1獲得焦點時彈出訊息框

# 1.8. OnKeyDown事件

type TKeyEvent = procedure (Sender: TObject; var Key: Word; Shift: TShiftState) of object; 
property OnKeyDown: TKeyEvent;
1
2

  當鍵盤的鍵被按下時觸發該事件,並可與組合鍵一起使用。

  • 應用
      當用戶按下鍵盤時顯示相應的鍵值,按下Shift按鍵時不顯示。
procedure TMyHandler.EDIT1KEYDOWN;
//按下字母或數字鍵盤時觸發
begin
  FThis.KeyPreview := True;
  if (Key <> 16) and (Key <> 18) then
  FThis.Edit2.Text := IntToStr(Key); 
end;
1
2
3
4
5
6
7
按下按鍵時顯示對應的鍵值

# 1.9. OnKeyPress事件

type TKeyPressEvent = procedure (Sender: TObject; var Key: Char) of object; 
property OnKeyPress: TKeyPressEvent;
1
2

  當用戶按下單個字元鍵時觸發該事件,使用其事件處理程式可執行單個字元被按下時的特定操作。在這個事件 處理程式中,Key參數為Char型別,W此該事件註冊按鍵 的ASCII字元。不符合ASCII字元值的鍵(如Shift或F1) 不觸發該事件。組合鍵(如Shift+A)只觸發一個該事件(例如如果Caps Lock鍵為閉狀態,則Shift+A將產生A值)。 如果要響應非ASCII鍵或組合鍵,則使用OnKeyDown或 OnKeyUp事件處理程式。

  • 應用
      OnKeyPress事件是在使用者按下一個單字元鍵時被觸發。在程式中,可以利用該事件來防止使用者輸入非法字元。
procedure TMyHandler.EDIT2KEYPRESS;
//當鍵盤按下時觸發,只允許輸入數字
begin
  FThis.KeyPreview := True;
  if Not (Key in ['0' .. '9', #8]) then
  Key := #0;
end;
1
2
3
4
5
6
7
年齡編輯框只允許輸入數字

# 1.10. OnKeyUp事件

property OnKeyUp;
1

  當用戶釋放己經按下的鍵時觸發該事件,使用其事件處理程式可在按鍵被釋放時執行特定的處理。這個處理程式可響應所有鍵盤鍵,包括功能鍵和與Shift、Alt或Ctrl鍵的組合鍵。

  • 應用
      OnKeyUp事件是在使用者釋放已經按下的按鍵時被觸發。可以使用該事件來顯示單字元鍵的ASCII碼。
procedure TMyHandler.EDIT1KEYUP;
//釋放鍵盤時觸發該事件
begin
  ShowMessage(IntToStr(ord(Key)));
end;
1
2
3
4
5
按下抬起按鍵時顯示按鍵ASCII碼

# 1.11. OnMouseDown事件

type TMouseEvent = procedure (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) of object; 
property OnMouseDown: TMouseEvent;
1
2

  使用該事件的處理程式可處理按下滑鼠按鈕的操作,即響應按下左、石和中滑鼠按鈕以及轉換鍵和滑鼠按鈕的組合。轉換鍵為Shift、Ctrl和Alt鍵。X和Y參數為滑鼠指針在Sender參數客戶區的畫素座標。

  • 應用
      OnMouseDown事件在使用者按下滑鼠按鈕時被觸發。參數Sender指定觸發OnMouseDown 事件的對象,Button表示使用者按的滑鼠按鈕,Shift表示使用者按的功能鍵(Shift、Ctrl或Alt),X、Y參數用於確定滑鼠座標。
procedure TMyHandler.PANEL1MOUSEDOWN;
//按下滑鼠按鍵時觸發
begin
  if Button = mbLeft then
    ShowMessage('使用者按了滑鼠左鍵')
  else if Button = mbRight then
    ShowMessage('使用者按了滑鼠右鍵')
  else
    ShowMessage('使用者按了滑鼠中鍵');
end;
1
2
3
4
5
6
7
8
9
10
滑鼠點選面板,顯示界面

# 1.12. OnMouseMove事件

type TMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState; X, Y: Integer) of object; 
property OnMouseMove: TMouseMoveEvent;
1
2

  使用該事件處理程式可處理在元件上移動滑鼠游標的操作,使用Shift參數,可確定轉換鍵的狀態和滑鼠按鈕。轉換鍵包括Shift、Ctrl和Alt鍵。X和Y參數為滑鼠指針在Sender參數客戶區的畫素座標。

  • 應用
      當滑鼠在面板和按鈕上移動時觸發OnMouseMove事件。
procedure TMyHandler.PANEL1MOUSEMOVE;
//滑鼠移動到面板上時,按鈕字型變大
begin
  FThis.Button1.Font.Size := 12;
end;

procedure TMyHandler.BUTTON1MOUSEMOVE;
//滑鼠移動到按鈕上時,按鈕字型變小
begin
  FThis.Button1.Font.Size := 8;
end;
1
2
3
4
5
6
7
8
9
10
11
滑鼠移動到面板上時,按鈕字型變大

# 1.13. OnMouseUp事件

type TMouseEvent = procedure (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer) of object; 
property OnMouseUp: TMouseEvent;
1
2

  使用該事件處理程式可處理使用者釋放滑鼠按鈕時的操作,即響應按下左、右和中滑鼠按鈕及轉換鍵和按鈕的組合。轉換鍵為Shift、Ctrl和Alt鍵。X和Y參數為滑鼠指針在Sender參數客戶區的畫素座標。

  • 應用
      點選按鈕釋放時觸發OnMouseUp事件。
procedure TMyHandler.BUTTON1MOUSEUP;
//當用戶釋放滑鼠按鍵時觸發該事件
begin
  FThis.Button1.Font.Size := 12;
end;

procedure TMyHandler.BUTTON1MOUSELEAVE;
//當滑鼠離開按鈕時觸發該事件
begin
  FThis.Button1.Font.Size := 8;
end;
1
2
3
4
5
6
7
8
9
10
11

# 1.14. OnStartDrag事件*

type TStartDragEvent = procedure (Sender: TObject; var DragObject: TDragObject) of object; 
property OnStartDrag: TStartDragEvent;
1
2

  當開始拖動元件或一個對象並且DragKind為dkDrag時觸發該事件,其事件處理程式可處理拖動操作,為DragObject參數建立TDragControlObject實體,以指定拖動游標或一個任選的拖動影象列表。Sender參數為將要拖動元件或對象的包容器。拖動結束時,不需要為DragObject呼叫Free方法。

  如果該事件處理程式設定DragObject參數為NULL,則自動建立TDragControlObject對像 並從元件自身開始拖動。


# 1.15. OnShow事件*

property OnShow: TNotifyEvent;
1

  當窗體被顯示時觸發該事件執行指定的處理。


# 1.16. OnClose事件*

TCloseAction = (caNone, callide, caFree, caMinimize);
TCloseEvent = procedure(Sender: TObject; var Action: TCloseAction) of object; 
property OnClose: TCloseEvent;
1
2
3

  OnClose事件發生在窗體關閉時,用於指定當一個窗體將要關閉時應訪問哪一個事件處理者。


# 1.17. OnActivate事件*

property OnActivate: TNotifyEvent;
1

  啟用窗體時觸發該事件,當窗體接受焦點時用OnActivate處理指定的過程。


公共方法
視窗控制元件

← 公共方法 視窗控制元件→

Copyright © 2021-2025 愛招飛IsoFace | ALL Rights Reserved
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式