四、TControl
Align 屬性
對應對象:TControl
聲明:TAlign = (alNone, alTop, alBottom, alLeft, alRight, alClient);
property Align: TAlign;
功能:Align屬性用來(lái)確定控件在它的父類(lèi)中的對齊方式。 Align屬性的類(lèi)型是TAlign,它可以被設置成為以下值中的一個(gè)。
值 意 義
alNone 組件被保持在它的父類(lèi)放置的位置,即窗體或面板,它是屬性的缺省值。
alTop 組件被移動(dòng)到窗體的頂端,并且被重新決定大小以充滿(mǎn)窗體的寬,組件的高度不會(huì )受到影響。
alBottom 組件被移動(dòng)到窗體的底端,并且被重新決定大小以充滿(mǎn)窗體的寬,組件的高度不會(huì )受到影響。
alLeft 組件被移動(dòng)到窗體的左邊,并且被重新設定大小以充滿(mǎn)窗體的高度,組件的寬度不會(huì )受到影響。
alRight 組件被移動(dòng)到窗體的右邊,并且被重新設定大小以充滿(mǎn)窗體的高度,組件的寬度不會(huì )受到影響。
alClient 組件被重新決定大小以充滿(mǎn)一個(gè)窗體的用戶(hù)區。如果另一個(gè)組件已經(jīng)占據了用戶(hù)區的部分,那么組件將重新在用戶(hù)區中的剩余部分中設定大小。
BoundsRect 屬性
對應對象:TControl
聲明:TRect = record
case Integer of
0: (Left, Top, Right, Bottom: Integer);
1: (TopLeft, BottomRight: TPoint);
end;
property BoundsRect: TRect;
功能:BoundsRect屬性用來(lái)指出控件的邊界的矩形。 BoundsRect屬性包含了描述控件父類(lèi)區域的邊界的矩形。矩形的坐標是在父類(lèi)坐標系中給定。
Caption 屬性
對應對象:TControl
聲明:TCaption = type string;
property Caption: TCaption;
功能:Caption屬性用來(lái)確定用于標記控件的字符串。
控件的標題可以被修改,但在運行時(shí)卻很少被修改。由于Caption屬性對用戶(hù)禁止編輯,所以要允許用戶(hù)編輯顯示在控件中的文字的控件,應使用Text屬性而不是Caption屬性。Caption屬性的類(lèi)型為T(mén)Caption,它是一個(gè)標準的字符串。
例子:
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption := ‘Delphi Explorer’;
Button1.Caption := ‘OK’;
Label1.Caption := ‘Captions are relatively static’;
end;
ClientHeight 屬性
對應對象:TControl
聲明:property ClientHeight: Integer;
功能:ClientHeight屬性用來(lái)說(shuō)明控件用戶(hù)區的高度。
ClientHeight屬性對應除窗體之外的所有控件運行時(shí)的屬性。它用像素來(lái)進(jìn)行度量,許多控件與ClientHeight屬性具有相同的高度值。
例子:
procedure TForm1.FormCreate(Sender: TObject);
var
X, Y: Integer;
begin
X := Form1.ClientWidth;
Y := Form1.ClientHeight;
//...
end;
ClientOrigin 屬性
對應對象:TControl
聲明:TPoint = record
X: Longint;
Y: Longint;
end;
property ClientOrigin: TPoint;
功能:ClientOrigin屬性說(shuō)明包含控件的用戶(hù)區的左上角的坐標值。
ClientOrigin屬性包含了控件用戶(hù)區的上部左邊的像素的坐標值,坐標是以屏幕的坐標值進(jìn)行度量。
例子:
procedure TForm1.FormCreate(Sender: TObject);
var
OriginPoint: TPoint;
begin
OriginPoint := Form1.ClientOrigin;
end;
ClientRect 屬性
對應對象:TControl
聲明:TPoint = record
X: Longint;
Y: Longint;
end;
TRect = record
case Integer of
0: (Left, Top, Right, Bottom: Integer);
1: (TopLeft, BottomRight: TPoint);
end;
property ClientRect: TRect;
功能:ClientRect屬性說(shuō)明了包含有控件的用戶(hù)區的尺寸大小。
ClientRect屬性是運行時(shí)有效,是只讀型的。屬性包含了控件用戶(hù)區的邊界上下左右的像素位置,對應TRect類(lèi)型結構區域的左邊和上部的坐標值是0,對應的下邊和右邊的像素值說(shuō)明了區域的高度和寬度。
例子:
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Canvas.Brush.Color := clBlue;
Form1.Canvas.FillRect(Form1.ClientRect);
end;
ClientWidth 屬性
對應對象:TControl
聲明:property ClientWidth: Integer;
功能:ClientWidth屬性說(shuō)明包含控件用戶(hù)區的寬度。
ClientWidth屬性是對應除窗體之外的所有控件都有效運行時(shí)的屬性。該屬性表示了控件用戶(hù)區的水平大小,寬度以像素來(lái)度量。對于許多控件ClientWidth屬性和Width屬性是一致的,而窗體則將用戶(hù)區視為窗體框架內的成分,窗體的ClientWidth屬性通常將小于Width屬性的值。
例子:
procedure TForm1.FormCreate(Sender: TObject);
var
X, Y: Integer;
begin
X := Form1.ClientWidth;
Y := Form1.ClientHeight;
//...
end;
Color 屬性
對應對象:TControl
聲明:property Color: TColor;
功能:Color屬性用來(lái)確定控件的顏色。
用戶(hù)可以使用Color屬性來(lái)獲得顏色或設置控件的顏色。用戶(hù)可以通過(guò)手工來(lái)為控件的顏色屬性賦予一個(gè)值進(jìn)行重新設置。Color屬性是TColor類(lèi)型的值,它有許多有效的顏色值可以使用,詳情見(jiàn)下表。
值 顏 色
clBlack 黑色Black。
clMaroon 栗色Maroon。
clGreen 綠色Green。
clOlive 橄欖綠Olive green。
clNavy 深藍色Navy blue。
clPurple 紫色Purple。
clTeal 深青色Teal。
clGray 灰色Gray。
clSilver 銀色Silver。
clRed 紅色Red。
clLine 淺綠色Lime green。
clBlue 藍色Blue。
clFuchsia 紫紅色Fuchsia。
clAqua 淺綠色Aqua。
clWhite 白色White。
clBackground 當前的系統桌面的背景顏色
clActiveCaption 當前的被激活窗口的標題欄的顏色。
clInactiveCaption 當前的沒(méi)有被激活的窗口的標題欄的顏色。
clMenu 當前的菜單背景的顏色。
clWindow 當前的窗口背景的顏色。
clWindowFrame 當前的窗口框架的顏色。
clMenuText 當前的菜單上的文本的顏色。
clCaptionText 當前的被激活窗口的標題欄的文本的顏色。
clActiveBorder 當前的被激活窗口的邊界顏色。
clInactiveBorder 當前的沒(méi)有被激活窗口的邊界顏色。
clAppWorkSpace 當前的應用程序工作區的顏色。
clHighlight 當前的被選擇文本的背景顏色。
clHighlightText 當前的被選擇文本的顏色。
clBtnFace 當前的按鈕表面的顏色。
clBtnShadow 當前的按鈕投影的陰影顏色。
clGrayText 當前的無(wú)效文本的顏色。
clBtnText 當前的按鈕上文本的顏色。
clInactiveCaptionText 當前的被激活窗口標題欄的文本顏色。
clBtnHighlight 當前的按鈕上高亮度的顏色。
cl3DDkShadow 只有對Windows95或NT4.0系統:三維顯示元素陰影的顏色。
cl3DLight 只有對Windows95或NT4.0系統:對于三維顯示元素的亮面(朝向光源的面)
clInfoText 只有對Windows95或NT4.0系統:ToolTip(工具提示)的文本顏色。
clInfoBk 只有對Windows95或NT4.0系統:ToolTip(工具提示)的背景顏色
ControlState 屬性
對應對象:TControl
聲明:TControlState = set of (csLButtonDown, csClicked, csPalette, csReadingState,
csAlignmentNeeded, csFocusing, csCreating);
property ControlState: TControlState;
功能:ControlState屬性用來(lái)查詢(xún)控件運行時(shí)的狀態(tài)。
ControlState屬性用來(lái)指明運行的每一個(gè)時(shí)刻控件的狀態(tài)。屬性屬于TControlState類(lèi)型,這個(gè)類(lèi)型是一個(gè)標志集,它可以被設置成為以下值的組合形式。
值 意 義
csLButtonDown 點(diǎn)擊鼠標的左按鈕不放,這個(gè)是為所有的鼠標按下事件設置的。
csClicked
和csLButtonDown一樣,只是在ControlStyle屬性包含csClickEvents標志時(shí)它才被設置,以說(shuō)明鼠標按下時(shí)的事件。
csPalette 說(shuō)明一個(gè)WM_PALETTCHANGED信息被控件接受或者被控件的父類(lèi)接受。
csReadingState 控件正在從一個(gè)流中讀取它的狀態(tài)。
csAlignmentNeeded 當隊列再次被允許時(shí)控件需要重新排列它自己。
csFocusing 應用程序過(guò)程焦點(diǎn)送給控件。這不能保證控件就將收到焦點(diǎn),但是防止了遞歸的調用。
csPaintCopy 控件被復制,意味著(zhù)控件的拷貝被打印,控制風(fēng)格標記csReplicatable必須被設置為該狀態(tài)的發(fā)生。
csCreating 框架和它的所有者發(fā)生“與”或者“或”的邏輯,并且控件被創(chuàng )建了。這個(gè)標記將在所有的創(chuàng )建動(dòng)作完成時(shí)被清除。
ControlStyle 屬性
對應對象:TControl
聲明:TControlStyle = set of (csAcceptsControls, csCaptionMouse,
csDesignInteractive, csFramed, csClickEvents, csSetCaption, csOpaque,
csDoubleClicks, csFixedWidth, csFixedHeight, csNoDesignVisible, csReplicatable,
csNoStdEvents, csDisplayDragImage, csReflector);
property ControlStyle: TControlStyle;
功能:ControlStyle屬性用來(lái)說(shuō)明激活一個(gè)控件的哪些屬性。
ControlStyle屬性方式被改變的次數比相應ControlState屬性的標記要少。ControlStyle屬性屬于TControlStyle的類(lèi)型,它可以是以下值的組合。
值 意 義
csAcceptsControls 接受上面的控件。
csCaptureMouse 當這個(gè)事件發(fā)生時(shí),控件捕獲鼠標的事件。
csDesignInteractive 控件在設計時(shí)將鼠標按鈕的右擊映射為鼠標按鈕的左擊來(lái)控制控件。
csClickEvents 控件可以接受并且對按擊的操作進(jìn)行反應。
csFramed 控件有一個(gè)三維框架。
csSetCaption 如果標題還沒(méi)有被明確地設置成為其他的內容時(shí),控件將改變它的標題以便和Name屬性相匹配。
csOpaque 控件將用戶(hù)區的矩形設為透明。
csDoubleClicks 控件可以對鼠標的雙擊操作進(jìn)行接受和反應,此外可以將雙擊映射成為按擊操作。
csFixedWidth 控件的寬度設為固定值。
csFixedHeight 控件的高度設為固定值。
csNoDesignVisible 在設計時(shí)控件是不可以變化的。
csReplicatable 控件可以通過(guò)使用PaintTo方法,從而被拷貝到任意一個(gè)畫(huà)面上進(jìn)行繪制。
csNoStdEvents
標準事件,例如鼠標、鍵盤(pán)、點(diǎn)擊事件均被忽略。如果用戶(hù)的代碼不需要對這些事件進(jìn)行反應或者希望用戶(hù)的應用程序運行更快時(shí)將使用這個(gè)設置來(lái)處理。
csDisplayDragImage 當鼠標被拖動(dòng)到控件上面時(shí),控件可從一個(gè)圖像列表中顯示一個(gè)圖像。使用這個(gè)設置可使控件使用一個(gè)圖像的列表。
csReflector
控件將對系統對話(huà)框信息、焦點(diǎn)信息及尺寸改變信息進(jìn)行反應,如果控件被運作一個(gè)ActiveX的控件時(shí)使用這個(gè)設置,可使控件接受這些事件的通知。
Cursor 屬性
對應對象:TControl
聲明:TCursor = -32768~32767;
功能:Cursor屬性用來(lái)確定當鼠標在控件上進(jìn)行拖動(dòng)時(shí),將顯示什么樣的鼠標圖形。Cursor屬性屬于TCursor類(lèi)型變量,它包含了用戶(hù)可以使用的許多標準的鼠標形式,并包含了以下的有效值:crDefault,crArrow,crNone,crCross,crIBeam,crSize,crSizeNESW,crSizeNS,crSizeNWSE,crSizeWE,crUpArrow,crHourGlass,crDrag,crNoDrop,crHSplit,crVSplit,crMultiDrag,crSQLWait,crNo,crAppStart,crHelp和crHandPoint,每個(gè)值對應的鼠標圖像可以參考有關(guān)函數。
例子:
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Cursor := crCross;
Panel1.Cursor := crArrow;
end;
DesktopFont 屬性
對應對象:TControl
聲明:property DesktopFont: Boolean;
功能:DesktopFont屬性說(shuō)明當寫(xiě)入文本時(shí),控件是否使用系統的桌面的字體。
DragCursor 屬性
對應對象:TControl
聲明:TCursor = -32768~32767;
property DragCursor: TCursor;
功能:DragCursor屬性用來(lái)確定鼠標在拖動(dòng)時(shí)的形式。
在DragCursor屬性有效之前用戶(hù)必須首先設置控件接受下拉時(shí)的對象,實(shí)際上用戶(hù)只需處理一個(gè)諸如OnDragOver的拖放事件便可實(shí)現。
例子:
//Change the cursor shape if an object is dragged over the panel
procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Panel1.DragCursor := crDrag;
end;
DragMode 屬性
對應對象:TControl
聲明:TDragMode = (dmManual, dmAutomatic);
property DragMode: TDragMode;
功能:DragMode屬性用來(lái)確定控件被拖動(dòng)時(shí)的行為。
DragMode屬性屬于TDragMode類(lèi)型變量。這個(gè)類(lèi)型有兩個(gè)有效的值,即兩個(gè)有效的拖動(dòng)方式,dmAutomatic:如果dmAutomatic被選擇作為拖動(dòng)形式,則控件可被拖動(dòng),并且用戶(hù)可以隨時(shí)地點(diǎn)擊和拖動(dòng)控件。dmManual:如果dmManual被選擇為其拖動(dòng)的方式,直到控件調用了BeginDrag方法,控件才可以被拖動(dòng)。
例子:
procedure TForm1.FormCreate(Sender: TObject);
begin
//...
Form1.DragMode := dmAutomatic;
Panel1.DragMode := dmAutomatic;
end;
Enabled 屬性
對應對象:TControl
聲明:property Enabled: Boolean;
功能:Enabled屬性用來(lái)確定控件對鼠標、鍵盤(pán)及Timer事件是否將作出反應。
如果Enabled屬性被設置為真,那么控件將對用戶(hù)的鼠標、鍵盤(pán)輸入及Timer事件作出反應。如果Enabled屬性被設置為假,那么控件將變成灰色并且對鼠標、鍵盤(pán)及Timer事件不作反應。一般當控件的功能與當前狀態(tài)無(wú)關(guān)時(shí),可將該屬性設置為假。
Font 屬性
對應對象:TControl
聲明:property Font: TFont;
功能:Font屬性用來(lái)確定控件上文字的字體。
Font屬性允許用戶(hù)對控件的文本和標題的字體的屬性,選擇各種有效的字體。
字體屬性包含顏色、名稱(chēng)、尺寸大小及風(fēng)格。
例子:
with Form1.Font do
begin
Size := 12;
Name := ‘Arial’;
Color := clGreen;
Style := [fsBold];
end;
Height 屬性
對應對象:TControl
聲明:property Height: Integer;
功能:Height屬性說(shuō)明控件高度的尺寸大小。
Height屬性以屏幕的像素作為尺寸的度量,指明控件的高度值。
例子:
procedure TForm1.FormPaint(Sender: TObject);
begin
Panel1.Top := 10;
Panel1.Left := 10;
Panel1.Height := Form1.ClientHeight – 20;
Panel1.Width := Form1.ClientWidth – 20;
end;
Hint屬性
對應對象:Tcontrol
聲明:property Hint:string;
功能:Hint屬性用來(lái)說(shuō)明當光標停止在控件上時(shí)將出現工具提示窗口內容。為了使工具能夠提示所顯示得文字,必須將包含了工具得窗體控件的ShowHint屬性為真。如果窗體和控件的ShowHint屬性被設置為真,但是沒(méi)有設置控件Hint屬性,那么工具將顯示控件父類(lèi)的Hint的文字。
IsControl屬性
對應對象:TControl
聲明:property lsControl:Boolean;
功能:IsControl 屬性用來(lái)決定一個(gè)窗體是否存儲了它的特別屬性。
Left 屬性
對應對象:Tcontrol
聲明:property Left:Integer;
功能:Left屬性用來(lái)說(shuō)明控件左邊界的水平坐標。Left屬性指出控件離它的容器的左邊邊界是多少象素,并使用屏幕坐標來(lái)度量一個(gè)窗體的Left屬性值。
MouseCapture屬性
對應對象:Tcontrol
聲明:property MouseCapture:Boolean;
功能:MouseCapture屬性說(shuō)明控件是否已經(jīng)俘獲了鼠標事件。
Name屬性
對應對象:TControl
聲明:TcomponentName:string;
propertyName:TComponentName
功能:屬性是控件的名,它是可作為一個(gè)控件的新名或者用來(lái)指出控件的名。
Parent屬性
對應對象:TControl
聲明:property Parent:TwinControl;
功能:屬性用來(lái)指出控件的父類(lèi)(容器)??丶母割?lèi)是可視的,包含了控件的窗口控件??丶谒母割?lèi)被撤消時(shí)將被自動(dòng)地撤消。
ParentColor屬性
相應對象:TControl
聲明:property ParentColor:Boolean;
功能:ParentColor屬性用來(lái)確定控件是否將使用父類(lèi)的顏色值,即Color值。如果ParentColor屬性設置為真,那么控件將使用它父類(lèi)的Color屬性的顏色。如果ParentColor屬性設置為假,那么控件將使用自己確定的Color屬性的顏色值。
ParentFont屬性
對應對象:TControl
聲明:property ParentFont:Boolean;
功能:ParentFont屬性用來(lái)確定控件是否使用父類(lèi)的Font信息的屬性值。如果ParentFont屬性設置為真,那么控件將使用它父類(lèi)的Font屬性的字體。如果ParentFont屬性設置為假,那么控件將使用自己確定的Font屬性的字體屬性值。
ParnetShowHint屬性
對應對象:TControl
聲明:property ParentShowHint:Boolean;
功能:ParentShowHint用來(lái)確定控件是否使用它的父類(lèi)的ShowHint屬性用來(lái)顯示一個(gè)工具的提示。如果ParentShowHint屬性設置為真,那么控件將使用它父類(lèi)的ShowHint屬性,以確定此控件是否將顯示一個(gè)工具提示。如果ParentShowHint屬性設置為假,則控件將使用自己定義的ShowHint屬性的值以確定控件是否將顯示一個(gè)工具提示。
PopupMenu屬性
對應對象:TControl
聲明:property PopupMenu:TpopupMenu;
功能:PopupMenu屬性用來(lái)確定當用戶(hù)右擊控件區時(shí),將對應地彈出哪種彈出式菜單。用戶(hù)可以通過(guò)右擊控件,來(lái)實(shí)現對應彈出式菜單的打開(kāi)操作,用戶(hù)可以通過(guò)調用彈出式菜單的Popup的方法來(lái)打開(kāi)彈出式菜單。
例子:
procedure Tform1.FormCreate(Sender:Tobject);
begin
Form1.PopupMenu:=PopupMenu1;
//..
end;
//Exit the appllication when the Exit pop-up menu items is clicked
procedure Tform1.PopUpExitClick(Sender:Tobject);
begin
Close;
end;
ScalingFlags 屬性
對應對象:TControl
聲明:TscalingFlags=set of (sfLeft,sfTop,sfWidth,sfHeight,sfFont);
property ScalingFlags:TscalingFlags;
功能:ScalingFlags屬性反應出控件的哪一個(gè)屬性還沒(méi)有進(jìn)行尺度的計算。
ScalingFlags屬性是一個(gè)內部標記的集合,首先在計算繼承的窗體和控件的縮放比例時(shí)被使用。要是沒(méi)有必要,應用程序將不使用這個(gè)屬性。以下是標記和它們對應所表達的信息意義:
標記 意 義
SfLeft控件的左邊沒(méi)有被進(jìn)行尺寸計算縮放。
SfTop控件的頂端沒(méi)有被進(jìn)行尺寸計算縮放。
SfWidth控件的寬度沒(méi)有被進(jìn)行尺寸計算縮放。
SfHeight控件的高度沒(méi)有被進(jìn)行尺寸計算縮放。
sfFont控件的字體沒(méi)有被進(jìn)行尺寸計算縮放。
ShowHint屬性
對應對象:TConcrol
聲明:property ShowHint:Boolean;
功能:ShowHint屬性用來(lái)確定控件是否顯示一個(gè)工具提示。如果ShowHint屬性被設置為真,那么當鼠標或光標停留在控件上時(shí),將會(huì )顯示出一個(gè)具有Hint屬性的中文內容的工具提示。如果ShowHint屬性被設置為假,同時(shí)ParentShowHint屬性的值是假,那么將不顯示工具的提示,但當ShowHint屬性被設置為假ParentShowHint屬性的值為真時(shí),工具提示將依據其父類(lèi)的ShowHint屬性,如果父類(lèi)的ShowHint屬性是真,工具提示將顯示,否則將不出現提示。ShowHint屬性的缺省的值是真。
例子:
procedure Tform1.FormPaint(Sender:Tobject);
begin
btnHideMenu.ShowHint:=True;
btnHideMenu.Hint:=’Click here to enable menus’;
end;
Text 屬性
對應對象:TControl
聲明:Tcaption:=type string;
property Text:Tcaption;
功能:Text屬性用來(lái)確定控件中出現的用戶(hù)編輯的文字內容。在運行是可以在程序中對文字進(jìn)行修改,但卻很少這樣作。由于Caption的屬性,用戶(hù)是不能編輯的,所以不允許用戶(hù)編輯的控件所顯示的文字將是Caption的屬性。
Top 屬性
對應對象:TControl
聲明:property Top:Integer;
功能:Top屬性用來(lái)確定控件左上方的坐標值。Top屬性是一個(gè)使用了容器坐標的屬性。它說(shuō)明控件的邊界距離容器的邊界有多少象素,并且窗體的Top屬性以及屏幕坐標進(jìn)行度量。
Visible 屬性
對應對象:TControl
聲明:property Visible:Boolean;
功能:Visible屬性用來(lái)確定控件是否是可見(jiàn)。如果Visible屬性為真,那么將是可見(jiàn)的。如果Visible屬性為假,則是不可見(jiàn)的。
Width 屬性
對應對象:TControl
聲明:property Width:Integer;
功能:Width屬性說(shuō)明了控件的寬度值。用戶(hù)象素值指出控件的水平大小。用戶(hù)可以在運行時(shí)修改Width屬性值來(lái)改變控件的寬度。
例子:參見(jiàn)Height屬性例子。
WindowProc 屬性
對應對象:TControl
聲明:TwndMethod=procedure ( var Message:Tmessage) of object;
property WindowProc:TwndMethod;
功能:WindowProc屬性包含了窗口的過(guò)程,過(guò)程是對傳送給控件信息的一種反應。
BeginDrag 方法
對應對象:TControl
聲明:procedure BeginDrag(Immediate:Boolean);
功能:BeginDrag方法在控件被手工拖動(dòng)時(shí)有效,BeginDrag方法用來(lái)啟動(dòng)一個(gè)控件的拖動(dòng)過(guò)程。Immediate參數用來(lái)確定拖動(dòng)操作的條件,如果Immediate參數為真,那么拖動(dòng)將立即實(shí)行,同時(shí)鼠標將變?yōu)橥蟿?dòng)設置時(shí)的形式,如果Immediate參數為假,鼠標將不改變,只是當鼠標在空間上移動(dòng)了5個(gè)象素時(shí)才開(kāi)始進(jìn)行拖動(dòng)的操作。
BringToFront 方法
對應對象:TControl
聲明:procedure BringToFront;
功能:BringToFront方法用來(lái)改變控件軸的次序,并吧它放置在所有其他控件的上面。每一個(gè)窗口和非窗口的控件都有對應的Z軸次序。每個(gè)窗體上的窗口控件都在相同的Z軸次序上,每個(gè)非窗口的控件在一個(gè)獨自的Z軸次序集合中。一個(gè)窗體上的所有窗口控件存在于一個(gè)Z軸次序集合中,所有的非窗口控件在另一個(gè)的Z軸次序集合中。窗口的控件總是出現在非窗口控件的上面,窗口控件下面的非窗口的控件將不能使用BringToFront方法出現在窗口控件的上面。
例子:
procedure Tform1.Button2Click(Sender:Tobject);
begin
Button1.BringToFront;
end;
ChangeScale 方法
對應對象:TControl
聲明:procedure ChangeScale(M,D:Integer);dynamic;
功能:ChangeScale方法改變空間的大小,并依據一個(gè)指定的比例值來(lái)進(jìn)行。
Click 方法
對應對象:TControl
聲明:procedure Click:dynamic;
功能:Click方法調用與事件關(guān)聯(lián)的控制事件的句柄。
ClientToScreen 方法
對應對象:TControl
聲明:Tpoint=record
X:Longint;
Y:Longint;
End;
Function ClientToScreen(const Point:Tpoint):Tpoint;
功能:方法將控件坐標上的一個(gè)點(diǎn)的坐標值轉換成屏幕坐標的值。
例子:
procedure Tform1.FormCreate(Sender:Tobject);
var
ButtonPos:Tpoint;
Begin
ButtonPos:=Button1.ClientToScreen(Point(Button1.Left,Button1.Top));
//…
End;
Create 方法
對應對象:TControl
聲明:constructor Create(Aowner:Tcomponent);override;
功能:Create方法用來(lái)創(chuàng )造一個(gè)TControl的事件。
DefaultHandler 方法
對應對象:TControl
聲明://DefaultHandler provides message handling for all messages that a control
does
//not have specific handlers for.
Procedure DefaultHandler(var Message);override;
功能:DefaultHandler方法用來(lái)當一個(gè)控件沒(méi)有指明處理時(shí),提供了對所有信息的缺省處理。
DoEndDrag 方法
對應對象:TControl
聲明:procedure DoEndDrag (Target:Tobject);X,Y:Integer);dynamic;
功能:DoEndDrag方法提供了對一個(gè)控件的OnEndDrag事件進(jìn)行保護實(shí)施的方法。
DragCanceled 方法
對應對象:TControl
聲明:procedure DragCanceled;dynamic;
功能:DragCanceled方法除了提供對一個(gè)拖動(dòng)進(jìn)行取消反應外沒(méi)有其他的操作。
DragOver 方法
對應對象:TControl
聲明:TdragState=(dsDragEnter,dsDragLeave,dsDragMove);
procedure DragOver (Source:Tobject;X,Y:Integer;State:TdragState;var
Accept:Boolean);dynamic;
功能:DragOver方法調用OnDragOver事件的句柄。設置Accept參數為真時(shí)將說(shuō)明使用者可以在控件上放置被拖動(dòng)的對象,當Accept參數為假時(shí),說(shuō)明用戶(hù)不能在控件上放置被拖動(dòng)的對象到。Source參數時(shí)被拖動(dòng)的對象,以下時(shí)可能有效的State參數值。
值 意 義
DsDragEnter鼠標正在進(jìn)入控件。
DsDragMove鼠標在控件上移動(dòng)。
dsDragLeave鼠標離開(kāi)控件。
EndDrag 方法
對應對象:TControl
聲明:procedure EndDrag(Drop:Boolean);
功能:EndDrag方法將終止一個(gè)控件被進(jìn)一步的拖動(dòng)。如果Drop參數為真,那么可以放下控件,如果Drop參數為假,控件將不能被放下,拖動(dòng)的操作將被取消。
GetClientOrigin 方法
對應對象:TControl
聲明:function GetClientOrigin:Tpoint;virtual;
功能:GetClientOrigin方法獲得一個(gè)控件用戶(hù)區左上角屏幕的坐標值。
GetClientRect 方法
對應對象:TControl
聲明:Trect=record
case integer of
0: (Left,Top,Right,Botton:Integer);
1: (TopLeft,BottonRight:Tpoint);
end;
function GetClinetRect:Trect;virtual;
功能:GetClinetRect方法返回一個(gè)矩形,以用來(lái)定義控件的用戶(hù)區。
GetDeviceContext 方法
對應對象:TControl
聲明:function GetDeviceContext( var WindowHandle:HWnd):Hdc;virtual;
功能:GetDeviceContext方法返回一個(gè)設備的上下文。
GetDragImages 方法
對應對象:TControl
聲明:function GetDragImages:TcustomImageList;virtual;
功能:GetDragImages方法返回控件的圖象列表,列表中包含了當拖動(dòng)時(shí)被顯示的圖像。
GetPalette 方法
對應對象:TControl
聲明:funciton GetPalette:HPALETTE;dynamic;
功能:GetPalette方法返回一個(gè)調色板的句柄,它被控件所使用。
GetParentComponent 方法
對應對象:TControl
聲明:funciton GetParentComponent:Tcomponent;override;
功能:GetParentComponent方法返回控件父類(lèi)的組件。
GetPopupMenu 方法
對應對象:TControl
聲明:function GetPopupMenu:TpopupMenu;dynamic;
功能:GetPopupMenu方法獲得一個(gè)控件的彈出式菜單。
GetTextBuf 方法
對應對象:TControl
聲明:function GetTextBuf ( Buffer:Pchar;BufSize:Integer):Integer;
功能:GetTextBuf方法用來(lái)獲得控件所包含的文字,并且將文字拷貝到一個(gè)緩沖區中。GetTextBuf方法從控件中獲得文字,并把它作為一個(gè)以空字符結束的字符串拷貝到Buffer指定的緩沖區內。BufSize參數用來(lái)說(shuō)明緩沖區的大小,在調用GetTextBuf方法之前使用GetTextLen方法進(jìn)行設置。文字作為一個(gè)以空字符結尾的字符串被拷貝到緩沖區中。
例子:
procedure Tform1.Button2Click(Sender:Tobject);
var
MyBuffer:Pchar;
MyBufSize:Integer;
Begin
MyBufSize:=Button1.GetTextLen;
Button1.GetTextBuf(MyBuffer,MyBufSize);
StatusBar1.SetTextBuf(MyBuffer);
End;
GetTextLen 方法
對應對象:TControl
聲明:function GetTextLen:Integer;
功能:GetTextLen方法用來(lái)檢索控件文字的大小。GetTextLen方法一般在調用GetTextBuf方法之前使用,以便確定緩沖區的大小。使用GetTextLen方法可以代替字符串的處理函數。
例子:
procedure Tform1.Button2Click(Sender:Tobject);
var
MyBuffer:Pchar;
MyBufSize:Integer;
Begin
MyBufSize:=Button1.GetTextLen;
Button1.GetTextBuf(MyBuffer,MyBufSize);
StatusBar1.SetTextBuf(MyBuffer);
End;
HasParent 方法
對應對象:TControl
聲明:function HasParent:Boolean;override;
功能:HasParent方法用來(lái)說(shuō)明控件是否有一個(gè)父類(lèi)。
Hide 方法
對應對象:TControl
聲明:procedure Hide;
功能:Hide方法使一個(gè)控件變?yōu)椴豢梢暤?。在Hide方法把控件的Visible屬性設置為假 時(shí),可使控件變的不可件的。
例子:
//If the “Hide menus” menu item is clicked,hide the forms menus but make the
//”show menu” button visible so the user can turn the menu on again if necessary
procedure Tform1.menuHideMenu1Click(Sender:Tobject);
begin
BtnHideMenu.Hide;
Form1.Menu:=nil;
End;
// If the “Show menu” button is clicked,hide the button and show the form’s main
menu
procedure Tform1.btnShowMenuClick(Sender:Tobject);
begin
From1.Menu:=MainMenu1;
BtnHideMenu.Hide;
end;
Invalildate 方法
對應對象:TControl
聲明:procedure Invalidate;virtual;
功能:Invalidate方法使控件對本身進(jìn)行再次繪制。在調用Invalidate方法時(shí)應該盡快地重新繪制控件,Invalidate方法有Refresh調用。
例子:
procedure Tform1.Button1Click(Sender:Tobject);
begin
//Invalidate the form so that it can be repainted
Form1.Intevalidate;
Form1.Canvas.Repaint;
end;
MouseDown 方法
對應對象:TControl
聲明:TmouseButton=(mbleft,mbRight,mbMiddle);
TshiftState=set of (ssShift,ssAlt,ssCtrl,ssLeft,ssRight,ssMiddle,ssDouble);
Procedure MouseDown (Button:TmouseButton;Shift:TshiftState;X,Y:Integer);
Dynamic;
功能:MouseDown方法調用OnMouseDown事件的句柄。
MouseMove 方法
對應對象:TControl
聲明:TshiftState=set of (ssShift,ssAlt,ssCtrl,ssLeft,ssRight,ssMiddle,ssDouble);
procedure MouseMove(Shift:TshiftState;X,Y:Integer);dynamic;
功能:MouseMove方法調用連接到OnMouseMove事件的句柄。
MouseUp方法
對應對象:Tcontrol
聲明:TmouseButton=(mbLeft,mbRight,mbMiddle);
TshiftState=set of (ssShift,ssAlt,ssCtrl,ssLeft,ssRight,ssMiddle,ssDouble);
Procedure MouseUp(Button:TmouseButton;Shift:TshiftState;X,Y:Integer); Dynamic;
功能:MouseUp方法調用了OnMouseUp事件的句柄。
Notification方法
對應對象:Tcontrol
聲明:Toperation=(opInsert,opRemove);
procedure Notification(Acomponent:Tcomponent;Operation:Toperation);override;
功能:當彈出式菜單的參考被破壞時(shí)Notification方法允許Tcontrol更新它的彈出式菜單的屬性。
PaletteChanged方法
對應對象:Tcontrol
聲明:function PaletteChanged(Foreground:Boolean):Boolean;dynamic;
功能:PaletteChanged方法對系統調色板的改變進(jìn)行反應,它重新設置控件調色板的大小。
Perform方法
對應對象:Tcontrol
聲明:function Perform(Msg:Cardinal;WParam,Lparam:Longint):Longint;
功能:Perform方法當控件接受指定的系統信息時(shí)反應。
Refresh方法
對應對象:Tcontrol
聲明:procedure Refresh;
功能:Refresh方法用來(lái)刪除控件中的圖像并且重新繪制控件。
Refresh方法使用了InValidate和Update以刷新控件。如果用戶(hù)的顯示部分和其它的分布相混合,可以使用該方法進(jìn)行更新。
例子:
procedure Tform1.mnuRefreshClick(Sender:Tobject);
begin
Form1.Refresh;
end;
Repaint方法
對應對象:Tcontrol
聲明:procedure Repaint;
功能:Repaint方法使控件對自已進(jìn)行重新繪制。Repaint方法和Refresh方法一樣,只是這個(gè)方法不先刪除控件的圖像。如果用戶(hù)希望首先刪除控件之后再繪制它,可以使用Refresh方法。
ScreenToClient方法
對應對象:Tcontrol
聲明:Tpoint=record
X:Longint;
Y:Longint;
End;
Function ScreenToClient(const Point:Tpoint):Tpoint;
功能:ScreenToClient方法將屏幕的坐標值轉換成為控件的坐標值,ScreenToClient方法可以和屏幕到用戶(hù)區的方法一起使用,以便將應該控件的坐標轉換成為另一個(gè)控件的坐標值。
SendCancelMode方法
對應對象:Tcontrol
聲明:procedure SendCancelMode(Sender:Tcontrol);
功能:SendCancelMode方法取消了控件的模式狀態(tài)。
SendToBack方法
對應對象:Tcontrol
聲明:procedure SendToBack;
功能:SendToBack方法將控件放置到容器中的所有其它控件的下面。窗口和非窗口控件有不同的Z軸的次序集合。一個(gè)窗體上的每一個(gè)窗口都在一個(gè)相同的Z軸的次序集合中,窗口控件總是出現在非窗口控件的上面,所以使用SendToBack方法將不能使一個(gè)非窗口控件上面的窗口控件放置到它的下面。
例子:
//Send the button behind the Panel
procedure Tform1.Button1Click(Sender:Tobject);
begin
Button1.SendToBack;
End;
SetBounds方法
對應對象:Tcontrol
聲明:procedure SetBounds(Aleft,Atop,Awidth,Aheight:Integer);virtual;
功能:SetBounds方法用來(lái)設置控件的Left,Top,Width和Height屬性。SetBounds方法使用用戶(hù)可以在一次中設置控件邊界的所有屬性。這樣可以使控件在一次重新繪制時(shí)就完成最后的效果,然而,一般的單獨調用將使控件進(jìn)行多次的重新繪制。
例子:
//Have the panel resize with the form
procedure Tform1.FormResize(Sender:Tobject);
begin
Panel1.SetBounds(10,10,Form1.ClientWidth-20,Form1.ClientHeight-20);
End;
SetDragMode方法
對應對象:Tcontrol
聲明:TdragMode=(dmManual,dmAutomatic);
procedure SetDragMode(Value:TdragMode);virtual;
功能:SetDragMode方法為控件設置了拖動(dòng)的模式。
SetName方法
對應對象:Tcontrol
聲明:TcomponentName=type string;
procedure SetName(const Value:TcomponentName);override;
功能:SetName方法設置了控件的名。
SetParent方法
對應對象:Tcontrol
聲明:procedure SetParent(Aparent:TwinControl);virtual;
功能:SetParent方法使控件可以設置它的父類(lèi)。
SetTextBuf方法
對應對象:Tcontrol
聲明:procedure SetTextBuf(Buffer:Pchar);
功能:SetTextBuf方法使一個(gè)緩沖區中的文字拷貝到一個(gè)控件中。
Buffer是一個(gè)指向以空字符結束的字符串。
例子:
procedure Tform1.Button2Click(Sender:TObject);
var MyBuffer:Pchar;
MyBufSize:Integer;
Begin
MyBufSize:=Button1.GetTextLen;
Button1.GetTextBuf(MyBuffer,MyBufSize);
StatusBar1.SetTextBuf(MyBuffer);
End;
SetZOrder方法
對應對象:Tcontrol
聲明:procedure SetZOrder(TopMost:Boolean);dynamic;
聲明:Trect=record
case Integer of
0:(Left,Top,Right,Bottom:Integer);
1:(TopLeft,BottomRight:Tpoint);
end;
procedure UpdateBoundsRect(const R:Trect);
功能:UpdateBoundsRect方法改變控件的Top,Left,Width和Height屬性,但是沒(méi)有更新控件的屏幕圖像。
OnClick事件
對應對象:Tcontrol
聲明:TnotifyEvent=procedure(Sender:Tobject) of object;
property:TnotifyEvent;
功能:OnClick事件在鼠標指針點(diǎn)擊控件時(shí)發(fā)生。
當用戶(hù)使用鼠標在控件上時(shí)點(diǎn)擊鼠標按鈕激發(fā)一個(gè)控件,或用戶(hù)通過(guò)其它的操作觸發(fā)OnClick事件。這個(gè)事件是應用程序使用最多的一個(gè)事件。用戶(hù)可以為OnClick事件的處理程序設置為運行的過(guò)程,也可以在設計時(shí),在大小探測器中為一個(gè)控件選擇Onlick事件來(lái)完成操作。
OnDblClick事件
對應對象:Tcontrol
聲明:TnotifyEvent=procedure(Sender:Tobject) of object;
property OnDblClick:TnotifyEvent;
功能:OnDblClick事件當用戶(hù)雙擊控件時(shí)發(fā)生。在用戶(hù)在一個(gè)控件上雙擊鼠標時(shí)將引發(fā)OnDblClick事件。用戶(hù)可以為一個(gè)OnDblClick事件的處理程序設置為一個(gè)運行過(guò)程,也可以在設計時(shí),在大小探測器中為一個(gè)控件選擇OnDblClick事件來(lái)完成操作。
OnDragDrop事件
對應對象:Tcontrol
聲明:TdragDropEvent=procedure(Sender,Source:Tobject;X,Y:Integer) of object;
property OnDragDrop:TdragDropEvent;
功能:OnDragDrop事件當一個(gè)被拖動(dòng)的對象被放置到控件上時(shí)發(fā)生。Sender參數說(shuō)明了將被放置對象的控件的標識符。Source參數說(shuō)明了被拖動(dòng)放置的對象。坐標參數說(shuō)明了對象被放置到控件的位置。用戶(hù)可以為一個(gè)OnDragDrop事件的處理程序設置為一個(gè)運行過(guò)程,也可以在設計時(shí),在大小探測器中為一個(gè)控件選擇OnDragDrop事件來(lái)完成操作。
例子:
type
Tform1=class(Tform)
Panel1:Tpanel;
Image1:Timage;
Procedure MyDragDrop(Sender,Source:Tobject;X,Y:Integer);
Procedure
MyDragOver(Sender,Source:Tobject;X,Y:Integer;State:TdragState;var
Accept:Boolean);
Private
{Private declarations}
Public
{Public declarations}
end;
var
Form1:Tform1;
Implementation
{$R *.DFM}
procedure Tform1.MyDragDrop(Sender,Source:Tobject;X,Y:Integer);
begin
if Soruce is Timage then
begin
TImage(Source).Parent:=Panel1;
TImage(Source).Left:=X;
Timage(Source).Top:=Y;
End;
End;
Procedure
Tform1.MyDragOver(Sender,Source:Tobject;X,Y:Ingeger;State:TdragState; var
Accept:Boolean);
Begin
if Soruce is Timage then begin
Timage(Source).DragCursor:=crCross;
Accept:=True;
End;
End;
Procedure Tform1.FormCreate(Sender:Tobject);
Begin
Panel1.OnDragDrop:=Form1.MyDragDrop;
Panel1.OnDragOver:=Form1.MyDragOver;
End;
OnDragOver事件
對應對象:Tcontrol
聲明:TdragState=(dsDragEnter,dsDragLeave,dsDragMove);
TdragOverEvent=procedure(Sender,Source:Tobject;X,Y:Integer;State:TdragState;var:Boolean)
of object;
功能:OnDragOver事件在一個(gè)控件上拖動(dòng)對象時(shí)發(fā)生。
當用戶(hù)在控件上拖動(dòng)一個(gè)對象時(shí),OnDragOver事件將發(fā)生。Sender說(shuō)明了控件的標識符。Soruce參數說(shuō)明被拖動(dòng)的對象。坐標參數說(shuō)明了被拖動(dòng)對象在控件坐標上的位置。Accept參數說(shuō)明了控件是否允許被拖動(dòng)的對象放置在它的上面。如果Accept參數被設置為真,那么將使控件接受對象的放置。否則不接受。用戶(hù)可以為一個(gè)OnDragOver事件的處理程序設置為一個(gè)運行過(guò)程,也可以在設計時(shí),在大小探測器中為一個(gè)控件選擇OnDragOver事件來(lái)完成操作。
例子:參見(jiàn)OnDragDrop事件的例子。
OnEnddrag事件
對應對象:Tcontrol
聲明:TendDragEvent=procedure(Sender,Target:Tobject;X,Y:Integer) of object;
property OnEndDrag:TendDragEvent;
功能:OnEndDrag事件在一個(gè)拖動(dòng)的操作停止時(shí)發(fā)生。
當控件接受一個(gè)被拖動(dòng)的對象,或者用戶(hù)取消了拖動(dòng)操作時(shí),用戶(hù)可取消拖動(dòng)操作。Sender參數是被拖動(dòng)的對象。Target是鼠標對應的控件,當一個(gè)拖動(dòng)的操作停止時(shí),它將變?yōu)楸煌蟿?dòng)的對象。坐標是使用Target控件的坐標用來(lái)說(shuō)明被拖動(dòng)的對象在當前的位置。用戶(hù)可以為一個(gè)OnEndDrag事件的處理程序設置一個(gè)運行過(guò)程,也可以在設計時(shí),在大小探測器中為一個(gè)控件選擇OnEndrag事件來(lái)完成操作。
例子:
type
Tform1=class(Tform)
Panel1:Tpanel;
Image1:Timage;
Procedure MyEndDrag(Sender,Target:Tobject;X,Y:Integer);
Private
{Private declarations}
public
{Public declarations}
end;
var
Form1:tForm1;
Implementation
{$R *.DFM}
procedure Tform1.FormCreate(Sender:Tobject);
begin
Image1.OnEndDrag:=Form1.MyEndDrag;
End;
Procedure Tform1.MyEndDrag(Sender,Target:Tobject;X,Y:Integer);
Begin
If Target is Tpanel then
StatusBar1.Panels[1].text:=’Drag ended on panel.’
Else
Statusbar1.panels[1].text:=’Drag did not end on panel.’;
End;
OnMouseDown事件
對應對象:Tcontrol
聲明:TMouseButton=(mbLeft,mbRight,mbMiddle);
TshiftState=set of ssShift,ssAlt,ssCtrl,ssLeft,ssRight,ssMiddle,ssDouble);
TMouseEvent=procedure(Sender:Tobject;Button:TmouseButton;Shift:Tshiftstat
e;X,Y:Integer) of object;
Property OnMouseDown:TmouseEvent;
功能:OnMouseDown事件當在控件上點(diǎn)擊鼠標時(shí)激發(fā)。
Sender參數用來(lái)說(shuō)明鼠標點(diǎn)擊時(shí),鼠標下面的那一個(gè)控件。Button參數說(shuō)明了使用哪一個(gè)鼠標的按鈕,此變量是屬于TmouseButton類(lèi)型,有效時(shí)為mbLeft,mbRight和mbMiddle。Shift參數是ssShift,ssAlt,ssCtrl,ssLeft,ssRight,ssMiddle,ssDouble這些參數的任意的組合,如果沒(méi)有使用修正鍵,那么Shift將被設置成為[].坐標的參數使用了Sender控件坐標以指出點(diǎn)擊時(shí)鼠標的位置。用戶(hù)可以為一個(gè)OnMouseDown事件的處理程序設置一個(gè)運行過(guò)程,也可以設計時(shí),在大小探測器中為一個(gè)控件選擇OnMouseDown事件來(lái)完成操作。
例子:
type
Tform1=class(Tform)
Procedure
MyMouseDown(Sender:Tobject;Button:TmouseButton:Shift;TshiftState;X,Y:Integer);
Private
{Private declarations}
public
{public declarations}
end;
var
Form1:Tform1;
Implementation
{$R *.DFM}
procedure Tform1.FormCreate(Sender:Tobject);
begin
Form1.MyMouseDown:=Form1.MyMouseDown;
End;
Procedure
Tform1.MyMouseDown(Sender:Tobject;Button:TmouseButton;Shift:TSHiftState;X,Y:Integer);
Begin
StatusBar1.Panels[0].Text:=’MouseDown on
Form:’+IntToStr(X)+’,’+IntToStr(Y);
End;
OnMouseMove事件
對應對象:Tcontrol
聲明:TshiftState=set of(ssShift,ssAlt,ssCtrl,ssLeft,ssRight,ssMiddle,ssDouble);
TmouseMoveEvent=procedre(Sender:Tobject;Shift:TshiftState;X,Y:Integer) of
object;
Property OnMouseMove:TmouseMoveEvent;
功能:OnMouseMove事件當鼠標指針在控件上移動(dòng)時(shí)發(fā)生。
當鼠標指針通過(guò)每一個(gè)控件時(shí),將連續地發(fā)生OnMouseMove事件。這個(gè)事件的發(fā)生將不需要鼠標的點(diǎn)擊。Sender參數說(shuō)明了發(fā)生事件的控件。Shift參數是ssShift,ssAlt,ssCtrl,ssLeft,ssRight,ssMiddle,ssDouble這些參數的任意的組合,如果沒(méi)有使用修正鍵那么Shift將被設置成為[].在事件發(fā)生時(shí)坐標參數將使用控件的坐標系來(lái)說(shuō)明鼠標的位置。用戶(hù)可以為一個(gè)OnMouseMove事件的處理程序設置一個(gè)運行過(guò)程,也可以設計時(shí),在大小探測器中為一個(gè)控件選擇OnMouseMove事件來(lái)完成操作。
例子:
type
Tform1=class(Tform)
StatusBar1:TstatusBar;
Procedure MyMouseMove(Sender:Tobject;Shift:TshiftState;X,Y:Integer);
Private
{private declarations}
public
{public declarations}
end;
var
Form1:Tform1;
Implementation
{$R *.DFM}
procedure Tform1.FormCreate(Sender:Tobject);
begin
Form1.OnMouseMove:=Form1.MyMouseMove;
End;
Procedure Tfrom1.MyMouseMove(Sender:Tobject;Shift:TshiftState;X,Y:Integer);
Begin
StatusBar1.Panels[2].Text:=’MouseMove on
Form:’+IntToStr(X)+’,’+IntToStr(Y);
End;
OnMouseUp事件
對應對象:Tcontrol
聲明:TmouseButton=(mbLeft,mbRight,mbMiddle);
TshiftState=set of(ssShift,ssAlt,ssCtrl,ssLeft,ssRight,ssMiddle,ssDouble);
TmouseEvent=procedure(Sender:Tobject;Button:TmouseButton;Shift:TshiftStatus;X,Y:Integer)
of object;
Property OnMouseUp:TmouseEvent;
功能:OnMouseUp事件當用戶(hù)點(diǎn)擊一個(gè)鼠標的按鈕時(shí)發(fā)生。在任何時(shí)候用戶(hù)點(diǎn)擊了按鈕時(shí),這個(gè)事件總是會(huì )發(fā)生。它說(shuō)明了用戶(hù)點(diǎn)擊了哪一個(gè)按鈕,在用戶(hù)釋放按鈕時(shí)指明按鈕指針的位置。Shift參數是ssShift,ssAlt,ssCtrl,ssLeft,ssRight,ssMiddle,ssDouble這些參數的任意組合,如果沒(méi)有使用修正鍵那么Shift將被設置成為[]。Button參數說(shuō)明了是用戶(hù)釋放的是哪一個(gè)按鈕,它可以是mbLeft,mbRight,mbMiddle三個(gè)值:左按鈕、右按鈕、中間按鈕。坐標參數說(shuō)明了在釋放鼠標按鈕時(shí),鼠標指針在控件坐標中的位置。用戶(hù)可以為一個(gè)OnMouseUp事件的處理程序設置一個(gè)運行過(guò)程,也可以設計時(shí),在大小探測器中為一個(gè)控件選擇OnMouseUp事件來(lái)完成操作。
例子:
type
Tform1=class(Tform)
Procedure
MyMouseUp(Sender:Tobject;Button:TmouseButton;Shift:TshiftState;X,Y:Integer);
Private
{private declarations}
public
{public declarations}
end;
var
Form1:Tform1;
Implementation
{$R *.DFM}
procedure Tform1.FormCreate(Sender:Tobject);
begin
Form1.OnMouseUp:=Form1.MyMouseUp;
End;
Procedure
Tform1.MymouseUp(Sender:Tobject;Button:TmouseButton;Shift:TshiftState;X,Y:Integer);
Begin
StatusBar1.Panels[0].Text:=’MouseUp on Form:’+IntToStr(X)+’,’+IntToStr(Y);
End;
OnStartDrag事件
對應對象:Tcontrol
聲明:TstartDragEvent=procedure (Sender:Tobject;var DragObject:TdragObject) of
object;
property OnStartDrag:TstartDragEvent;
功能:OnStartDrag事件在控件釋放操作發(fā)生時(shí)點(diǎn)發(fā)生。當用戶(hù)在一個(gè)控件上放置鼠標并且點(diǎn)擊了按鈕以便對控件進(jìn)行拖動(dòng)時(shí),OnStartDrag事件將被觸發(fā)。DragObject參數說(shuō)明了被拖動(dòng)的目標。用戶(hù)可以為一個(gè)OnStartDrag事件的處理程序設置一個(gè)運行過(guò)程,也可以設計時(shí),在大小探測器中為一個(gè)控件選擇OnStartDrag事件來(lái)完成操作。
例子:
type
Tform1=class(Tform)
StatusBar1:Tstatusbar;
Procedure MyStartDrag(Sender:Tobject;var DragObject:TdragObject);
Private
{private decalrations}
public
{public declarations}
end;
var
Form1:Tform1;
Implementation
{$R *.DFM}
procedure Tform1.FormCreate(Sender:Tobject);
begin
Image1.OnStartDrag:=Form1.MyStartDrag;
End;
Procedure Tform1.MyStartDrag(Sender:Tobject;var DragObject:TdragObject);
Begin
StatusBar1.Panels[1].Text:=’Drag Started.’;
End;
五、Tscreen
Tobject—>TPersistent—>Tcomponent
Tscreen的屬性:
In Tscreen
ActiveControl
ActiveCustomForm
ActiveForm
Cursor
Cursors
CustomFormCount
CustomForms
DataModuleCount
DataModeles
DefaultIme
DefaultKbLayout
Fonts
FormCount
Forms
Height
IconFont
Imes
PixelsPerInch
Width
從Tcomponent繼承來(lái)的:
ComObject
ComponentCount
ComponentIndex
Components
ComponentState
ComponentStyle
DesignInfo
Name
Owner
Tag
VCLComObject
TScreen的方法
In TScreen
Create
Destroy從TComponent繼承來(lái)的:
DestroyComponents
Destroying
FindComponent
FreeNotification
FreeOnRelease
GetParentComponent
HasParent
InsertComponent
RemoveComponent
SafeCallExecption
從TPersistent繼承來(lái)的:
Assign
GetNamePath
從TObject繼承來(lái)的:
ClassInfo
ClassName
ClassNameIs
ClassParent
ClassType
CleanupInstance
DefaultHandler
Dispatch
FieldAddress
Free
FreeInstance
GetInterface
GetInterfaceEntry
GetInterfaceTable
InheritsFrom
InitInstance
InstanceSize
MethodAddress
MethodName
NewInstance
TScreen的事件:
In TScreen
OnActiveControlChange
OnActiveFormChange
ActiveControl屬性
對應對象:TScreen
聲明:property ActiveControl :TWinControl;
功能:ActiveControl屬性用來(lái)確定有焦點(diǎn)的控件。
在任何時(shí)候,整個(gè)屏幕上只有一個(gè)控件有焦點(diǎn)。如果控件在應用程序的外面,則用戶(hù)不能訪(fǎng)問(wèn)它。一般ActiveControl被限制在應用程序的內部。
例子:
//Create a form with many controls,change the Interval property
//of the Timer to 500-every time a control is selected,the Form
//Caption changes to indicate which control has the foucus
procedure TForml.TimerlTimer(Sender:TObject);
begin
Form1.Caption := Screen.ActiveControl.Name;
end;
ActiveForm屬性
對應對象:TScreen
聲明:property ActiveForm :TForm;
功能:ActiveForm屬性用來(lái)確定被激活的窗體是哪一個(gè)窗體。這個(gè)屬性是只讀型的。它指出具有焦點(diǎn)的窗體。
例子:
//Create a program with two forms-Show Form2 by
//clicking a button on the first form. This method will
//put the name of the active form on Form2’s caption
procedure TForm2.Timer1Timer(Sender : TObject);
begin
Form2.Caption := Screen.ActiveForm.Name;
end;
Cursor屬性
對應對象:TScreen
聲明: property Cursor:TCursor;
功能:Cursor屬性用來(lái)確定光標的形狀。
改變Cursor屬性的值將對應地改變應用程序中用戶(hù)區域的光標形狀。
以下說(shuō)明使用的TCursor類(lèi)型時(shí)的可能值:
類(lèi)型常數值功 能
crDefautl0依據ActiveControl。
crNone-1無(wú)光標。
crArrow-2標準光標。
crCross-3十字光標。
crIBeam-4I形光標。
crSize-5十字箭頭光標。
crSizeNESW-6右斜方箭頭光標。
crSizeNS-7上下方箭頭光標。
crSizeNWSE-8左斜方箭頭光標。
crSizeWE-9左右箭頭光標。
crUpArrow-10向上箭頭光標。
crHourGlass-11等待光標。
crDrag-12箭頭加文本光標。
crNoDrop-13
crHSPlit-14左右移動(dòng)表格線(xiàn)光標。
crVSplit-15上下移動(dòng)表格線(xiàn)光標。
crMultiDrag-16箭頭加多文本光標。
crSQLWait-17SQL加等待光標。
crNo-18
crAppStart-19等待加箭頭光標。
crHelp-20箭頭加問(wèn)號光標。
crHandPoint-21手光標。
例子:
procedure TForm1.FormCreate(Sender : TObject);
begin
Screen.Cursor := crUpArrow;
end;
Cursors屬性
對應對象:TScreen
聲明:property Cursors [Index:Integer] : HCursor;
功能:Cursors屬性是用戶(hù)可以使用的光標數組。
Cursors屬性允許用戶(hù)在應用程序中加載自定義的光標,全局光標的預定義集由TCursor來(lái)定義。前面介紹的Cursor屬性中說(shuō)明了TCursor類(lèi)的光標元素。如果用戶(hù)希望創(chuàng )建自己的光標,可以使用Delphi的圖形編輯器來(lái)繪制光標,并且在源代碼中說(shuō)明一個(gè)常量來(lái)表示光標在Cursors數組中的位置,使用系統的API函數比LoadCursor以便使這個(gè)光標成為程序共享的資源。例如,設想一個(gè)用戶(hù)定制的光標已經(jīng)被加載到應用程序的資源中去,并且命名為NewCursor。以下的代碼使這個(gè)光標在應用程序中是有效的,通過(guò)光標常數crMyCursor,并設置它是全局的。
例子:
implementation
{$R *.DFM}
const
crMyCursor = 5;
procedure TForm1.FormCreate(Sender : TObject);
begin
Screen.Cursors[crMyCursor] := LoadCursor(HInstance, ‘NewCursor’);
Cursor := crMyCursor;
end;
CustomFormCount屬性
對應對象:TScreen
聲明:property CustomFormCount : Integer;
功能:CustomFormCount說(shuō)明了在屏幕上所顯示的窗體號或屬性頁(yè)。
CustomForms屬性
對應對象:TScreen
聲明:property CustomForms [Index :Integer]:TCustomForm;
功能:CustomForms是一個(gè)所有的屬性頁(yè)和窗體的例表,它們是在當前的屏幕上顯示。
DataModuleCount屬性
對應對象:TScreen
聲明:property DataModuleCount:Integer;
功能:DataModuleCount屬性說(shuō)明了在當前的應用程序中例示的數據模塊的號。
DataModules屬性
對應對象:TScreen
聲明:property DataModules [Index:Integer]:TDataModule;
功能:DataModules是在當前應用程序中例示的所有數據模塊的例表數組。
DefaultIme屬性
對應對象:TScreen
聲明:property DefaultIme:string;
功能:DefaultIme屬性說(shuō)明了輸入方法編輯器的名,輸入方法編輯器在TScreen對象被創(chuàng )建時(shí)被激活。
DefauItKbLayout屬性
對應對象:TScreen
聲明:property DefaultKbLayout:HKL;
功能:DefauItKbLayout屬性是當應用程序開(kāi)始運行時(shí)被激活的鍵盤(pán)版面所對應的窗口句柄。
Fonts屬性
對應對象:TScreen
聲明:property Fonts:TStrings;
功能:Fonts屬性說(shuō)明了包含在應用程序中可用的字體例表。Fonts屬性是只讀型的,它包含了屏幕支持的字體例表,應用程序可用訪(fǎng)問(wèn)。用戶(hù)可以使用Fonts屬性來(lái)確定某種字體是否可以被使用,進(jìn)而確定所使用的字體。
例子:
//Display all of the available fonts
procedure TForm1.FormCreate(Sender : TObject);
begin
ListBox1.Sorted := True;
ListBox1.Items := Screen.Fonts;
end;
FormCount屬性
對應對象:TScreen
聲明:property FormCount:Integer;
功能:FormCount屬性包含了應用程序中屏幕上可以看到的窗體數目。它是只讀型的。
例子:
//Get form count
procedure TForm1.Button1Click(Sender : TObject);
begin
Label1.Caption := ‘There is/are’ + IntToStr(Screen.FormCount) +
‘form(s) on the screen.’;
end;
Forms屬性
對應對象:TScreen
聲明:property Forms[Index:Integer] : TFonn;
功能:Forms屬性對應了顯示的窗體數組。在應用程序中的每一個(gè)窗體所對應的Forms數組中都給了一個(gè)確定的位置。程序創(chuàng )建的第一個(gè)窗體是Forms[0],第二個(gè)窗體是Forms[1],依此類(lèi)推。Forms允許用戶(hù)通過(guò)Index值訪(fǎng)問(wèn)應用程序的每—個(gè)窗體。
例子:
當按鈕1被按擊時(shí),以下的代碼加載了在屏幕上的所有的窗體名到ListBoxl上。
procedure TForm1.Button1Click(Sender : TObject);
var
I : integer;
begin
For I := 0 to Screen.FormCount – 1 do
ListBox1.Items.Add(Screen.Forms[I ].Name);
end;
Height屬性
對應對象:TScreen
聲明:property Height : Integer;
功能:Height屬性包含有屏幕的高度。
Height屬性是只讀型的,包含有屏幕的垂直高度尺寸,并以象素來(lái)計數。
例子:
procedure TfrmScreenInfo.FormCreate(Sender : TObject);
begin
lblWidth.Caption := IntToStr(Screen.Width);
lblHeight.Caption := IntToStr(Screen.Height);
lblPixelsPerInch.Caption := IntToStr(Screen.PixelsPerInch);
end;
IconFont屬性
對應對象:TScreen
聲明:property IconFont : TFone;
功能:IconFont屬性是說(shuō)明了在文件選擇對話(huà)框中,顯示在圖標上的標簽的字體形式。
Imes屬性
對應對象:TScreen
聲明:property Imes : TStrings;
功能:Imes屬性說(shuō)明了在系統上安裝的所有輸入方法編輯器的例表。
Width屬性
對應對象:TScreen
聲明:property Width:Integer;
功能:Width屬性說(shuō)明了屏幕的寬度。這個(gè)屬性是只讀型的,包含有屏幕的水平尺寸,以象素來(lái)計數。示例:
with Screen do
for I := 0 to FormCount – 1 do
if Forms[I].Width > Width then Forms[I].Width := Width;
Create方法
對應對象:TScreen
聲明:constructor Create(AOwner:TComponent);override;
功能:Create方法用來(lái)創(chuàng )建一個(gè)TScreen對象的實(shí)例。
Destroy方法
對應對象:TScreen
聲明:destructor Destroy;override;
功能:Destroy方法用來(lái)消除一個(gè)TScreen對象的實(shí)例。
OnActiveControlChange事件
對應對象:TScreen
聲明:TNotifyEvent = procedure(Sender :TObject)of object;
property OnActiveControlChange:TNotifyEvent;
功能:當屏幕的焦點(diǎn)從一個(gè)控件轉換到另一個(gè)控件時(shí)發(fā)生OnActiveControlChange事件。如果每一次焦點(diǎn)的轉換事件發(fā)生時(shí)用戶(hù)希望應用程序處理一些操作的話(huà),可以對OnActiveControlChange事件創(chuàng )建一個(gè)事件的處理代碼來(lái)完成。當OnActiveCon-trolChange事件發(fā)生時(shí),屏幕的激活控制屬性的值將成為將要接收焦點(diǎn)的控件的屬性值。
例子:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
Type
TForm1 = class(TForm)
RadioGroup1 : TRadioGroup;
RadioButton1 : TRadioButton;
RadioButton2 : TRadioButton;
RadioButton3 : TRadioButton;
CheckBox1 : TCheckBox;
CheckBox2 : TCheckBox;
Button1 : TButton;
Button2 : TButton;
Procedure FormCreate(Sender : TObject);
private
{Private declarations}
public
//Manually added method declaration
Procedure FocusChanged(Sender : TObject);
end;
var
Form1 : TForm1;
implementation
{$R *.DFM}
//Create an event handler for OnActiveControlChange
procedure TForm1.FormCreate(Sender : TObject);
begin
Screen.OnActiveControlChange := FocusChanged;
end;
//Respond to OnActiveControlChange events
procedure TForm1.FocusChanged(Sender : TObject);
begin
if Screen.ActiveControl = Button2 then
Button1.Enabled := False;
Else Button1.Enabled := True;
end;
end.
OnActiveFormChange事件
對應對象:TScreen
聲明:TNotifyEvent = procedure(Sender:TObject) of object;
property OnActiveFormChange:TNotifyEvent;
功能:在激活的窗體被改變之前OnActiveFormChange事件發(fā)生。用戶(hù)可以為OnActiveFormChange事件創(chuàng )建一個(gè)認為代碼來(lái)實(shí)現在窗體改變之前希望完成的操作。
例子:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
Type
TForm1 = class(TForm)
RadioGroup1 : TRadioGroup;
RadioButton1 : TRadioButton;
RadioButton2 : TRadioButton;
RadioButton3 : TRadioButton;
CheckBox1 : TCheckBox;
CheckBox2 : TCheckBox;
Button1 : TButton;
Button2 : TButton;
Label1 : TLabel;
procedure FormCreate(Sender : TObject);
procedure Button1Click(Sender : TObject);
private
{Private declarations}
public
//Manually added method declaration
Procedure FormChanged(Sender : TObject);
end;
var
Form1 : TForm1;
implementation
uses Unit2;
{$R *.DFM}
//Create an event handler for OnActiveFormChange
procedure TForm1.FormCreate(Sender : TObject);
begin
Screen.OnActiveFormChange := FormChanged;
end;
//Handle the OnActiveFormChange event
procedure TForm1.FocusChanged(Sender : TObject);
begin
Label1.Caption := ‘Active Form is’ + Screen.ActiveForm.Name;
end;
//Show Form2 when the button is pressed
procedure TForm1.Button1Click(Sender : TObject);
begin
Form2.Show;
end;
end.
六、TColorDialog
TCommonDialog--TColorDialog
Color屬性
對應對象:TColorDialog
聲明:property Color:TColor default clBlack;
功能:Color屬性用來(lái)確定在顏色對話(huà)框中選擇哪一個(gè)顏色。當用戶(hù)選擇了一個(gè)新的顏色時(shí),Color屬性將被設置為新顏色的值。
例子:
//Change the color of the selected text when the user choose a
//color from the Color dialog box
procedure TForm1.sbColorClick(Sender: TObject);
begin
Colordialog1.Execute;
RichEdit1.SelAttributes.Color:=Colordialog1.Color;
End;
CustomColors屬性
對應對象:TColorDialog
聲明:property CustomColors:TStrings;
功能:CustomColors屬性確定在顏色對話(huà)框中可以獲得的一種自定義的顏色。CustomColors屬性保存了一個(gè)字符串的列表,每一個(gè)字符串的格式是:ColorX=HexValue,其中ColorX是16個(gè)自定義的顏色中的一個(gè),是從ColorA到ColorP,HexValue參數是一個(gè)十六進(jìn)制的數值,它說(shuō)明了構成顏色的所對應的RGB值。所以,對應于純白色這個(gè)值是FFFFFF,000000是純黑,使用Color0=000000說(shuō)明了把純黑色傳遞給顏色選擇。當顏色對話(huà)框被關(guān)閉時(shí),保存了對話(huà)框顏色的列表,以便用戶(hù)可以在下一次使用對話(huà)框時(shí)使用自定義顏色。
例子:
procedure TForm1.sbColorClick(Sender: TObject);
var X:Integer;
begin
Colordialog1.CustomColers:= StrCustomColors;
Colordialog1.Execute;
RichEdit1.SelAttributes.Color:=Colordialog1.Color;
StrCustomColors:=Colordialog1.CustomColors;
//Save StrCustomColors to the registry or an INI file
//when the program exits…
end;
Options屬性
對應對象:TColorDialog
聲明: TColorDialogOption = (cdFullOpen, cdPreventFullOpen, cdShowHelp,
cdSolidColor,
cdAnyColor);
TColorDialogOptions = set of TColorDialogOption;
property Options: TcolorDialogOptions default[];
功能:Options屬性說(shuō)明了顏色對話(huà)框的顯示形式和選項。
以下列舉了有效的選項值。
值意 義
cdFullOpen當顏色對話(huà)框被打開(kāi)時(shí)顯示了定制顏色的選項。
cdPreventFullOpen使在對話(huà)框中的定義定制的顏色成為不可用,所以便用者不能定義新的顏色。
cdShowHelp在對話(huà)框之中添加一個(gè)幫助按鈕。
cdSolidColor指引系統使用最近的純顏色的選擇。
cdAnyColor允許使用者選擇非純的顏色(可以被近似的抖動(dòng))
缺省時(shí)所有的選項是被關(guān)閉的。
例子:
procedure TForm1.FormCreate(Sender: TObject);
begin
ColorDialog1.Options:=[ cdFullOpen, cdShowHelp];
end;
OnClose事件
對應對象:TColorDialog
聲明:property OnClose:TNotifyEvent;
功能:當一個(gè)對話(huà)框被關(guān)閉時(shí),OnClose事件被引發(fā)。當對話(huà)框關(guān)閉時(shí)寫(xiě)入一個(gè)OnClose事件的句柄來(lái)完成指定的操作。