delphi控制元件使用
1- Tlistbox控制元件
重要屬性items.*
舉例,介面設計如下左,執行結果如下右:
程式碼為
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text := listbox1.Items.CommaText;
edit2.Text := listbox1.Items.Text;
edit3.Text := listbox1.Items.GetNamePath;
edit4.Text := listbox1.Items.Strings[1];
edit5.Text := listbox1.Items.DelimitedText;
edit6.Text := listbox1.Items.Names[1];
end;
由執行結果知,CommaText把各行用逗號隔開,Text獲得所有行數字符且不隔開,Strings[i]獲得i行的字元。
2- Checkbox控制元件
Alignment決定文字和框的左右佈局;state屬性裡有個Grayed狀態,為灰色選中狀態,與Enabled:=false不同的是它可以在程式執行的時候進行操作;AllowGrayed屬性為True時候,控制元件有三種狀態:選中、未選中、選中但變灰;
3- RadioGroup控制元件
Columns屬性設定radobutton的列數;
4- TmainMenu控制元件
Action屬性;AutoHotKeys屬性自動配置快捷鍵;
birmap屬性為某個選單標籤新增圖示;
Break屬性給選單分欄:mbBarBreak-分欄有豎線,mbBreak-只分欄無豎線,若要從末各標籤開始分欄,則設定該標籤的Break屬性;
Caption屬性設定為短橫線時為分隔橫線;
Checked屬性為True時為標籤新增對勾;
ShutCut屬性為標籤新增快捷鍵,並在標籤右邊顯示;
模板應用:右擊主選單,Insert..
儲存模板:與上類似,Save As..
5- PopMenu
應用步驟:新增控制元件,然後設定PopMenu屬性指向動作空間;
Additional頁
1-Navigator控制元件:
Flat屬性設定3D/2D效果;dragCursors設定拖動是顯示的符號,drag mode/dragkind決定是否可以進行拖動操作;
2-Additional頁的BitBtn控制元件
Kind屬性設定按鈕圖片型別,layOut設定圖片在按鈕上的佈局;Glyph屬性自定義圖片,圖片路徑c:\...Borland shared\Images
3- Additional頁的SpeedButton控制元件
Glyph屬性自定義圖片,圖片路徑c:\...Borland shared\Images; Flat屬性設定3D/2D效果;最大的優勢在於滑鼠指向它的時候呈立體效果;
4.- Additional頁的CheckListBox控制元件
Items屬性中寫入專案,但是專案前具有CheckBox的形式,可以進行專案選擇;
判斷第k個專案是否被選擇採用如下語句 :if checklistbox.checked[k] = ture ?,與若干單獨的checkbox比較優勢在於可以統一程式設計,不在需要對每一個checkbox單獨去編寫程式!
5. Additional頁的橡皮筋控制元件Spliter
作用是分割窗體,是一自動行為控制元件,無需任何時間程式碼。
使用過程為:放置控制元件,設定Align屬性,調整Height或width屬性。
6. Additional頁的靜態文字控制元件StaticText
功能與Text 類似,但通過設定Bevelkind, Bevelinner, Bevelouter和borderstyle屬性可以加強外觀修飾功能!!
7. Additional頁的控制棒控制元件ControlBar
功能:強大的控制元件修飾功能,是製作加速鍵面板的有理工具,譬如office中的工具按鈕等。
8.Tsahpe 控制元件
三個主要屬性:Pen屬性,Brush屬性,Shape屬性。Pen屬性決定邊框顯示,包括
LabelEdit控制元件
Label 和Edit的組合;
Win32頁
TabControl
重要屬性有:Tabs屬性建立頁數,Font修改字型屬性,Style更改頁面風格,Tabposition設定按紐方向、佈局。
TrackBar跟蹤條/程序條ProgressBar
對任務的執行狀態進行跟蹤。
重要屬性為:
a. min,max,設定舉例:trackbar1.Min := 0, trackbar1.Max := mediaplayer1.Length;
b. position 指定跟蹤物件,如trackbar1.Position := mediaplayer1.Position;
c. TickStyle為跟蹤型別選擇,一般選擇tsAuto。
日期時間控制元件 DataTimePicker
功能:拾取系統時間、日期,並以對應格式輸出
重要屬性:
a. date,拾取的時間。
b. Time,拾取的系統時間 舉例如:button2.Caption := TimeToStr(DateTimePicker1.Time);
c. DateFormat:dfShort為短格式,dfLong為中文長格式;
MonthCalendar控制元件
功能,直接顯示月曆,
樹結構目錄檢視控制元件TreeView
重要屬性:
Item>>生成樹結構,HotTrack實現熱追蹤;Font屬性設定樹結構的字型屬性;
AutoExpand: Boolean;
HotTrack: Boolean; 實現熱追蹤
Selected: TTreeNode;
Read Selected to access the selected node of the tree view. If there is no selected node, the value of Selected is nil.Set Selected to set a node in the tree view.
ShowButtons: Boolean;是否顯示樹結構錢的+、-號
具體使用如下
Var
node :Ttreenode; //定義樹節點型別
pnode : ttreenode;
begin
//增加選中節點的子節點,並展開
node := treeview1.Selected; //支點選擇
treeview1.Items.AddChild(node,'增加節點'); //增加子節點
node.Expanded := true; //展開支點
//增加選中節點的同級節點
pnode := treeview1.Selected.parent; //指向父節點
treeview1.Items.AddChild(pnode,'增加的同級節點'); //增加子節點(該節點的父節點的子節點為該節點同級節點)
end;
標題頭控制元件headerControl
製作標題頭
重要屬性:
a. setions:輸入標題文字;
b. style:有flat\buttons…等式樣,其中Flat式樣不接受sectionclick事件。
c. HotTrack
狀態條StatusBar
功能:顯示系統執行時的提示資訊
重要屬性:
a. simleText:當為單欄狀態條時,顯示資訊,應用如:StatusBar1.SimpleText := datetostr(date);
右擊StatusBar控制元件,開啟Panel Editor,可以設定多欄狀態條和各自的寬度。應用如StatusBar1.panels[2].Text := datetostr(date);(使用Timer控制元件以保持和系統時間的同步性)
ToolBar
功能:開發快捷鍵
右擊生成按鈕和分割符;對應的按鈕的Style屬性選擇按鈕屬性,共5種;按鈕的MenuItem屬性選擇關聯的下拉選單,按鈕的PopMenu屬性選擇關聯的右鍵選單。Hint和ShowHint配合使用顯示提示(Hint輸入提示文字,ShowHint設定為true)
實際使用步驟:1.在Win32頁中拖入imagelist控制元件,並雙擊開啟新增圖片;2.新增toolbar控制元件,設定hotimages和images屬性為imagelist空間,然後在上面新增工具按鈕,並設定工具按鈕imageIndex屬性,下一步就設定menuItem屬性選擇關聯彩單。
9 CoolBar
右擊生成Bans;
D7的TXPManifest控制元件
如果你的作業系統是XP,將TXPManifeS加入到窗體上,就可以使窗體以及其他所有孔件實現XP效果。如果不是XP系統就沒有任何用處。
System頁
OLE(物件聯結和嵌入容器)
右擊控制元件選擇Insert Object 彈出Ole Insert Object對話方塊,促啊如OLE伺服器物件。常見命令如下
OleContainer1.InsertObjectDialog;//彈出Ole Insert Object對話方塊
OleContainer1.DestroyObject(); //程式關閉的時候保證物件的銷燬
ActiveX(頁)類控制元件
Chartfx 控制元件
使用步驟:1.拖放控制元件;2.把控制元件的Toolbox屬性設定為True,從而開啟工具棒;3.右擊開啟“特性”……,其中label標籤中可以新增圖示的標題;
重要屬性:
Chart3D:是否採用3D繪圖方式
ChartType:選擇繪圖型別,如柱形圖,折線圖等
PalleteBar:面板工具顯示否(用來修改背景顏色和座標平面顏色),選True或者False;
PatternBar
問題:如何動態地新增資料,把它很好地運用到自己的程式中來?
F1book控制元件(Excel工作表控制元件)
拖入控制元件,雙擊行、列標題可以修改行列標題,右擊work designer可以設定屬性,其中gernal標籤下的Enable Protection可以設定使用者是否可以編輯表格中的資料。
Vtchart控制元件(excel立體圖控制元件)
Win3.1頁
資源管理器的製作(例項)
介面以及執行結果
製作步驟,在win3.1頁中加入DriveComboBox1,DirectoryListBox1,FileListBox1,FilterComboBox,然後連線各控制元件(設定DriveComboBox1的DirList屬性為DirectoryListBox1,DirectoryListBox1和FilterComboBox對filelist屬性為FileListBox1),最後開啟FileListBox1的Filter屬性設定過濾特性,形式如下
相關控制元件的重要屬性:
Filelistbox控制元件:
FileEdit:與Edit控制元件相關聯,顯示選中的檔名;
Mask:遮蔽檔案;
ShowGlphy :顯示檔案圖示。
DirectoryListBox控制元件:
DirLabel :與Label控制元件關聯,在Label控制元件中顯示資料夾帶路徑;
Filelist :和Filelistbox控制元件:相關聯。
Sample中的Shell Control 控制元件
,就是ShellTreeView,ShellListView,ShellComboBox和ShellChangeNotifier控制元件。
第三方控制元件
1. 托盤控制元件TrayIcon(D:\Delphi第三方控制元件,安裝後位於Samples頁中)
步驟:第一步,拖放控制元件至視窗,然後再新增一個ImageList控制元件,且新增圖示
第二步,設定Icons屬性為Imagelist,Animate屬性和AnimateInterval控制動畫效果;Visible控制可見性;Hint顯示提示資訊。
delphi應用
模板應用
1新建窗體file\new\Others…>>Form,如下
各個窗體為:
2新建對話方塊file\new\Others…>>Dialog,如下
可以建立如下對話方塊:密碼輸入;標準對話方塊;帶help的對話方塊,也可以用對話方塊嚮導建立需要的對話方塊。
,
3 應用程式生成
主要包括多窗體、但窗體應用程式生成,可通過ApplicationWizard來建立個性化的應用程式。如下圖
技巧
通用知識
快捷選單的使用
依次為New, Open, Save, Saveall, 開啟工程,新增檔案(檔案已經存在),從工程中移除檔案(不刪除)
依次為 開啟程式碼/視窗對話方塊,程式碼/視窗切換,新建窗體。
程式碼結構
(紫蘭為介面部分,包括use<引用單元>,type<元件、過程、函式,宣告?>,var<變數>,use<引用單元>)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
button1.Caption := 'xyz';
end;
end.
窗體屬性和事件
a. 窗體透明度設定:Alphablend := true >> AlphablendValue :=k (k在0到255之間)
b. 右上角按鈕有無設定:BorderIcons屬性(即關閉、最大、最小、問號等按鈕)
c. 邊框設定:Borderstyle屬性,其中為bsNone時無邊框,為bsDialog時只有關閉按鈕,其他不可改。
d. OnKeyPress事件:窗體啟用狀態時的鍵盤事件,參照“鍵盤的ASC碼”應用如下
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin //按Enter鍵窗體變紅
if key = #13 then Form1.Color := clred;
end;
d. OnMouseMove事件:在元件區域內滑鼠移動時發生
e. TabOrder屬性可以用來設定元件的(初始)焦點
f. 窗體的Onpaint事件,應用見“介面設計技巧”>>窗體背景色漸變
窗體重畫
在Form的Canvas上畫了很多東西,但視窗移動了一下之後畫的東西全沒了,怎麼解決?
>>重畫!將你的過程放在OnPaint事件裡!一般在Form的OnPaint事件中寫畫畫的程式碼。
窗體關閉詢問
窗體關閉前會觸發ONCloseQuery事件,該事件中的引數canclose是boolean型的
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if application.MessageBox('您將要關閉本視窗!確認是否繼續?','詢問',MB_YESNO+MB_ICONQUEStION)=ID_NO then
begin
CanClose:=false;
end;
end;
資料型別
1 指標的使用:首先宣告指標型別,再宣告指標變數
2 變體資料型別Variant和其他資料型別結合使用時自動轉換型別
如
V:variant
則:V:= 10; V:= 12.3;V:=’hello’;都是可以的。
Goto 語句的使用
procedure TForm1.Button1Click(Sender: TObject);
label N1;//保留字label宣告標號
label N2;
begin
goto N2;
N1: begin
Edit2.Text := Edit1.Text;
edit2.Color := clred;
exit; //程式執行完畢
end;
N2: Edit3.Text := edit1.Text;
goto N1;
end;
使用注意點:語句要在同一過程/函式中使用,不能跨塊操作;儘量在同一結構語句中使用;
自定義過程編寫
三步:首先在單元檔案的Type>Private下定義(在關鍵字 過程名,如:procedure greetings);再宣告過程功能,包括引數型別說明;過程呼叫
應用如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure greetings; //定義過程
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
greetings; //呼叫過程
end;
procedure TForm1.greetings; //宣告過程(功能)
begin
form1.Color := clRed;
end;
end.
以上為無參過程應用,有參過程如下
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure exchange(var a,b :string);
{ //定義過程,特別注意與宣告部分地一行唯一的區別就是沒有了“Tform1.”的字首(宣告部分必須有,而定義過程則必須要有引數說明即:(var a,b :string))}
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
x,y:string;
begin
x := edit1.text;
y:= edit2.text;
exchange(x,y); //呼叫過程
edit3.text := x;
edit4.text := y;
end;
procedure Tform1.exchange(var a,b :string); //宣告過程(功能)
var temp : string;
begin
temp := a;
a:= b;
b := temp;
end;
end.
執行介面如下
自定義函式編寫
PART1
和過程編寫大致一樣,注意的地方:必須指定返回值的型別,且函式呼叫,只能出現在一個表示式中
應用如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function max(var x,y:real):real; //函式定義,必須指定返回值的型別
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function Tform1.max(var x,y:real):real; //函式宣告,必須指定返回值的型別
begin
if x >y then max := x else max := y; //以函式名或本地變數Result作為返回值變數
end;
procedure TForm1.Button1Click(Sender: TObject);
var a,b:real;
begin
a := strtofloat(edit1.Text);
b := strtofloat(edit2.Text);
edit3.Text := floattostr(max(a,b)); //函式呼叫,只能出現在一個表示式中
end;
end.
執行介面
PART2 函式的返回型別
可以使用Variant型別,
當函式返回型別可以為array時,舉例如下:
type
TArrayInt = array of Integer;
function f: TArrayInt;
begin
end;
PART2 用二維動態陣列做函式或過程的引數
1.普通的情況
type
TArrAr r= array of array of Integer; //假設是Integer型別的
procdure proc_name(Arr1: TArrArr);
function ...
2. 使用Variant
procdure proc_name(Arr1: Variant);
function ...
Project Options設定
a. 主選單設定Project>>Options>>Forms頁,設定mianform(方法一),也可以在Project程式碼視窗修改程式碼,如下設定form2為主視窗:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1}, //對這部分次序無要求
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3};
{$R *.res}
b