首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

RzPageControl获取当前页DBGrid名解决方案

2012-12-20 
RzPageControl获取当前页DBGrid名RzPageControl里面多个页面每个都放有TGroupBox,TGroupBox里面放至了DBGr

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); 
来显示呢?
[其他解释]
引用:
Delphi/Pascal code??



1234567891011

procedure TForm1.Button5Click(Sender: TObject); var i,j,k:integer; begin  j:=PageControl1.ActivePageIndex;   for i:=0 to PageControl1.Pages[j ].ControlCoun……
还是没看懂你最后面的那个输出内容。
[其他解释]
引用:
既然用了:
if ((RzPageControl1.Pages[j].Controls[i] as TGroupBox.NewInstance) is TDBGrid) then
来判断,为什么显示却用了:
showmessage((RzPageControl1.Pages[j].Controls[i] as TDBGrid).Name); 
而不是用:
showmessage((RzP……

自学看资料。基础不是很扎实。最后还是没弄出来。根据上面给的代码。最后显示、无效的类型转换,一直没看明白。劳烦帮忙解释下
[其他解释]
第一个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


明白了没有?
[其他解释]

引用:
第一个For循环是查找当前页的groupbox,假设就是GroupBox1吧
此时,这串代码(PageControl1.Pages[j].Controls[i] as TGroupBox)就是GroupBox1
第二个For循环是查找GroupBox1中的DBGrid,假设就是DBGrid1吧
此时,这串代码(((PageControl1.Pages[j].Controls[i] as TG……

最后在输出时。提示无效的类型转换。是什么意思。
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;

[其他解释]
引用:
Delphi/Pascal code
?



123456789101112

procedure TForm1.Button12Click(Sender: TObject); var i,j,k:integer;  begin  j:=RzPageControl1.ActivePageIndex;    for i:=0 to RzPageControl1.Pages[j ].C……

少了一行判断。。。。。。。。谢谢。。

热点排行