RzPageControl获取当前页DBGrid名
RzPageControl里面多个页面每个都放有TGroupBox,TGroupBox里面放至了DBGrid,判断当前页面的DBGrid是那个。根据论坛朋友给的代码。自学了点。但是还没有实现。请教各位大神。
procedure TForm1.Button12Click(Sender: TObject;GroupBoxstring:TGroupBox );
var i,j,k:integer;
begin
j:=RzPageControl1.ActivePageIndex;
for i:=0 to
RzPageControl1.Pages[j ].ControlCount-1 do
if (RzPageControl1.Pages[j].Controls[i] is TGroupBox)then
for k:=0 to
(RzPageControl1.Pages[j].Controls[i] as TGroupBox).ControlCount - 1 do
if ((RzPageControl1.Pages[j].Controls[i] as TGroupBox.NewInstance) is TDBGrid) then
showmessage((RzPageControl1.Pages[j].Controls[i] as TDBGrid).Name);
end;
[最优解释]
procedure TForm1.Button5Click(Sender: TObject);
var i,j,k:integer;
begin
j:=PageControl1.ActivePageIndex;
for i:=0 to PageControl1.Pages[j ].ControlCount-1 do
if (PageControl1.Pages[j].Controls[i] is TGroupBox)then
begin
for k:=0 to (PageControl1.Pages[j].Controls[i] as TGroupBox).ControlCount-1 do
showmessage(((PageControl1.Pages[j].Controls[i] as TGroupBox).Controls[k] as TDBGrid).Name);
end;
end;
看样子你还不大了解我那个例子啊,后来不是有好心人给你解析了吗?
PS:问题解决的话要结贴,不结贴都不想回答你问题了
[其他解释]
既然用了:
if ((RzPageControl1.Pages[j].Controls[i] as TGroupBox.NewInstance) is TDBGrid) then
来判断,为什么显示却用了:
showmessage((RzPageControl1.Pages[j].Controls[i] as TDBGrid).Name);
而不是用:
showmessage((RzPageControl1.Pages[j].Controls[i] as TGroupBox.NewInstance)
as TDBGrid).Name);
来显示呢?
[其他解释]
还是没看懂你最后面的那个输出内容。
[其他解释]
自学看资料。基础不是很扎实。最后还是没弄出来。根据上面给的代码。最后显示、无效的类型转换,一直没看明白。劳烦帮忙解释下
[其他解释]
第一个For循环是查找当前页的groupbox,假设就是GroupBox1吧
此时,这串代码(PageControl1.Pages[j].Controls[i] as TGroupBox)就是GroupBox1
第二个For循环是查找GroupBox1中的DBGrid,假设就是DBGrid1吧
此时,这串代码(((PageControl1.Pages[j].Controls[i] as TGroupBox).Controls[k] as TDBGrid)就是DBGrid1
明白了没有?
[其他解释]
最后在输出时。提示无效的类型转换。是什么意思。
procedure TForm1.Button12Click(Sender: TObject);
var i,j,k:integer;
begin
j:=RzPageControl1.ActivePageIndex;
for i:=0 to RzPageControl1.Pages[j ].ControlCount-1 do
if (RzPageControl1.Pages[j].Controls[i] is TGroupBox)then
begin
for k:=0 to (RzPageControl1.Pages[j].Controls[i] as TGroupBox).ControlCount-1 do
showmessage(((RzPageControl1.Pages[j].Controls[i] as TGroupBox).Controls[k] as TDBGrid).Name);
end;
end;
[其他解释]
procedure TForm1.Button12Click(Sender: TObject);
var i,j,k:integer;
begin
j:=RzPageControl1.ActivePageIndex;
for i:=0 to RzPageControl1.Pages[j ].ControlCount-1 do
if (RzPageControl1.Pages[j].Controls[i] is TGroupBox)then
begin
for k:=0 to (RzPageControl1.Pages[j].Controls[i] as TGroupBox).ControlCount-1 do
if ((RzPageControl1.Pages[j].Controls[i] as TGroupBox).Controls[k] is TDBGrid)then//少敲了这行代码
showmessage(((RzPageControl1.Pages[j].Controls[i] as TGroupBox).Controls[k] as TDBGrid).Name);
end;
end;
[其他解释]
少了一行判断。。。。。。。。谢谢。。