?? elibtypes.~pas
字號:
UD_CUSTOMIZE = 1024; // 自定義類型屬性
// “窗口單元屬性”的狀態值(m_wState)
UW_HAS_INDENT = (1 shl 0); // 在屬性表中顯示時向外縮進一段,一般用于子屬性。
UW_GROUP_LINE = (1 shl 1); // 在屬性表中本屬性下顯示分組底封線。
UW_ONLY_READ = (1 shl 2); // 只讀屬性,設計時不可用,運行時不能寫。
UW_CANNOT_INIT = (1 shl 3); // 設計時不可用,但運行時可以正常讀寫。與上標志互斥。
//////////////////////////////////////////////////////////////////////////////
const
// 固定屬性的數目
FIXED_WIN_UNIT_PROPERTY_COUNT = 8;
// 每個固定屬性定義
FIXED_WIN_UNIT_PROPERTY : array[0..FIXED_WIN_UNIT_PROPERTY_COUNT-1] of UNIT_PROPERTY =
(( m_szName: PChar('左邊'); m_szEGName: PChar('left'); m_szExplain: nil; m_shtType: UD_INT; m_wState: 0; m_szzPickStr: nil ),
( m_szName: PChar('頂邊'); m_szEGName: PChar('top'); m_szExplain: nil; m_shtType: UD_INT; m_wState: 0; m_szzPickStr: nil ),
( m_szName: PChar('寬度'); m_szEGName: PChar('width'); m_szExplain: nil; m_shtType: UD_INT; m_wState: 0; m_szzPickStr: nil ),
( m_szName: PChar('高度'); m_szEGName: PChar('height'); m_szExplain: nil; m_shtType: UD_INT; m_wState: 0; m_szzPickStr: nil ),
( m_szName: PChar('標記'); m_szEGName: PChar('tag'); m_szExplain: nil; m_shtType: UD_TEXT; m_wState: 0; m_szzPickStr: nil ),
( m_szName: PChar('可視'); m_szEGName: PChar('visible'); m_szExplain: nil; m_shtType: UD_BOOL; m_wState: 0; m_szzPickStr: nil ),
( m_szName: PChar('禁止'); m_szEGName: PChar('disable'); m_szExplain: nil; m_shtType: UD_BOOL; m_wState: 0; m_szzPickStr: nil ),
( m_szName: PChar('鼠標指針'); m_szEGName: PChar('MousePointer'); m_szExplain: nil; m_shtType: UD_CURSOR; m_wState: 0; m_szzPickStr: nil ));
//////////////////////////////////////////////////////////////////////////////
type
//////////////////////////////////////////////////////////////////////////////
// “事件參數信息”EVENT_ARG_INFO結構
pEVENT_ARG_INFO = ^EVENT_ARG_INFO;
EVENT_ARG_INFO = record
m_szName : PChar; // 參數名稱
m_szExplain : PChar; // 參數詳細解釋
m_dwState : Word; // 狀態值,見下面的常量定義(const EAS_IS_BOOL_ARG = (1 shl 0);)
end;
const
//////////////////////////////////////////////////////////////////////////////
// 以下常量用于在EVENT_ARG_INFO結構的m_dwState成員
EAS_IS_BOOL_ARG = (1 shl 0); // 為邏輯型參數,如無此標志,則認為是整數型參數
type
//////////////////////////////////////////////////////////////////////////////
//
pEVENT_INFO = ^EVENT_INFO;
EVENT_INFO = record
m_szName : PChar; // 事件名稱
m_szExplain : PChar; // 事件詳細解釋
m_dwState : Longword; // 狀態值,見下面的常量定義
m_nArgCount : Integer; // 事件的參數數目
m_pEventArgInfo : PEVENT_ARG_INFO; // 事件參數
end;
//////////////////////////////////////////////////////////////////////////////
const
//////////////////////////////////////////////////////////////////////////////
// 以下常量用于EVENT_INFO結構的m_dwState成員
EV_IS_HIDED = (1 shl 0); // 本事件是否為隱含事件(即不能被一般用戶所使用或被廢棄但為了保持兼容性又要存在的事件)。
EV_RETURN_INT = (1 shl 3); // 本事件的處理子程序需要返回一個整數值,與下標志互斥。
EV_RETURN_BOOL = (1 shl 4); // 本事件的處理子程序需要返回一個邏輯值,與上標志互斥。
//////////////////////////////////////////////////////////////////////////////
type HUNIT = LongWord;
type pFN_INTERFACE = procedure(); stdcall; // 通用接口指針
const
//////////////////////////////////////////////////////////////////////////////
// 窗口單元對外接口ID
ITF_CREATE_UNIT = 1; // 創建單元
// 下面兩個接口僅在可視化設計窗口界面時使用。
ITF_PROPERTY_UPDATE_UI = 2; // 說明屬性目前可否被修改
ITF_DLG_INIT_CUSTOMIZE_DATA = 3; // 使用對話框設置自定義數據
ITF_NOTIFY_PROPERTY_CHANGED = 4; // 通知某屬性數據被修改
ITF_GET_ALL_PROPERTY_DATA = 5; // 取全部屬性數據
ITF_GET_PROPERTY_DATA = 6; // 取某屬性數據
ITF_IS_NEED_THIS_KEY = 8; // 詢問單元是否需要指定的按鍵信息,用作窗口單元截獲處理默認為運行時環境處理的按鍵,如TAB、SHIFT+TAB、UP、DOWN等。
type
pFN_GET_INTERFACE = function (nInterfaceNO:Integer) : PFN_INTERFACE; stdcall;
//////////////////////////////////////////////////////////////////////////////
// 接口:
// 創建單元,成功時返回HUNIT,失敗返回NULL。
pFN_CREATE_UNIT = function (
pAllPropertyData : PByte; // 指向本窗口單元的已有屬性數據,由本窗口單元的
nAllPropertyDataSize : Integer; // 提供pAllPropertyData所指向數據的尺寸,如果沒有則為0。
dwStyle : LongWord; // 預先設置的窗口風格。
hParentWnd : LongWord; // 父窗口句柄。
uID : LongWord; // 在父窗口中的ID。
hMenu : LongWord; // 未使用。
x, y : Integer; // 位置
cx, cy : Integer; // 尺寸
dwWinFormID : LongWord; // 本窗口單元所在窗口的ID,用作通知到系統。
dwUnitID : LongWord; // 本窗口單元的ID,用作通知到系統。
hDesignWnd : LongWord = 0; // 如果blInDesignMode為真,則hDesignWnd提供所設計窗口的窗口句柄。
blInDesignMode : LongBool = false // 說明是否被易語言IDE調用以進行可視化設計,運行時為假。
) : LongWord; stdcall;
// 如果指定屬性目前可以被操作,返回真,否則返回假。
pFN_PROPERTY_UPDATE_UI = function (
hUnit : LongWord; // 由PFN_CREATE_UNIT返回的已創建窗口單元的句柄,下同。
nPropertyIndex : Integer // 所需要查詢屬性的索引值,下同。
) : LongBool; stdcall;
// 用作設置類型為UD_CUSTOMIZE的單元屬性。如果需要重新創建該單元才能修改單元外形,請返回真。
pFN_DLG_INIT_CUSTOMIZE_DATA = function (
hUnit : LongWord;
nPropertyIndex : Integer;
pblModified : PLongBool= nil; // 如果pblModified不為nil,請在其中返回是否被用戶真正修改(便于易語言IDE建立UNDO記錄)。
pReserved : Pointer = nil // 保留未用。LPVOID
) : LongBool; stdcall;
type
// 臨時結構,僅在UNIT_PROPERTY_VALUE結構中用于定義m_data成員
T_UNIT_PROPERTY_VALUE__m_data = record
m_pData : PByte;
m_nDataSize : Integer;
end;
// 用作記錄某屬性的具體屬性值。 (In VC6, UNIT_PROPERTY_VALUE is defined as a UNION)
pUNIT_PROPERTY_VALUE = ^UNIT_PROPERTY_VALUE;
UNIT_PROPERTY_VALUE = record
case Integer of
0: (m_int : Integer); // 對應的屬性類別:UD_INT、UD_PICK_INT,下同。
1: (m_double : Double); // UD_DOUBLE
3: (m_bool : LongBool); // UD_BOOL
4: (m_dtDateTime : TDateTime); // UD_DATE_TIME
5: (m_clr : Longword); // UD_COLOR、UD_COLOR_TRANS、UD_COLOR_BACK
6: (m_szText : PChar); // UD_TEXT、UD_PICK_TEXT、UD_EDIT_PICK_TEXT、UD_ODBC_CONNECT_STR、UD_ODBC_SELECT_STR
7: (m_szFileName : PChar); // UD_FILE_NAME
8: (m_data : T_UNIT_PROPERTY_VALUE__m_data); // UD_PIC、UD_ICON、UD_CURSOR、UD_MUSIC、UD_FONT、UD_CUSTOMIZE、UD_IMAGE_LIST
{ UNIT_PROPERTY_VALUE ()
memset ((LPBYTE)this, 0, sizeof (UNIT_PROPERTY_VALUE));
}
end;
// 通知某屬性(非UD_CUSTOMIZE類別屬性)數據被用戶修改,需要根據該修改相應更改內部數據及外形,如果確實需要重新創建才能修改單元外形,請返回真。注意:必須進行所傳入值的合法性校驗。
pFN_NOTIFY_PROPERTY_CHANGED = function (
hUnit : LongWord;
nPropertyIndex : Integer;
pPropertyValue : PUNIT_PROPERTY_VALUE; // 用作修改的相應屬性數據。
ppszTipText : PPChar = nil // 目前尚未使用。LPTSTR*
) : LongBool; stdcall;
// 取某屬性數據到pPropertyValue中,成功返回真,否則返回假。注意:如果在設計時(由調用PFN_CREATE_UNIT時的blInDesignMode參數決定),pPropertyValue必須返回所存儲的值。如果在運行時(blInDesignMode為假),必須返回實際的當前實時值。比如說,編輯框窗口單元的“內容”屬性,設計時必須返回內部所保存的值,而運行時就必須調用GetWindowText去實時獲取。
pFN_GET_PROPERTY_DATA = function (
hUnit : LongWord;
nPropertyIndex : Integer;
pPropertyValue : pUNIT_PROPERTY_VALUE // 用作接收欲讀取屬性的數據。
) : LongBool; stdcall;
// 返回本窗口單元的全部屬性數據,由該窗口單元的實現代碼自行設計格式將所有屬性數據組合到一起。此窗口單元的PFN_CREATE_UNIT接口必須能夠正確解讀此數據。
pFN_GET_ALL_PROPERTY_DATA = function (hUnit : LongWord) : LongWord; stdcall; // 在Delphi中, HGLOBAL=THandle=LongWord;
// 詢問單元是否需要指定的按鍵信息,如果需要,返回真,否則返回假。
pFN_IS_NEED_THIS_KEY = function (hUnit : LongWord; wKey : Word) : LongBool; stdcall;
const
UNIT_BMP_SIZE = 24; // 單元標志位圖的寬度和高度。
UNIT_BMP_BACK_COLOR = $C0C0C0; // 單元標志位圖的背景顏色(灰色): RGB(192,192,192)=$C0C0C0=12632256
type
//////////////////////////////////////////////////////////////////////////////
// “庫定義數據類型” LIB_DATA_TYPE_INFO
pLIB_DATA_TYPE_INFO = ^LIB_DATA_TYPE_INFO;
LIB_DATA_TYPE_INFO = record
m_szName : PChar; // 名稱
m_szEGName : PChar; // 英文名稱,可為空或nil
m_szExplain : PChar; // 詳細解釋,如無則可為nil
m_nCmdCount : Integer; // 本數據類型成員方法的數目(可為0)
m_pnCmdsIndex : ^Integer; // 順序記錄本類型中所有成員方法命令在支持庫命令表中的索引值,可為NULL。
m_dwState : LongWord; // 狀態值,見下面的說明及常量定義
// 以下成員只有在為窗口單元、菜單時才有效。
m_dwUnitBmpID : LongWord; // 指定在支持庫中的單元圖像資源ID(注意不同于上面的圖像索引),0為無。尺寸必須為24*24 ,背景顏色為RGB(192,192,192) 。
m_nEventCount : Integer; // 本單元的事件數目
m_pEventBegin : PEVENT_INFO ; // 定義本單元的所有事件
m_nPropertyCount : Integer; // 本單元的屬性數目
m_pPropertyBegin : pUNIT_PROPERTY; // 定義本單元的所有屬性
// 用作提供本窗口單元的所有接口。
m_pfnGetInterface : pFN_GET_INTERFACE;
// 以下成員只有在不為窗口單元、菜單時才有效。
m_nElementCount : Integer; // 本數據類型中子成員的數目(可為0)。如為窗口、菜單單元,此變量值必為0。
m_pElementBegin : pLIB_DATA_TYPE_ELEMENT; // 指向子成員數組的首地址。
////////////////////////////////////////////////////////////////////////////
//
// 其中,m_dwState 可以為以下常量值的組合:
// LDT_IS_HIDED = (1 shl 0); // 本類型是否為隱含類型(即不能由用戶直接用作定義的類型,如被廢棄但為了保持兼容性又要存在的類型)
// LDT_IS_ERROR = (1 shl 1); // 本類型在本庫中不能使用,具有此標志一定隱含。即使具有此標志,本類型的類型數據也必須完整定義。
// LDT_WIN_UNIT = (1 shl 6); // 是否為窗口單元,如此標志置位則m_nElementCount必為0
// LDT_IS_CONTAINER = (1 shl 7); // 是否為容器型窗口單元,如有此標志,LDT_WIN_UNIT必須置位。
// LDT_IS_FUNCTION_PROVIDER = (1 shl 15); // 是否為僅用作提供功能的窗口單元(如時鐘),如此標志置位則LDT_WIN_UNIT必置位。具有此標志的單元在運行時無可視外形。
// LDT_CANNOT_GET_FOCUS = (1 shl 16); // 僅用作窗口單元,如此標志置位則表示此單元不能接收輸入焦點,不能TAB鍵停留。
// LDT_DEFAULT_NO_TABSTOP = (1 shl 17); // 僅用作窗口單元,如此標志置位則表示此單元可以接收輸入焦點,但默認不停留TAB鍵,本標志與上標志互斥。
// LDT_BAR_SHAPE = (1 shl 20); // 是否為需要自調整位置或尺寸的條狀窗口單元(如工具條、狀態條等),對于具有此標志的單元,所在窗口尺寸改變后易語言運行時環境會自動發送給WU_SIZE_CHANGED消息。注意:條狀窗口單元如果需要自動頂部對齊必須具有 CCS_TOP 窗口風格,如果需要自動底部對齊必須具有 CCS_BOTTOM 窗口風格。
//
// 對于 m_dwState具有LDT_BAR_SHAPE標志的單元,所在窗口尺寸改變后易語言運行時環境會自動發送給WU_SIZE_CHANGED消息。
// 注意,條狀窗口單元如果需要自動頂部對齊必須具有CCS_TOP窗口風格,如果需要自動底部對齊必須具有CCS_BOTTOM窗口風格。
//
////////////////////////////////////////////////////////////////////////////
end;
const
//////////////////////////////////////////////////////////////////////////////
// 以下常量用于LIB_DATA_TYPE_INFO結構的m_dwState成員中
LDT_IS_HIDED = (1 shl 0); // 本類型是否為隱含類型(即不能由用戶直接用作定義的類型,如被廢棄但為了保持兼容性又要存在的類型)
LDT_IS_ERROR = (1 shl 1); // 本類型在本庫中不能使用,具有此標志一定隱含。即使具有此標志,本類型的類型數據也必須完整定義。
LDT_WIN_UNIT = (1 shl 6); // 是否為窗口單元,如此標志置位則m_nElementCount必為0
LDT_IS_CONTAINER = (1 shl 7); // 是否為容器型窗口單元,如有此標志,LDT_WIN_UNIT必須置位。
LDT_IS_FUNCTION_PROVIDER = (1 shl 15); // 是否為僅用作提供功能的窗口單元(如時鐘),如此標志置位則LDT_WIN_UNIT必置位。具有此標志的單元在運行時無可視外形。
LDT_CANNOT_GET_FOCUS = (1 shl 16); // 僅用作窗口單元,如此標志置位則表示此單元不能接收輸入焦點,不能TAB鍵停留。
LDT_DEFAULT_NO_TABSTOP = (1 shl 17); // 僅用作窗口單元,如此標志置位則表示此單元可以接收輸入焦點,但默認不停留TAB鍵,本標志與上標志互斥。
LDT_BAR_SHAPE = (1 shl 20); // 是否為需要自調整位置或尺寸的條狀窗口單元(如工具條、狀態條等),對于具有此標志的單元,所在窗口尺寸改變后易語言運行時環境會自動發送給WU_SIZE_CHANGED消息。注意:條狀窗口單元如果需要自動頂部對齊必須具有CCS_TOP窗口風格,如果需要自動底部對齊必須具有CCS_BOTTOM窗口風格。
//////////////////////////////////////////////////////////////////////////////
type
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -