创建一个Tcombobox,然后指定其top和left,让它正好放在stringgrid的一个cell中即可。

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages,stdctrls, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Grids;type
      TForm1 = class(TForm)
        StringGrid1: TStringGrid;
        procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
          var CanSelect: Boolean);
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
      public  end;var
      Form1: TForm1;
       var testcombo:Tcombobox;
    implementation{$R *.DFM}procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
      ARow: Integer; var CanSelect: Boolean);  begin
    if canselect then
    begin testcombo.parent:=self;
     testcombo.left:=stringgrid1.left+acol*stringgrid1.defaultcolwidth+4;
      testcombo.top:=stringgrid1.top+arow*stringgrid1.defaultrowheight+3;
      testcombo.width:=stringgrid1.DefaultColWidth;
     testcombo.Height:=stringgrid1.DefaultRowHeight;
      testcombo.font:=stringgrid1.font;
      testcombo.items.clear;
    testcombo.items.add('1111');
    testcombo.items.add('2222');
    end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
     testcombo:=Tcombobox.create(self);
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    testcombo.Free;
    end;end. 
      

  2.   

    to :sean2000(地宽天高) 
    你加入这些单元看出现那些错误
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ComCtrls, ExtCtrls, Grids, DB, DBTables, DBGrids,
    Buttons,QStdCtrls;
      

  3.   

    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol,
      ARow: Integer; Rect: TRect; State: TGridDrawState);
    begin
      if gdFocused in state then
      begin
        combobox1.Text:=stringgrid1.Cells[0,stringgrid1.Row];
        combobox1.Visible:=ACol=0;
        if ACol=0 then
          combobox1.SetBounds(stringgrid1.Left+rect.Left+1,stringgrid1.Top+rect.Top+1,rect.Right-rect.Left+2,rect.Bottom-rect.Top+1);
    end;
      

  4.   

    grid对象的cell有一个objects对象,你可以在里面加上对应的组件就可以加以显示了。