我在combobox的dropdown事件中想将下拉框用一个form3来替代,代码如下:
  form3.Left:=Combobox1.Left+552*(longint
   (screen.width) div orignwidth);
  form3.Top:=Combobox1.Top+86*(longint
   (screen.height) div orignheight);
  form3.Width:=combobox1.Width;
  form3.Show;
代码中的552和86这两个数值是调了好久才调到的,我机子的分辨率是1024x768的,程序一拿到分辨率是800x600的机子上用时,form3就走位了。高手请指教。

解决方案 »

  1.   

    不用自己算,这样子:
    procedure TForm1.ComboBox1DropDown(Sender: TObject);
    var pt: TPoint;
    begin
      with ComboBox1 do
        pt := Point(Left, Top+Height);
      pt := Form1.ClientToScreen(pt);
      Form3.Left := pt.X;
      Form3.Top := pt.Y;
      Form3.Width := ComboBox1.Width;
      Form3.Show;
    end;
      

  2.   

    form3.Left:=ClientOrigin.x+width;
    form3.Top :=ClientOrigin.y+height;
    form3.Width:=combobox1.Width;
    form3.Show;
      

  3.   

    to sysu(死树):  pt := Point(Left, Top+Height);有错提示:symbol 'point'is specific to a platform
      

  4.   

    應該是﹕
    with ComboBox1 do
    begin
      form3.Left:=ClientOrigin.x+width;
      form3.Top :=ClientOrigin.y+height;
      form3.Width:=Width;
    end;
    form3.Show;
      

  5.   

    那就改成:
    with ComboBox1 do begin
      pt.X := Left;
      pt.Y := Top+Height;
    end;
      

  6.   

    shang53(阿遙) 的方法我试过了,可以。
      

  7.   

    为什么要用FORM3来替代呢? 我不懂??
      

  8.   

    to dayanmao(大眼猫):
       因为我想让combobox可以显示两列。我笨,想不到其他方法,又不想用别人的控件,所以....我还是笨。清高手指点