Vic*_*Vic 3 mouse installer inno-setup
我使用Inno安装程序创建了一个设置,在设置过程中,我做了一些长时间的操作来检查系统上的某些值(注册表项,一些文件......),在此期间没有向用户显示任何界面,我做了所有的这个在InitializeSetup函数里面.
我想知道的是,如果我在进行所有这些检查时可以更改鼠标指针,那么用户就知道发生了什么事情.
我想我可以创建一个DLL并从inno调用更改光标的dll中的函数,但是我不想创建一个单独的dll,如果有一种方法只使用pascal脚本,我就会徘徊.
谢谢您的帮助.
取自:http://www.vincenzo.net/isxkb/index.php? title = Cursor_-_ Change_the_mouse_cursor_of_WizardForm
procedure SetControlCursor(control: TWinControl; cursor: TCursor);
var i:Integer;
wc: TWinControl;
begin
if (not (control = nil)) then begin
control.Cursor := cursor;
try
for i:=0 to control.ControlCount-1 do begin
wc := TWinControl(control.Controls[i]);
if (NOT(wc = nil)) then
SetControlCursor(wc, cursor)
else
control.Controls[i].Cursor := cursor;
end; {for}
finally
end;{try}
end;{if}
end;{procedure SetControlCursor}
Run Code Online (Sandbox Code Playgroud)
并将其设置为沙漏:
SetControlCursor(WizardForm, crHourGlass);
Run Code Online (Sandbox Code Playgroud)
要将其恢复正常:
SetControlCursor(WizardForm, crDefault);
Run Code Online (Sandbox Code Playgroud)
小智 5
也许在最新版本的InnoSetup中有所更改,但我无法从Mirtheil那里得到答案。
相反,我发现了这一点:
procedure SetControlCursor(oCtrl: TControl; oCurs: TCursor);
var
i : Integer;
oCmp : TComponent;
begin
oCtrl.Cursor := oCurs;
for i := 0 to oCtrl.ComponentCount-1 do
begin
oCmp := oCtrl.Components[i];
if oCmp is TControl then
begin
SetControlCursor(TControl(oCmp), oCurs);
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
设置沙漏光标:
SetControlCursor(WizardForm, crHourGlass);
Run Code Online (Sandbox Code Playgroud)
重置沙漏光标:
SetControlCursor(WizardForm, crDefault);
Run Code Online (Sandbox Code Playgroud)
希望这对某人有帮助!
归档时间: |
|
查看次数: |
2281 次 |
最近记录: |