我利用了微软提供的通用控件库中的IP控件,想知道怎么在发生变化时触发一段代码,例如失去焦点的时候获得他的IP地址。
ICC.dwSize:= sizeof(TInitCommonControlsEx);
  ICC.dwICC:= ICC_INTERNET_CLASSES;
  if(not InitCommonControlsEx(ICC)) then  //初始化库和创建ip 控件
    EXIT;
  IPaddress:=CreateWindow(WC_IPADDRESS,nil,WS_CHILD OR WS_VISIBLE,128,144,140,20,loginform.Handle,0,hInstance,nil);请高手们帮忙!

解决方案 »

  1.   

    TIpEdit = class(TEdit)
        procedure CreateParams(var Params: TCreateParams); override;
      end;{ TIpEdit }procedure TIpEdit.CreateParams(var Params: TCreateParams);
    begin
      inherited CreateParams(Params);
      InitCommonControl(ICC_INTERNET_CLASSES);
      CreateSubClass(Params, WC_IPADDRESS);
    end;
    {上面摘自其他文章}在你的窗口里面定义一个过程
    procedure MyIpEditExit(Sender: TObject);......procedure TForm1.MyIpEditExit(Sender: TObject);
    begin
      ShowMessage('Exit');
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      ipEdit : TIPEdit;
    begin
      ipEdit := TIPEdit.Create(self);
      ipEdit.OnExit := MyIpEditExit;
      ipEdit.Parent := self;
      ipedit.Visible := true;
    end;
      

  2.   

    我照你的方法试过了,不过好像触发地不会合我意。他有时一出去就能触发那个失去焦点的事件。但有时得回到那个IP控件才能触发那个失去焦点的事件。所以我希望能在我退出那个IP控件时就立即就触发那个失去焦点的事件。