Скрипты Inno Setup. Помощь и советы [часть 6]

Ответить
 • Просмотры: 51
Аватара пользователя
Nordek

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Nordek »

Ivan_009, примерно. это если компонент-лист лежит у тебя прямо на WizardForm. тогда отдельно распаковывать файл изображения для компонентлиста не обязательно, можно взять битмап изображения с BGBitmapImage и вместо LoadBGBmpFromFile использовать LoadBGBmpFromBitmap:



Код:

Код: Выделить всё

WizardForm.ComponentsList.LoadBGBmpFromBitmap(BGBitmapImage.Bitmap, WizardForm.ComponentsList.Left, WizardForm.ComponentsList.Top);
Аватара пользователя
saurn

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение saurn »

Gnom_aka_Lexander, Если я правильно понял то как то так:





Код:

Код: Выделить всё

 
var 
BGBitmapImage: TBitmapImage; 
procedure InitializeWizard();
begin
ExtractTemporaryFile('BGImage.bmp');
BGBitmapImage := TBitmapImage.Create(WizardForm);
BGBitmapImage.Parent := WizardForm;
BGBitmapImage.Align := alClient;
BGBitmapImage.SendToBack;
BGBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\BGImage.bmp'))
with WizardForm.ComponentsList do
begin
//BorderStyle := bsNone;
Parent := WizardForm;
SetBounds(ScaleX(110), ScaleY(180), ScaleX(350), ScaleY(120));
Font.Color:=$FFFFFF;
Font.Name:='MS Sans Serif';
Font.Size:= 9;
TreeViewStyle := True;
WizardForm.ComponentsList.LoadBGBmpFromBitmap(BGBitmapImage.Bitmap, WizardForm.ComponentsList.Left, WizardForm.ComponentsList.Top);
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
WizardForm.ComponentsList.Hide;
BGBitmapImage.Hide;
case CurPageID of
wpSelectComponents:
begin
WizardForm.ComponentsList.Show;
BGBitmapImage.Show;
end;
end;
end;
Аватара пользователя
innot20

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение innot20 »

Цитата Gnom_aka_Lexander:



Ну или отключить сглаживание ClearTipe для шрифта компонент-листа
Скрипты Inno Setup. Помощь и советы [часть 6]




А я то всю голову ломал, что за замыленность. ClearType по умолчанию то стоит, и ошибкой не посчитал.




Цитата Gnom_aka_Lexander:



ты будешь смеяться
Скрипты Inno Setup. Помощь и советы [часть 6]




Ничего смешного, MS Sans Serif - волшебный шрифт.

Далее не относится к теме, но относится к шрифту:

Gnom_aka_Lexander, Ты возможно тоже будешь удивлён, но в "C:\Program Files\Inno Setup 5\ISLanguages"

в файле "Russian_ansi.lng" (у меня Tahoma в нём по умолчанию) если заменить DialogFontName=Tahoma на DialogFontName=MS Sans Serif то в Inno Setup Compiler будут отображаться русские буквы вместо непонятных иероглифов.



Ivan_009, И как, нормально компилится?

В WizardForm.ComponentsList под TreeViewStyle := True; лишний end; убери.
Аватара пользователя
Nordek

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Nordek »

Цитата Ivan_009:



BGBitmapImage.Show;
Скрипты Inno Setup. Помощь и советы [часть 6]




картинка только на странице компонентов, чтоли?


Цитата Nordek:



А я то всю голову ломал, что за замыленность.
Скрипты Inno Setup. Помощь и советы [часть 6]




дело не в замыленности как таковой, там именно из-за сглаживания и именно Cleartype целая куча артефактных явлений - утолщение шрифта при каждом клике, до полного закрашивания и еще какие-то глюки вроде были. и я помню всю голову сломал и уж никак на шрифт не думал. Sans Serif - потому что он старый и не имеет механизма сглаживания Cleartype. скорей всего еще какие-то можно использовать из старых в этой ситуации, я не искал, предпочитаю Tahoma и отключение Cleartype там, где он вызывает глюки.
Цитата Nordek:



русские буквы вместо непонятных иероглифов.
Скрипты Inno Setup. Помощь и советы [часть 6]




для меня неактуально. я так и не смог поймать такой смешной и где-то даже интересный глюк. ни разу.
Аватара пользователя
saurn

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение saurn »

Цитата Gnom_aka_Lexander:



картинка только на странице компонентов, чтоли?
Скрипты Inno Setup. Помощь и советы [часть 6]




Gnom_aka_Lexander, У меня на остальных через Ботву наложена. Или может как нибудь подругому надо..



Как обьеденить ComponentsList и TasksList в одну страницу...
Аватара пользователя
innot20

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение innot20 »

Цитата Ivan_009:



Как обьеденить ComponentsList и TasksList в одну страницу
Скрипты Inno Setup. Помощь и советы [часть 6]




Это вопрос?




Хочешь так:




Код:

Код: Выделить всё

[Code]
procedure InitializeWizard();
begin
  with WizardForm.ComponentsList do
  begin
    Parent := WizardForm.SelectTasksPage;
    Width := ScaleX(193);
    Top := ScaleY(37);
    Height := ScaleY(168);
  end;
  with WizardForm.ComponentsDiskSpaceLabel do
  begin
    Parent := WizardForm.SelectTasksPage;
  end;
  with WizardForm.TypesCombo do
  begin
    Visible := False;
  end;
  with WizardForm.TasksList do
  begin
    Left := ScaleX(208);
    Width := ScaleX(209);
  end;
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
 if(PageID =wpSelectComponents) then Result:= True;
end;





а хочешь так:




Код:

Код: Выделить всё

[Code]
procedure InitializeWizard();
begin
  WizardForm.ComponentsList.Parent := WizardForm.SelectTasksPage;
  WizardForm.ComponentsList.Width := ScaleX(193);
  WizardForm.ComponentsList.Top := ScaleY(37);
  WizardForm.ComponentsList.Height := ScaleY(168);
  WizardForm.ComponentsDiskSpaceLabel.Parent := WizardForm.SelectTasksPage;
  WizardForm.TypesCombo.Visible := False;
  WizardForm.TasksList.Left := ScaleX(208);
  WizardForm.TasksList.Width := ScaleX(209);
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
 if(PageID =wpSelectComponents) then Result:= True;
end;






Выбирай как больше нравится.
Аватара пользователя
nik1967

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение nik1967 »

Nordek, У меня все на WizardForm лежит. Эти примеры не работают... Изображение
Аватара пользователя
Nordek

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Nordek »

Цитата Ivan_009:



У меня все на WizardForm лежит.
Скрипты Inno Setup. Помощь и советы [часть 6]




Не понял.




читать дальше »




Код:

Код: Выделить всё

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Components]
Name: a; Description: A
[Tasks]
Name: a; Description: A
[Code]
procedure RedesignWizardForm;
begin
  WizardForm.ComponentsList.Parent := WizardForm.SelectTasksPage;
  WizardForm.ComponentsList.Width := ScaleX(193);
  WizardForm.ComponentsList.Top := ScaleY(37);
  WizardForm.ComponentsList.Height := ScaleY(168);
  WizardForm.ComponentsDiskSpaceLabel.Parent := WizardForm.SelectTasksPage;
  WizardForm.TypesCombo.Visible := False;
  WizardForm.TasksList.Left := ScaleX(208);
  WizardForm.TasksList.Width := ScaleX(209);
end;
procedure InitializeWizard();
begin
  RedesignWizardForm;
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
 if(PageID =wpSelectComponents) then Result:= True;
end;
Аватара пользователя
Gnom_aka_Lexander

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Gnom_aka_Lexander »

Цитата Ivan_009:



У меня все на WizardForm лежит. Эти примеры не работают...
Скрипты Inno Setup. Помощь и советы [часть 6]




Так измените родителя на WizardForm, и в CurPageChanged определите скрытие\показ элементов.


Простой пример




Код:

Код: Выделить всё

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
[Tasks]
Name: task; Description: task;
[Components]
Name: component; Description: component; Types: full;
[Code]
procedure InitializeWizard();
begin
    WizardForm.InnerNotebook.Hide;
    WizardForm.TypesCombo.Hide;
    WizardForm.ComponentsList.Parent := WizardForm;
    WizardForm.ComponentsList.SetBounds(ScaleX(37), ScaleY(102), ScaleX(200), ScaleY(170));
    WizardForm.ComponentsDiskSpaceLabel.Hide;
    WizardForm.TasksList.Parent := WizardForm;
    WizardForm.TasksList.SetBounds(ScaleX(WizardForm.ComponentsList.Left + 220), ScaleY(102), ScaleX(200), ScaleY(170));
    WizardForm.TasksList.BorderStyle := bsSingle;
    WizardForm.TasksList.Color := $FFFFFF;
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
    case PageID of
        7: Result := True;
    end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
    WizardForm.ComponentsList.Hide;
    WizardForm.TasksList.Hide;
    case CurPageID of
        9:
        begin
            WizardForm.ComponentsList.Show;
            WizardForm.TasksList.Show;
        end;
    end;
end;
Аватара пользователя
Nordek

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Nordek »

Ivan_009, Если вешать на SelectComponentsPage, то задач не будет пока не перейдёшь на страницу самих задач. А когда возвратишься к компонентам то задачи появятся.

Если так же секции [Components] не будет, то и вовсе будет скрыто - в этом случае можно было бы повесить на SelectTasksPage. Но опять же если секции [Tasks] не будет, то и компоненты будут скрыты.

Можно повесить на новую страницу:


читать дальше »




Код:

Код: Выделить всё

[Code]
var
  PageComTasks: TWizardPage;
procedure InitializeWizard();
begin
  PageComTasks := CreateCustomPage(wpSelectTasks, 'Caption', 'Description');
  WizardForm.ComponentsList.Parent := PageComTasks.Surface;
  WizardForm.ComponentsList.Width := ScaleX(193);
  WizardForm.ComponentsList.Top := ScaleY(43);
  WizardForm.ComponentsList.Height := ScaleY(168);
  WizardForm.ComponentsDiskSpaceLabel.Parent := PageComTasks.Surface;
  WizardForm.ComponentsDiskSpaceLabel.AutoSize := True;
  WizardForm.TasksList.Parent := PageComTasks.Surface;
  WizardForm.TasksList.Left := ScaleX(208);
  WizardForm.TasksList.Width := ScaleX(209);
  WizardForm.TasksList.Top := ScaleY(43);
  WizardForm.SelectComponentsLabel.Parent := PageComTasks.Surface;
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
 if(PageID =wpSelectComponents) or(PageID =wpSelectTasks) then Result:= True;
end;





но и тут не без нюансов - если секций [Components] и [Tasks] не будет, то будет пустая страница.
Ответить

Вернуться в «Автоматическая установка приложений»