Как изменить курсор мыши в настройках Inno? - PullRequest
3 голосов
/ 14 августа 2010

Я создал установку с помощью установщика Inno, во время установки я сделал несколько длительных операций, чтобы проверить определенные значения в системе (ключи реестра, некоторые файлы ...), и в течение этого времени пользователю не отображался интерфейс.сделайте все это внутри функции InitializeSetup.

Я хотел бы знать, могу ли я изменить указатель мыши во время выполнения всех этих проверок, чтобы пользователь знал, что что-то происходит.

Я думаю, что могу создать dll и вызвать из inno функции внутри dll, которые меняют курсор, но я не хочу создавать отдельную dll, я бродил, если есть способ сделать этопросто используя паскаль.

Спасибо за помощь.

Ответы [ 2 ]

5 голосов
/ 14 августа 2010

Взято из: 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}

И установить его на песочные часы:

SetControlCursor(WizardForm, crHourGlass);

Чтобы вернуть его в нормальное состояние:

SetControlCursor(WizardForm, crDefault);
4 голосов
/ 07 ноября 2015

Возможно, что-то изменилось в последних версиях InnoSetup, но я не смог получить ответ от Миртеила.

Вместо этого я понял это:

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;

Установить курсор на песочные часы:

SetControlCursor(WizardForm, crHourGlass);    

Сброс курсора песочных часов:

SetControlCursor(WizardForm, crDefault);  

Надеюсь, это кому-нибудь поможет!

...