当我选中Stringgrid的某一个单元格的时候,就在该单元格里面显示combobox控件,
能显示出来,可是里面的items却拉不开了,怎么回事啊?第一次遇到这个问题,我
使用的delphi7,谢谢,在线等待!

解决方案 »

  1.   

    这是我写的代码:
    procedure TYJInputFRM.SG1SelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    var
     rect:Trect;
    begin
    //---------------------------------------------
      KHBH.Items.Clear;
      with ADOquery1 do
       begin
        close;
        sql.Clear;
        sql.Add('select GuestID from baseinfor');
        open;
        first;
       end;
      while not ADOQuery1.Eof do
       begin
        KHBH.Items.Add(adoquery1.fieldbyname('GuestID').AsString);
        Adoquery1.Next;
       end;//--------------------------------------------- if (ACol=1) then
      begin
       rect:=SG1.CellRect(ACol,ARow);
       KHBH.Parent:=SG1;
       KHBH.Left:=Rect.Left;
       KHBH.Top:=Rect.Top;
       KHBH.Width:=Rect.Right-Rect.Left;
       KHBH.Height:=Rect.Bottom-Rect.Top;
       KHBH.Visible:=true;
      end
      else KHBH.Visible:=false;
    end;
      

  2.   

    建议可以用第三方控件,比如cxgrid
      

  3.   

    不要这个KHBH.Parent:=SG1;用了这句消息传递会出问题。下面代码测试通过。procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
      ARow: Integer; var CanSelect: Boolean);
    var
      ARect:TRect;
    begin
      if ACol = 1 then
      begin
        Arect := StringGrid1.CellRect(Acol,ARow);
        Combobox1.Left := StringGrid1.Left + Arect.Left;
        Combobox1.Top := StringGrid1.Top + Arect.Top;
        Combobox1.Width := Arect.Right - Arect.Left;
        Combobox1.Height := Arect.Bottom - Arect.Top; 
        
        Combobox1.Visible := True;
      end
      else
        Combobox1.Visible := False;end;
      

  4.   

    这个问题, 再简单不过了,可以在cellclick事件也可以drawcell事件完成这个功能其它的与上述类同,不再详述了