困扰了我2天,查出错误了,但是不知道为什么,也没办法解决 ,求助
delphi吧
全部回复
仅看楼主
level 13
yzf911 楼主
废话不说,我上原码了:
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
2013年03月16日 14点03分 1
level 13
yzf911 楼主
单元文件 :
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 := ;
pgc1.Pages[1].TabVisible :=False;
end;
end.
2013年03月16日 14点03分 2
Self.BorderIcons :=;是百度显示错误,下面有说明
2013年03月17日 00点03分
level 13
yzf911 楼主
工程文件:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
2013年03月16日 14点03分 3
level 13
yzf911 楼主
出错提示:
list index out of bounds(3)
意思是我下标超了
但是我不知道为什么.
2013年03月16日 14点03分 4
level 13
yzf911 楼主
那句
pgc1.Pages[1].TabVisible :=False;
换掉
用ts2.TabVisible := False;
效果一样,出错!
2013年03月16日 14点03分 6
level 13
yzf911 楼主
Self.BorderIcons := 左方括号biSystemMenu,biMinimize右方括号;
这句后面百度不让显示,我这么打下看行不行.
2013年03月16日 14点03分 7
这句如果删除了,错误就会消失;如果提前在窗体控件属性里设置,也没问题.
2013年03月16日 14点03分
level 7
从0开始的,所以是0-2,没有3
2013年03月16日 17点03分 9
是没有3,可是出错非要显示3,我控制不了。
2013年03月17日 00点03分
level 7
Self.BorderIcons := ; 不能这样写,很奇怪为什么这样写?
Self.BorderIcons := 〔,,〕;
2013年03月16日 17点03分 10
这句是百度显示错误,原句是: Self.BorderIcons := 左方括号biSystemMenu,biMinimize右方括号;
2013年03月17日 00点03分
level 13
yzf911 楼主
我明白,这个错误的出现是跟窗体的构造函数有关。
如果把OnCreate的内容放在OnShow,或者其他事件里,当然错误消失,可是现在不能那么做。
也不能提前设置Self.BorderIcons属性
2013年03月17日 00点03分 11
level 13
yzf911 楼主
这个问题,是基于一个10来年老工程中的问题,原先的设计应该说就有点问题,经手人太多,我这刚接手,也不好去做太多的改变,目前的做法是,把TabVisible的改变语句放在了Bordericons改变语句之前,暂时避免了错误的弹出。
至于错误的具体原因,我这里还会继续查下去,感谢泥人倒和坏小人的参与!
2013年03月17日 09点03分 15
level 13
yzf911 楼主
有高人给我提供了另一种解决办法:
Self.BorderIcons := 左方括号biSystemMenu,biMinimize右方括号;
Self.Visible := true;
pgc1.Pages[1].TabVisible :=False;
这样就没问题了。
他指出:在窗体的OnCreate事件中,改变BorderIcons属性,会让窗体暂时变为不可见的,因此只要让窗体可见即可。
2013年03月17日 09点03分 16
level 8
像这种数组下标越界了 看看是哪里报错 小问题了 QQ:515623876
2013年03月20日 01点03分 20
1