修改StringGrid的Paint行为,在Onpaint事件里添加自己的代码,在代码中可判断Cell有无值再决定是否生成TEdit,生成的TEdit除指明必需的参数之外还必须指明其Parent,否则不会正确显示。最后记住释放掉动态生成的对象。
解决方案 »
- TTabControl的转向问题
- constructor create 和creat的区别?
- ole1.createobject('autocad15.Application'),怎么不行呀,总是报:“没有注册类”请问如何autocad2000注册类呀
- 关于日期范围查询的问题,应该难不到一般的高手的,更不要说绝顶高手了
- 包含TActionMananger组件的窗体为什么不能继承?????
- 急急急!关于数据库还原出错!
- 有关treeview
- 请问怎样同时显示两个窗口?
- 哪位老大知道,我将一个项目按功能分成若干个DLL,同时使用一个公共的ADOC数据源,是否可以
- 我是菜鸟,问一个关于类的问题
- 怎么样在DELPHI中调用DOS命令呢?
- 谁有:TRxtrayIcon控件,拜托!!!!
在StringGrid 的 OnDrawCell 事件中加如下代码 var MyRect :TRect ;
begin
with StringGrid1 do
begin
MyRect := CellRect(iX,iY) ;
Edit1.SetBounds(MyRect.Left + Left + 1,MyRect.Top+Top+2,
MyRect.Right - MyRect.Left,MyRect.Bottom - MyRect.Top);
Edit1.Text := Cells[Col,Row];
end
end;
你的那个edit1最后还要释放吗?他自己可以释放吗?
===============================================================
CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!
Http://www.ChinaOK.net/csdn/csdn.zip
http://www.csdn.net/expert/topic/573/573604.xml
★ 浏览帖子速度极快! ★ 多个帖子界面。 ★ 保存帖子html格式★ 定时检测帖子更新。★ 直接发贴、回复★ 采用XML接口,支持自定义显示帖子数量。★浏览历史记录。 ★
//动态创建控件******************************************************************
//==============================================================================
function DynaCreateComponent(Owner: TComponent; CompType: TControlClass; CompName: String; Left,Top,Width,Height:Integer): TControl;
begin
if (Owner.FindComponent(CompName)<>nil) and not(Owner.FindComponent(CompName) is TControl) then
begin
Result := nil;
exit;
end;
Result := Owner.FindComponent(CompName) as TControl;
if Result=nil then
begin
Result := CompType.Create(Owner);
with Result do
begin
if Owner is TwinControl then
begin
SetBounds(Left,Top,Width,Height);
Parent := TwinControl(Owner);{如果是可视构件,则显示之}
if Owner is TForm then TForm(Owner).ActiveControl := TWinControl(Result);{设置窗口焦点}
end;
end;
Result.Name := CompName;
end
else {Result<>Nil}
if not(Result is CompType) then
begin
Result := nil;
Exit;
end;
Result.Visible := True;
end;
{ 对于未知数量的控件组,利用TList
var ControlList: Tlist; CreateNum: integer;
const CreateClass : TControlClass = TButton;//可以任意修改TControlClass = TEdit或TPanel等。效果一样。
var i:integer; APoint: Pointer;
ControlList := TList.Create;
ControlList.Clear;
CreateNum := 10;
for i:=1 to CreateNum do
begin
APoint := Pointer(DynaCreateComponent(self,CreateClass,'Button_' + IntToStr(i),0,i*20+1,60,20));//创建
ControlList.Add(APoint);
end;
TButton(ControlList.Items[i]).Caption := 'XXXX';}
StringGrid 表格打印怎么样实现?