1. 程式人生 > >Delphi 之 編輯框控制元件(TEdit)

Delphi 之 編輯框控制元件(TEdit)

 

TEdit 元件主要用於資料的輸入和顯示和編輯等操作。

AutoSelect

  獲取元件焦點。該屬性只能在單行文字元件使用。值為True為選中。false則不選中。

BorderStyle

  設定編輯框控制元件的外觀效果。當值為bsSingle,為一個單線邊框。為bsNone則無邊框

CanUndo 

  該屬性可以確定使用者修改文字後可以undo方法回退。

CharCase

  設定編輯框控制元件文字的大小寫。

如圖所示

 

 MaxLength 

  設定文字的最大長度,為0表示長度沒有限制。

PasswordChar

  用來顯示字元通常用(*)符號來設定密碼

 ReadOnly

  設定只讀,不能修改元件的文字內容

SelStart

  設定文字的起始位置,如果為0,則指向第一個文字。

SelLength

  設定文字的最大長度

示例 選中指定長度的文字如圖所示

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit3.SetFocus;  //獲取焦點
  Edit3.SelStart:=StrToInt(Edit1.text); //設定字元的起始位置
  Edit3.SelLength:=StrToInt(Edit2.text);//設定字元的個數
end;

TEdit元件的事件

OnChange

  編輯框元件被改變時觸發該事件

示例 驗證文字的合法性

複製程式碼
procedure TForm1.Edit1Change(Sender: TObject);
var
  str:string;
begin
  str:='';
  str:=Edit1.Text;
  if Length(str)>0 then
  if not(str[Length(str)]in ['0'..'9',#8]) then
  begin
    Application.MessageBox('請輸入數字(','提示',MB_OKCANCEL+MB_ICONINFORMATION);
   Edit1.Text:=LeftStr(Str,Length(Str)-1); end; Edit1.SelStart:=Length(Edit1.text); end;
複製程式碼

OnEnter

  元件接受輸入焦點時產生該事件,當視窗元件為啟用狀態時,可使事件處理執行指定的處理。

示例 元件焦點的設定

複製程式碼
procedure TForm1.Edit1Enter(Sender: TObject);
begin
  if Sender is TEdit then
    (Sender as TEdit).Color := $00C8FFFF
  else if Sender is TComboBox then
    (Sender as TComboBox).Color := $00C8FFFF;
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
  if Sender is TEdit then
    (Sender as TEdit).Color := clWhite
  else if Sender is TComboBox then
    (Sender as TComboBox).Color := clWhite;
end;
複製程式碼

OnExit

  當焦點離開時產生的事件

OnKeyPress

  按下鍵盤上的按鍵時產生該事件

示例 限制輸入的資料

複製程式碼
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['a'..'z','A'..'Z',#8]) then
  begin
    Application.MessageBox('只能輸入英文字元!', '提示', MB_OKCANCEL + MB_ICONINFORMATION);
    Key := #0;
  end;
end;
複製程式碼

OnKeyDown

  按下鍵盤上的按鍵觸發該事件,該事件的key是一個整數,是由鍵盤的虛擬鍵值而定。

示例  顯示鍵盤上對應按下的鍵值

複製程式碼
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Edit2.Text := IntToStr(Key);
  if Shift = [ssShift] then
    Edit1.Text := 'Shift'
  else if Shift = [ssAlt] then
    Edit1.Text := 'Alt'
  else if Shift = [ssCtrl] then
    Edit1.Text := 'Ctrl'
  else
    Edit1.Text := '';
end;
複製程式碼