Ветеран
Сообщения: 1133
Благодарности: 581
|
Профиль
|
Отправить PM
| Цитировать
У меня XP SP3, всё прекрасно отображается...
Цитата Rostlv:
И привязать его к секции Run »
|
Пример
Код: 
; используем прогрессбар без отображения реального процента,
; удобно при установке доп. программ, когда их время установки заранее не известна
[Setup]
AppName=ProgressBarStyle
AppVerName=ProgressBarStyle v 1.0
DefaultDirName={pf}\ProgressBarStyle
OutputDir=.
Compression=lzma/ultra64
InternalCompressLevel=ultra64
SolidCompression=yes
VersionInfoCopyright=Serega
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion
[Run]
; при первом и последующем запуске доп. программ, используем - BeforeInstall: AnimatePbMsg('Ваше сообщение')
; при последнем запуске, добавляем - AfterInstall: AnimatePbFree - необходимо для освобождения ресурсов и разрушения прогрессбара
Filename: {app}\MyProg.exe; BeforeInstall: AnimatePbMsg('Первый запуск MyProg.exe'); Flags: skipifsilent
Filename: {app}\MyProg.exe; BeforeInstall: AnimatePbMsg('Тестовый запуск MyProg.exe №2'); Flags: skipifsilent
Filename: {app}\MyProg.exe; BeforeInstall: AnimatePbMsg('Финальный запуск MyProg.exe'); AfterInstall: AnimatePbFree; Flags: skipifsilent
[Code]
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';
const
PBM_SETMARQUEE = $040A;
GWL_STYLE = -16;
PBS_MARQUEE = $08;
var
AnimatePb: TNewProgressBar;
procedure CreateAnimatePb;
begin
AnimatePb := TNewProgressBar.Create(WizardForm);
with AnimatePb do
begin
Parent := WizardForm.InstallingPage;
SetBounds(WizardForm.ProgressGauge.Left, WizardForm.ProgressGauge.Top + WizardForm.ProgressGauge.Height + ScaleY(10),
WizardForm.ProgressGauge.Width, WizardForm.ProgressGauge.Height);
SetWindowLong (AnimatePb.Handle, GWL_STYLE, (GetWindowLong (AnimatePb.Handle, GWL_STYLE) or PBS_MARQUEE));
SendMessage(AnimatePb.Handle, PBM_SETMARQUEE, 1, 20);
end;
end;
procedure AnimatePbMsg(const msg: string);
begin
if AnimatePb = nil then
CreateAnimatePb;
WizardForm.FilenameLabel.Caption := msg;
end;
procedure AnimatePbFree;
begin
if AnimatePb <> nil then
begin
AnimatePb.Free;
AnimatePb := nil;
end;
end;
по аналогии
|
-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.
Отправлено: 21:00, 27-12-2010
| #297
|