我窗体上有十个EDIT,我想点击一个按钮,让其中获得焦点的EDIT中内容加一个字符,但是如果直接点击按钮,肯定是按钮获得焦点,怎么样才能让按钮不获得焦点的情况发生点击事件呢?

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        focusEdit:TEdit;
        procedure editOnEnter(Sender:TObject);
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      tmpEdt:TEdit;
      tmpObj:TObject;
      LoopIndex:Integer;
    begin
      focusEdit.Text :='test';
      focusEdit.SetFocus;
    end;procedure TForm1.editOnEnter(Sender: TObject);
    begin
      Self.focusEdit := TEdit(Sender);
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
      LoopIndex:Integer;
    begin
      for LoopIndex:=0 to ControlCount-1 do
        begin
          if Controls[LoopIndex] is TEdit then
            (Controls[LoopIndex] as TEdit).OnEnter := editOnEnter;
        end;
    end;end.
      

  2.   

    onclick事件中可以再把焦点放回去。
      

  3.   

    在按钮onClick事件里 setfocus 其它控件
      

  4.   

    用SpeedButton,它本身就不接受焦点。