请问怎样实现“在StringGrid中插入ComboBox下拉选框”?
解决方案 »
- 问有开发数据库经验的高手一个关于独立EXE和模块化DLL和bpl问题
- 请问RichEdit line insertion error是什么错误啊,如何避免啊!
- 关于一次性关闭多个控件?
- 怎么判断dbgrid中某个字段获得了焦点
- 已知菜单的name(字符串),如何控制其属性enabled?
- FastReport怎样和ADO控件联用制作报表?我为什么总预览不出记录?哪位大侠能提供点原码?
- 关于Install Shield8.0使用的几个问题
- 哪位有进销存程序?
- 难!如何给OnGetText事件动态赋值?事件的执行过程写在另一个Delphi的DLL中,有请大虾
- 如何向一个按钮发送一个单击事件?
- 软件试用(电子笔记本)
- 要写编写控件得论文了谁有什么心得啊说一下!有分送啊
请问怎样动态生成?
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.
请问怎样实现“在StringGrid中插入ComboBox下拉选框”?
请问怎样动态生成?
问题还没解决啊。
请问怎样动态生成?
你编译执行下,点击第一列,combobox出来unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
ComboBox1: TComboBox;
procedure ComboBox1Exit(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ComboBox1Exit(Sender: TObject);
begin
with sender as TCombobox do begin
hide;
if itemindex >= 0 then
with stringgrid1 do
cells[col, row] := items[itemindex];
end;end;procedure TForm1.FormCreate(Sender: TObject);
begin
combobox1.visible := false;
end;procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var
R: TRect;
org: TPoint;
begin
with Sender as TStringgrid do
if (ACol = 1) and (ARow >= FixedRows) then begin
// entered the column associated to the combobox
// get grid out of selection mode
perform(WM_CANCELMODE, 0, 0);
// position the control on top of the cell
R := CellRect(Acol, Arow);
org := Self.ScreenToClient(ClientToScreen(R.topleft));
with combobox1 do begin
setbounds(org.X, org.Y, r.right - r.left, height);
itemindex := Items.IndexOf(Cells[acol, arow]);
Show;
BringTofront;
// focus the combobox and drop down the list
SetFocus;
DroppedDown := true;
end;
end;
end;end.