在第个Mousedown中写,不知道有没有更好的方法

解决方案 »

  1.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if Key = #13 then ListBox1.Visible :3D true;
    end;procedure TForm1.ListBox1Exit(Sender: TObject);
    begin
      (Sender as TListBox).Visible := false;
    end;
    —————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”等';
    I.Desire := '加不加分随你';
    —————————————————————————————————
           
      

  2.   

    lxpbuaa(桂枝香在故国晚秋) 的代码有误:
    当在ListBox以外点击鼠标时不一定会触发ListBox.OnExit:
    1.在Edit中敲回车时,ListBox只是显示出来,并没有得到焦点,这时将焦点切换到其它控件时不会触发ListBox.OnExit;
    2.Shape是个GraphicControl,而且它的父控件Panel也不会得到输入焦点,当在这两个控件中点击时不会触发ListBox.OnExit.
    只能用OnMouseDown来作:
    procedure TForm1.OtherMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if Button := mbLeft then
        ListBox1.Visible := false;
    end;
    把Edit,Panel和Shape的OnMouseDown都设为OtherMouseDown.
      

  3.   

    plainsong(轻风) 说得对,我没有注意这个问题。
    不过搂主说:
    鼠标单击listbox以外的任何地方,让已经显示的listbox的visible=false
    所以你的“把Edit,Panel和Shape的OnMouseDown都设为OtherMouseDown.”其实是不严谨的。我看这样:
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if Key = #13 then
      begin
        ListBox1.Visible := true;
        ListBox1.SetFocus;
      end;
    end;procedure TForm1.ListBox1Exit(Sender: TObject);
    begin
      (Sender as TListBox).Visible := false;
    end;你们以为如何?
    —————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
    I.Desire := '加不加分随你';
    —————————————————————————————————
           
      

  4.   

    同意plainsong(轻风),关键是“Shape是个GraphicControl,而且它的父控件Panel也不会得到输入焦点,当在这两个控件中点击时不会触发ListBox.OnExit.”结贴收藏,谢谢各位支持。