补充:同样的语句在DELPHI5中可以执行!
解决方案 »
- 一个非常非常奇怪的问题,谁能告诉我这是为什么???
- installshield问题
- 扫描仪的应用问题。。
- 编译时出错!
- 怎样实现控件选中后周围出现一个虚线框并可以调大小
- Twebbrowser问题,如何通过IHTMLDocument2取得一个CHECKBOX的值,即选中与否?如何改变这个值?
- 求教DELPHI中类的调用
- MTS/COM+与MIDAS有什么关系
- Canvas does not allow drawing!
- 各位大侠,我怎么用DELPHI自带的制作工具把目录也打进去?请教!!1
- delphi中关于com组件的导入问题?
- 各位大虾有没有判断内存泄露的方法、因我的程序在运行时有报虚拟内存不够,我该怎样做
Form1.Button1.Click();
Form1.Button1Click();
既然Button1是在Form1中定义的,那么前面一定要加Form1!
其它代码并无错误!也绝对可以这样用!
所以是
Form1.Panel
Form1.Progress
你的
Button1.Click();
编译不出错?
unit main;interfaceuses
Windows, Messages, SysUtils, Variants,Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;type
TForm1 = class(TForm)
Bar: TProgressBar;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TWorkProgress = class(TThread)
private
{ Private declarations }
PB : TProgressBar; // Reference to ProgressBar
FMax : integer;
procedure InitProgressBar; // Setup ProgressBar
procedure UpdateProgressBar; // Update ProgressBar
procedure FinishIt;
protected
procedure Execute; override;
public
constructor CreateIt(ProgressBar: TProgressBar; TheMax: integer);
end;
var
Form1: TForm1;
ProgressThread:TWorkProgress;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
Max:Integer;
begin
Max:=10000;
ProgressThread:=nil;
if ProgressThread = nil then
begin
if Bar = nil then
ProgressThread := TWorkProgress.CreateIt(Bar as TProgressBar,Max)
else
ProgressThread := TWorkProgress.CreateIt(Bar,Max);
end;
end;{ TWorkProgress }constructor TWorkProgress.CreateIt(ProgressBar: TProgressBar;
TheMax: integer);
begin
inherited Create(True);
Priority := tpLowest;//tpNormal;
FreeOnTerminate := True;
PB := ProgressBar;
FMax := TheMax;
Synchronize(InitProgressBar);
Suspended := False;
end;procedure TWorkProgress.Execute;
begin
{ Place thread code here } while not Terminated do
begin
Synchronize(UpdateProgressBar);
end;
Synchronize(FinishIt);
end;procedure TWorkProgress.FinishIt;
begin
if (PB.Position > PB.Min) and (PB.Position < PB.Max) then
begin
Priority := tpHighest; //tpTimeCritical;
PB.Step := (PB.Max - PB.Position) div 100;
if PB.Step < 1 then PB.Step := 1;
while PB.Position + PB.Step < PB.Max do
PB.StepIt;
end;
PB.Position := PB.Min;
end;procedure TWorkProgress.InitProgressBar;begin
PB.Min := 0;
PB.Max := FMax;//10000;
PB.Step := 1;
PB.Position := 1;
end;procedure TWorkProgress.UpdateProgressBar;
begin
if PB.Position < PB.Max then
PB.StepIt
else
PB.Position := PB.Min;
end;end.