Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 58
Благодарности: 6

Профиль | Отправить PM | Цитировать


ksunechkin, serg aka lain, такой вариант еще можно, ток вот картинка остаеться(
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program

[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl;

[CustomMessages]
HeaderLabelPage=Выберите тип установки
MyRadioCaption_1=Обычная установка
MyRadioCaption_2=Выборочная установка
PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен.
MyText_1=Установка будет произведена полностью в автоматическом режиме.%n(Подходит для не подготовленных пользователей)
MyText_2=Будет предложен выбор директории установки.%n(Для продвинутых пользователей)
MyText_0=Наведите курсор мыши на тип установки, чтобы прочесть его описание.


[_code]
const
   DI_NORMAL = 3;

var
  MyNewPage: TWizardPage;
  Rect: TRect;
  HIcon: LongInt;
  AIconFileName: String;
  MyRadioBtn_1, MyRadioBtn_2: TNewRadioButton;
  Text: TNewStaticText;
  NoChecks: TLabel;

function GetModuleHandle(lpModuleName: LongInt): LongInt;
 external 'GetModuleHandleA@kernel32.dll stdcall';
function ExtractIcon(hInst: LongInt; lpszExeFileName: AnsiString; nIconIndex: LongInt): LongInt;
 external 'ExtractIconA@shell32.dll stdcall';
function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth,
       cyWidth: Integer; istepIfAniCur: LongInt; hbrFlickerFreeDraw, diFlags: LongInt): LongInt;
 external 'DrawIconEx@user32.dll stdcall';
function DestroyIcon(hIcon: LongInt): LongInt;
 external 'DestroyIcon@user32.dll stdcall';

procedure Check1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Text.Enabled:=True
Text.Caption:=ExpandConstant('{cm:MyText_1}')
try
    AIconFileName := ExpandConstant('{sys}\shell32.dll');

    Rect.Left := 0;
    Rect.Top := 0;
    Rect.Right := 32;
    Rect.Bottom := 32;
    
    hIcon := ExtractIcon(GetModuleHandle(0), AIconFileName, 26);
    try
      with TBitmapImage.Create(WizardForm) do
      begin
        Left := ScaleX(15);
        Top := ScaleY(130);
        Width := 32;
        Height := 32;
        with Bitmap do
        begin
          Width := 32;
          Height := 32;
          Canvas.Brush.Color := clBtnFace;
          Canvas.FillRect(Rect);
          DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL);
        end;
        Parent := MyNewPage.Surface;
      end;
     finally
     DestroyIcon(hIcon);
    end;
  except
  end;
end;

procedure Check2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Text.Enabled:=True
Text.Caption:=ExpandConstant('{cm:MyText_2}')
try
    AIconFileName := ExpandConstant('{sys}\shell32.dll');

    Rect.Left := 0;
    Rect.Top := 0;
    Rect.Right := 32;
    Rect.Bottom := 32;

    hIcon := ExtractIcon(GetModuleHandle(0), AIconFileName, 19);
    try
      with TBitmapImage.Create(WizardForm) do
      begin
        Left := ScaleX(15);
        Top := ScaleY(130);
        Width := 32;
        Height := 32;
        with Bitmap do
        begin
          Width := 32;
          Height := 32;
          Canvas.Brush.Color := clBtnFace;
          Canvas.FillRect(Rect);
          DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL);
        end;
        Parent := MyNewPage.Surface;
      end;
     finally
     DestroyIcon(hIcon);
    end;
  except
  end;
end;

procedure NoChecksMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Text.Enabled:=False
Text.Caption:=ExpandConstant('{cm:MyText_0}')
end;


procedure GetInstTypePage();
begin
  MyNewPage := CreateCustomPage(wpWelcome,
    ExpandConstant('{cm:HeaderLabelPage}'), '');


  with TNewStaticText.Create(WizardForm) do
  begin
    Width := WizardForm.InnerNotebook.Width;
    Height := ScaleY(26);
    WordWrap := True;
    Caption := ExpandConstant('{cm:PageTextHeader}');
    Parent := MyNewPage.Surface;
  end;

  MyRadioBtn_1 := TNewRadioButton.Create(WizardForm);
  with MyRadioBtn_1 do
  begin
    Top := ScaleY(50);
    Width := ScaleX(150);
    Caption := ExpandConstant('{cm:MyRadioCaption_1}');
    Checked := True;
    Parent := MyNewPage.Surface;
    OnMouseMove:=@Check1MouseMove
  end;

  MyRadioBtn_2 := TNewRadioButton.Create(WizardForm);
  with MyRadioBtn_2 do
  begin
    Top := ScaleY(70);
    Width := ScaleX(150);
    Caption := ExpandConstant('{cm:MyRadioCaption_2}');
    Parent := MyNewPage.Surface;
    OnMouseMove:=@Check2MouseMove
  end;


end;

Procedure InitializeWizard();
begin
begin
  GetInstTypePage();
end;
begin
  Text:=TNewStaticText.Create(WizardForm)
  Text.Left := ScaleX(60);
  Text.Top := ScaleY(138);
  Text.Width := WizardForm.InnerNotebook.Width - ScaleX(60);
  Text.Height := ScaleY(26);
  Text.WordWrap := True;
  Text.Parent := MyNewPage.Surface;
end;
begin
  NoChecks:=TLabel.Create(WizardForm)
  NoChecks.Width:=WizardForm.Width
  NoChecks.Height:=WizardForm.Height
  NoChecks.Autosize:=False
  NoChecks.Transparent:=True
  NoChecks.OnMouseMove:=@NoChecksMouseMove
  NoChecks.Parent:=MyNewPage.Surface
end;
end;


function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if (PageID >= wpSelectDir) and (PageID < wpReady) and (MyRadioBtn_1.Checked) then
     Result := True;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:55, 27-12-2010 | #286