FMXInno

DLL FMXInno October 27, 2024

Нет прав для скачивания
всем доброго времени суток . арни подскажите как в фмх сделать таймер установки файлов когда програесс бар идет
типо так
Осталось примерно : 1мин 34 сек и щел таймер в обратном отсчете
Прошло около : 0 мин 54 сек и тут показывало что он прибавляет тоесть общее время сколько уже ставится

и как то это синхронно нужно что бы работало когда прогресс бар дошел до конца и все файлы у становились и тогда выдало Осталось примерно : Завершение... и переключилось на страницу с кнопкой завершить. может кто знает подскажит. а то это в скрипте есть но там не че чет не работает просто так висят надписи когда идет установка и все
 
всем доброго времени суток . арни подскажите как в фмх сделать таймер установки файлов когда програесс бар идет
типо так
Осталось примерно : 1мин 34 сек и щел таймер в обратном отсчете
Прошло около : 0 мин 54 сек и тут показывало что он прибавляет тоесть общее время сколько уже ставится

и как то это синхронно нужно что бы работало когда прогресс бар дошел до конца и все файлы у становились и тогда выдало Осталось примерно : Завершение... и переключилось на страницу с кнопкой завершить. может кто знает подскажит. а то это в скрипте есть но там не че чет не работает просто так висят надписи когда идет установка и все
Не помню где его взял, но на тот момент это работало
 

Вложения

Не помню где его взял, но на тот момент это работало
спасибо. я сделал как то так
function SecondsToTime(Seconds: Cardinal): String;
var
m, s: Cardinal;
begin
m := Seconds div 60;
s := Seconds mod 60;
Result := Format('%d мин %d сек', [m, s]);
end;

procedure NewProcCallback(AHWND: HWND; AMsg, AWParam: Cardinal; ALParam: Integer);
var
S, CurrentFile: String;
Elapsed, Remaining: Cardinal;
CurPos, MaxPos: Integer;
ProgressPercent: Double;
begin
CurPos := WizardForm.ProgressGauge.Position;
MaxPos := WizardForm.ProgressGauge.Max;
Page5ProgressBar.Value(CurPos);
if MaxPos > 0 then ProgressPercent := (CurPos * 100.0) / MaxPos else ProgressPercent := 0;
if CurPos = 0 then
begin
Page5Label[3].Text('Осталось примерно : подготовка...');
Page5Label[4].Text('Прошло около : 0 сек');
exit;
end;
if ProgressPercent >= 100.0 then
begin
Page5Label[3].Text('Осталось примерно : ожидание загрузки...');
Page5Label[4].Text('Распаковка завершена');
end
else
begin
if InstallStartTime = 0 then InstallStartTime := GetTickCount;
Elapsed := (GetTickCount - InstallStartTime) div 1000;
Remaining := Round((Elapsed * (MaxPos - CurPos)) / CurPos);
if Remaining = 0 then
Page5Label[3].Text('Осталось примерно : финализация...')
else
Page5Label[3].Text('Осталось примерно : ' + SecondsToTime(Remaining));
Page5Label[4].Text('Прошло около : ' + SecondsToTime(Elapsed));
end;
CurrentFile := ExtractFileName(WizardForm.FilenameLabel.Caption);
S := ' Извлекается ' + CurrentFile;
if (length(CurrentFile) > 0) and (Page5Memo.LineStrings(Page5Memo.LineCount - 1) <> S) then
Page5Memo.AddLine(S);
end;
 
парни подскажите может кто знает не могу прогресс бар с текстом вывести на 4 страницу все перепробовал неделю уже способы кручу но все собирается прогрес бар по идее должен быть но его нет по чему сверху его нет не понятно вот как бы я не собирал все работает без ошибок но элементов нет на поверхности не каких все время так

через PageLayer не че не хочет отображаться хотя другие страницы все выводят адекватно а вот прогресс бар не фига. может кто что подскажет . есть конешно вариант через FMXForm.Handle попробовать но хотелось бы вывести через PageLayer просто не понимаю что лучше будет и как лучше . мне хотя бы его вообще сделать поверх картинки видимым . Если кто знает как это решить подмогните . а то все готово и работает а прогресса нет и с ним загвоздка
 
Последнее редактирование:
если что вот на этом щас пробую
{ Page4 - Installing }
Page4.FCreate(PageLayer.Handle);
Page4.Visible(True);

// Текстовые поля (FShadowText)
PgInstText[1].FCreate(Page4.Handle, 50, 200, 600, 25, '');
PgInstText[1].TextSetting('Segoe UI', 12, ALWhiteSmoke, txLeading, txCenter, False);
PgInstText[1].Visible(True);

PgInstText[2].FCreate(Page4.Handle, 700, 200, 80, 25, '0%');
PgInstText[2].TextSetting('Segoe UI', 12, ALWhiteSmoke, txCenter, txCenter, False);
PgInstText[2].Visible(True);

PgInstText[3].FCreate(Page4.Handle, 50, 240, 200, 25, '');
PgInstText[3].TextSetting('Segoe UI', 11, ALWhiteSmoke, txLeading, txCenter, False);
PgInstText[3].Visible(True);

PgInstText[4].FCreate(Page4.Handle, 300, 240, 200, 25, '');
PgInstText[4].TextSetting('Segoe UI', 11, ALWhiteSmoke, txLeading, txCenter, False);
PgInstText[4].Visible(True);

PgInstText[5].FCreate(Page4.Handle, 550, 240, 200, 25, '');
PgInstText[5].TextSetting('Segoe UI', 11, ALWhiteSmoke, txLeading, txCenter, False);
PgInstText[5].Visible(True);

// Прогресс-бар (FProgressBar)
PgInstPBar.FCreate(Page4.Handle);
PgInstPBar.SetBounds(50, 280, 850, 30);
PgInstPBar.Max(100);
PgInstPBar.Value(0);
PgInstPBar.Visible(True);
 
если что вот на этом щас пробую
{ Page4 - Installing }
Page4.FCreate(PageLayer.Handle);
Page4.Visible(True);

// Текстовые поля (FShadowText)
PgInstText[1].FCreate(Page4.Handle, 50, 200, 600, 25, '');
PgInstText[1].TextSetting('Segoe UI', 12, ALWhiteSmoke, txLeading, txCenter, False);
PgInstText[1].Visible(True);

PgInstText[2].FCreate(Page4.Handle, 700, 200, 80, 25, '0%');
PgInstText[2].TextSetting('Segoe UI', 12, ALWhiteSmoke, txCenter, txCenter, False);
PgInstText[2].Visible(True);

PgInstText[3].FCreate(Page4.Handle, 50, 240, 200, 25, '');
PgInstText[3].TextSetting('Segoe UI', 11, ALWhiteSmoke, txLeading, txCenter, False);
PgInstText[3].Visible(True);

PgInstText[4].FCreate(Page4.Handle, 300, 240, 200, 25, '');
PgInstText[4].TextSetting('Segoe UI', 11, ALWhiteSmoke, txLeading, txCenter, False);
PgInstText[4].Visible(True);

PgInstText[5].FCreate(Page4.Handle, 550, 240, 200, 25, '');
PgInstText[5].TextSetting('Segoe UI', 11, ALWhiteSmoke, txLeading, txCenter, False);
PgInstText[5].Visible(True);

// Прогресс-бар (FProgressBar)
PgInstPBar.FCreate(Page4.Handle);
PgInstPBar.SetBounds(50, 280, 850, 30);
PgInstPBar.Max(100);
PgInstPBar.Value(0);
PgInstPBar.Visible(True);
В FMX в большинстве Visible и так по умолчанию True, его установка - по сути NOOP.
Дело не в этом скорее всего: В некоторых стилях у прогрессбара фон может быть прозрачным.
Для проверки поставь Value не 0, а, 60 - сразу станет ясно, рисуется ли сам прогрессбар. Или пробуй другой стиль (любой)
 
Последнее редактирование:
В FMX в большинстве Visible и так по умолчанию True, его установка - по сути NOOP.
Скорее всего дело не в этом: В некоторых стилях у прогрессбара фон может быть прозрачным.
Для проверки поставь Value не 0, а, 60 - сразу станет ясно, рисуется ли сам прогрессбар. Или пробуй другой стиль (любой)
попробовал так Value 60 не че серавно пусто . я в Лс вам кинул весь скрипт может глянете . я просто уже не знаю че не так делаю неделю пробую всякие способы и не пойму где не так делаю что бы не сделал всегда пустая страница
 
попробовал так Value 60 не че серавно пусто . я в Лс вам кинул весь скрипт может глянете . я просто уже не знаю че не так делаю неделю пробую всякие способы и не пойму где не так делаю что бы не сделал всегда пустая страница
Здесь не в Visible дело - оно уже True и не в FMXInno. Сейчас это проблема не с dll вообще . У тебя код просто не переключает на wpInstalling, потому что между страницами есть wpReady.
Либо обрабатывай её (если решил ее оставить, что то добавь в неё), либо отключи через DisableReadyPage=True.

code_language.pascal:
[Setup]
DisableReadyPage=True
 
Назад
Сверху