你click button6 ,焦点不就转移到button6上去了?

解决方案 »

  1.   

    这是因为你的Form上有button控件,有关具焦的问题,你可以查看一下资料,如果你想实现这种情况,可以把button去掉;
      

  2.   

    那我用什么办法,当我CLICK BUTTON6时,在EDIT5.TEXT中现实字符呢?
      

  3.   

    这样当然得不到焦点了?你在点Button的时候,焦点已经变成了Button,所以里面的Edit5.Focused=True和DBEdit3.Focused=True当然都不为真了!
    所以也无法执行其里面的语句!
      

  4.   

    我现在要实现的功能是:窗体上有十个按钮(数字),当你点击的时候,在EDIT5.text OR EDIT2.text...上现实数字!!
      

  5.   

    这个简单
    Edit5.text:=Edit5.text+'l';
      

  6.   

    还要判断是在EDIT5 OR EDIT2 OR EDIT3 等等...
      

  7.   

    我现在要实现的功能是:窗体上有十个按钮(数字),当你点击的时候,在EDIT5.text OR EDIT2.text...上现实数字!!
    有点象计算器上输入数字的感觉!!
      

  8.   

    //我寫這的功能給你看看,已經簡化了許多,原來我做了有.(,),[,].{,}科目...你試一下應該能通過
    var
      sTmp : string;
    begin             
        iSel := edtText.SelStart; // iSel為全局變量
        sTmp := edtText.Text;   edtText.Text := copy(sTmp,1,iSel)
                           + (sender as TButton).Caption
                           + copy(sTmp,iSel+1,length(sTmp)-iSel+1);
              edtText.SelStart := iSel+1;
        edtText.SetFocus;
    end;
      

  9.   

    哦!这样不行,因为还有很多的EDIT,不能确定是哪一个,用户点BUTTON6,如果光标在EDIT1中则显示在EDIT1中,如果在EDIT2中则显示在EDIT2中,
    当用户点击BUTTON6,如果光标在EDIT1中则显示在EDIT1中,如果在EDIT2中则显示在EDIT2中...
      

  10.   

    @@@@@@@@@@@@前面写错了,是BUTTON7!!!!
    哦!这样不行,因为还有很多的EDIT,不能确定是哪一个,用户点BUTTON6,如果光标在EDIT1中则显示在EDIT1中,如果在EDIT2中则显示在EDIT2中,
    当用户点击BUTTON7,如果光标在EDIT1中则显示在EDIT1中,如果在EDIT2中则显示在EDIT2中...
      

  11.   

    多Edit可能比較麻煩,下班我再想想
      

  12.   

    我的办法是可以使用一个tobject对象来指向edit。每次用鼠标点击edit时,就把那个edit赋给object 对象在点击button时就只要使用如下代码就可以显示了。  Tedit(TempObject).text:=Tedit(TempObject).text+'l'
      

  13.   

    TO : FOREVERYDAY007  THANK YOU !!!:)
      

  14.   

    //我是這樣做的,TPanel name pnlMain,上面放兩個edtText,edtDisp
    兩個TButton放在form上,Button1,Button2(共用按下的事件)
    edtText,edtDisp的進入事件也是共用的
    edtText.Tag := 1; edtDisp.Tag := 2(用來區別當前焦點在哪個Edit上)
    有個全局變量 iTag;
    我測試過沒有甚麼大問題,我把所有的都貼出來,應該能看懂object Form1: TForm1
      Left = 228
      Top = 107
      Width = 544
      Height = 375
      Caption = 'Form1'
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      OldCreateOrder = False
      PixelsPerInch = 96
      TextHeight = 13
      object Button1: TButton
        Left = 384
        Top = 40
        Width = 75
        Height = 25
        Caption = '1'
        TabOrder = 0
        OnClick = Button1Click
      end
      object Button2: TButton
        Left = 384
        Top = 88
        Width = 75
        Height = 25
        Caption = '2'
        TabOrder = 1
        OnClick = Button1Click
      end
      object pnlMain: TPanel
        Left = 88
        Top = 0
        Width = 257
        Height = 321
        TabOrder = 2
        object edtDisp: TEdit
          Tag = 2
          Left = 64
          Top = 80
          Width = 121
          Height = 21
          TabOrder = 0
          Text = 'edtDisp'
          OnEnter = edtTextEnter
        end
        object edtText: TEdit
          Tag = 1
          Left = 64
          Top = 24
          Width = 121
          Height = 21
          TabOrder = 1
          Text = 'edtText'
          OnEnter = edtTextEnter
        end
      end
    endunit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        pnlMain: TPanel;
        edtDisp: TEdit;
        edtText: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure edtTextEnter(Sender: TObject);
      private
        { Private declarations }
        iTag : integer;
        function GetMyComponent(Sender: TWinControl; iTag: Integer):TControl;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}
    function TForm1.GetMyComponent(Sender: TWinControl; iTag: Integer):TControl;
    var
      i: integer;
    begin
      Result := Nil ;
      for i := 0 to Sender.ControlCount-1 do
        if Sender.Controls[i] is TWinControl then
        begin
          if (Sender.Controls[i] as TWinControl).tag = iTag then Result := Sender.Controls[i] ;
        end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      sTmp : string;
      iSel: integer;
    begin
        if iTag = 0 then Exit;    iSel := (GetMyComponent(pnlMain,iTag) as TEdit).SelStart; // iSel為全局變量
        sTmp := (GetMyComponent(pnlMain,iTag) as TEdit).Text;   (GetMyComponent(pnlMain,iTag) as TEdit).Text := copy(sTmp,1,iSel)
                           + (sender as TButton).Caption
                           + copy(sTmp,iSel+1,length(sTmp)-iSel+1);
              (GetMyComponent(pnlMain,iTag) as TEdit).SelStart := iSel+1;
        (GetMyComponent(pnlMain,iTag) as TEdit).SetFocus;
    end;procedure TForm1.edtTextEnter(Sender: TObject);
    begin
      iTag := ActiveControl.Tag;
    end;end.
      

  15.   

    TO : arg 你的方法我试过了,确实可以在任何一个EDIT中显示数字,但是这些现实的数字还要在程序中用到,这样的话,就又出现问题,比如说:EDIT1.TEXT+EIDT2.TEXT就会错,'Variant does not reference an automation object'???
      

  16.   

    我是你同学Mickey.Liu,梅林关那个,你知道的,呵呵,你什么时候学DELPHI了。好久不见,你好吧?
      

  17.   

    TO:Migao  我的QQ:15305434
      

  18.   

    to yelei0913(叶蕾) 
     把你的程序贴出来看看好吗?应该不会有什么错误的