Delphi 怎样获得当前活动窗体上的指定类型控件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi 怎样获得当前活动窗体上的指定类型控件?相关的知识,希望对你有一定的参考价值。
比如说我现在有 Form1 上面有多个Tabsheet,而每个TabSeet上又都有一个DBGrid,我怎么样才可以取得当前显示页的DBGrid呢?
不好意思,可能是我说的不是很清楚,我用的是MDI框架,我想在主窗体(MainFrm)上做一个刷新的按钮(RefreshButton),在我点RefreshButton的时候,自动抓取当前活动Tabsheet上的DBGrid.DataSource.DataSet。不知道我这个思路是不是有点问题!
不好意思,可能是我说的不是很清楚,我用的是MDI框架,我想在主窗体(MainFrm)上做一个刷新的按钮(RefreshButton),在我点RefreshButton的时候,自动抓取当前活动Tabsheet上的DBGrid.DataSource.DataSet。不知道我这个思路是不是有点问题!
参考技术B procedure TForm1.Button3Click(Sender: TObject);var
i: Integer;
begin
for i := 0 to Self.ComponentCount - 1 do
begin
if Self.Components[i] is TDBGrid then
begin
if (Self.Components[i] as TDBGrid).Parent.Name =
PageControl1.Pages[PageControl1.TabIndex].Name then
begin
ShowMessage('当前DBGrid的名字是:'+(Self.Components[i] as TDBGrid).Name);
end;
end;
end;
end;追问
不好意思,可能是我说的不是很清楚,我用的是MDI框架,我想在主窗体(MainFrm)上做一个刷新的按钮(RefreshButton),在我点RefreshButton的时候,自动抓取当前活动Tabsheet上的DBGrid.DataSource.DataSet。不知道我这个思路是不是有点问题!
追答把 ShowMessage('当前DBGrid的名字是:'+(Self.Components[i] as TDBGrid).Name);
换成 (Self.Components[i] as TDBGrid).DataSource.DataSet.Refresh;然后跳出循环就可以了
要学会举一反三.我写的只是个例子
可是如果我有一部分的DBGrid不是在TabSheet上而是直接在From上呢?
我想我需要的是一个API函数,而不是循环
有这种API函数吗?..你在这样钻你会死在里面的,换个思想去考虑这个问题吧
参考技术C 首先你要知道这个DBGRID的名字,例如:if Self.FindComponent('DBGrid1') <> nil then
do something追问
不好意思,可能是我说的不是很清楚,我用的是MDI框架,我想在主窗体(MainFrm)上做一个刷新的按钮(RefreshButton),在我点RefreshButton的时候,自动抓取当前活动Tabsheet上的DBGrid.DataSource.DataSet。不知道我这个思路是不是有点问题!
参考技术D 我有一个进销存,你把邮箱发给我咯,但是我是通过VS2010开发的开发模式是MVC2.0页面都是asp.net的你要的话给我邮箱郁闷都要给你发你要不本回答被提问者采纳
以上是关于Delphi 怎样获得当前活动窗体上的指定类型控件?的主要内容,如果未能解决你的问题,请参考以下文章