1. 程式人生 > >delphi控制元件使用

delphi控制元件使用

Standard頁

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