一个简单的错误

yzf911 2013-03-16 10:07:00
困扰了我2天,查出错误了,但是不知道为什么,也没办法解决 ,求大神们指点一二
...全文
182 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsfzxjy 2013-04-04
  • 打赏
  • 举报
回复
引用 11 楼 yzf911 的回复:
谢谢以上几位,接受答案之前,我也是把BorderIcons的设置跟TabVisible换了下位置。 其实开始我也是跟HSFZXJY 的想法一样,“窗体Create时Sheet还没创建呢!”,其实这样理解是错的, 只能说窗体不可见的时候,无法对其拥有的控件进行操作,只是BorderIcons的改变居然会引起窗体在Create过程中暂时不可见,这个要从构造函数理解起,……
说好的结贴呢?
babydog01 2013-03-17
  • 打赏
  • 举报
回复
试了一下,原因就是这两句。把它两换个位置就没有问题了, pgc1.Pages[1].TabVisible :=False; Self.BorderIcons :=[biSystemMenu,biMinimize] ; 想来是更改Self.BorderIcons属性导致窗体暂时不可见了。 加入一个语句也没有问题。 Self.BorderIcons :=[biSystemMenu,biMinimize] ; self.Visible:=true; self.pgc1.Pages[1].TabVisible :=False;
yzf911 2013-03-17
  • 打赏
  • 举报
回复
simonhehe 不是这个问题,ImageIndex索引号与在指向imagelist为空的时候,是无效的。 问题关键是在以下两句: Self.BorderIcons :=[biSystemMenu,biMinimize] ; pgc1.Pages[1].TabVisible :=False; 如果这两句放在其他事件里,错误就会消失; 如果BorderIcons不用语句控制,而提前在属性里设置,错误也会消失。 第一句去掉,错误也会消失。 pgc1.Pages[1]用Ts2来代替,错误依旧。 问题应该就是出在了窗体的构造函数中,谁能帮解析下,在程序结构不变的基础上提出解决办法最好。
yzf911 2013-03-17
  • 打赏
  • 举报
回复
谢谢以上几位,接受答案之前,我也是把BorderIcons的设置跟TabVisible换了下位置。 其实开始我也是跟HSFZXJY 的想法一样,“窗体Create时Sheet还没创建呢!”,其实这样理解是错的, 只能说窗体不可见的时候,无法对其拥有的控件进行操作,只是BorderIcons的改变居然会引起窗体在Create过程中暂时不可见,这个要从构造函数理解起,我会继续查一查原因,或者再盼望哪位大哥再指点1,2。 3天后结帖,谢谢大家。
hongss 2013-03-17
  • 打赏
  • 举报
回复
注意下执行顺序
hsfzxjy 2013-03-17
  • 打赏
  • 举报
回复
放进OnShow事件,窗体Create时Sheet还没创建呢!
simonhehe 2013-03-16
  • 打赏
  • 举报
回复
引用 5 楼 yzf911 的回复:
出错提示: list index out of bounds(3) 意思是我下标超了 但是我不知道为什么.
object ts2: TTabSheet Caption = 'ts2' ImageIndex = 1 end object ts3: TTabSheet Caption = 'ts3' ImageIndex = 2 end 你的TTabSheet中ImageIndex 有值 但是没看到有TImageList控件, 应该是这个问题
yzf911 2013-03-16
  • 打赏
  • 举报
回复
出错提示: list index out of bounds(3) 意思是我下标超了 但是我不知道为什么.
yzf911 2013-03-16
  • 打赏
  • 举报
回复
工程文件: program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
yzf911 2013-03-16
  • 打赏
  • 举报
回复
单元文件 : unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ComCtrls; type TForm1 = class(TForm) pgc1: TPageControl; ts1: TTabSheet; ts2: TTabSheet; ts3: TTabSheet; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Self.BorderIcons :=[biSystemMenu,biMinimize] ; pgc1.Pages[1].TabVisible :=False; end; end.
simonhehe 2013-03-16
  • 打赏
  • 举报
回复
引用 楼主 yzf911 的回复:
困扰了我2天,查出错误了,但是不知道为什么,也没办法解决 ,求大神们指点一二
lz是不是忘记什么事了? 问题呢????
yzf911 2013-03-16
  • 打赏
  • 举报
回复
废话不说,我上原码了: Delphi7下,窗体文件: object Form1: TForm1 Left = 192 Top = 114 Width = 870 Height = 640 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object pgc1: TPageControl Left = 0 Top = 0 Width = 862 Height = 606 ActivePage = ts3 Align = alClient TabOrder = 0 object ts1: TTabSheet Caption = 'ts1' end object ts2: TTabSheet Caption = 'ts2' ImageIndex = 1 end object ts3: TTabSheet Caption = 'ts3' ImageIndex = 2 end end end

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧