Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 8]
Sotonisto
11-03-2015, 13:32
Dodakaedr, большое спасибо. Всё прекрасно работает.
Dodakaedr
11-03-2015, 16:44
Мне еще нужно когда не наводишь на компонент то останется главная картинка »
[Setup]
AppName=Моя программа
AppVersion=1.5
DefaultDirName={pf}\Моя программа
[Languages]
Name: "RU"; MessagesFile: "compiler:Languages\Russian.isl"
[CustomMessages]
RU.CompName1=Компонент 1
RU.CompName2=Компонент 2
RU.ComponentsInfo=Наведите курсор мыши на компонент, чтобы прочитать его описание.
RU.ComponentsImgInfo=Наведите курсор мыши на компонент, чтобы посмотреть его превью.
RU.CompDesc1=Описание первого компонента
RU.CompDesc2=Описание второго компонента
[Files]
Source: "compiler:WizModernImage.bmp"; DestName: "CompDescImg1.bmp"; Flags: dontcopy
Source: "compiler:WizModernImage-IS.bmp"; DestName: "CompDescImg2.bmp"; Flags: dontcopy
Source: "compiler:WizModernImage-IS.bmp"; DestName: "MainPic.bmp"; Flags: dontcopy
[Types]
Name: full; Description: Full installation; Flags: iscustom
[Components]
Name: comp1; Description: "{cm:CompName1}"; Types: full
Name: comp2; Description: "{cm:CompName2}"; Types: full
[Code]
type
TComponentDesc = record
ImageName: String;
Index: Integer;
end;
var
CompDescs: array of TComponentDesc;
CompDescImgPanel: TPanel;
CompIndex, LastIndex: Integer;
CompDescImg: TBitmapImage;
procedure ShowCompDescription(Sender: TObject; X, Y, Index: Integer; Area: TItemArea);
var
i: Integer;
begin
if Index = LastIndex then Exit;
CompIndex := -1;
for i := 0 to GetArrayLength(CompDescs) -1 do
begin
if (CompDescs[i].Index = Index) then
begin
CompIndex := i;
Break;
end;
end;
if (CompIndex >= 0) and (Area = iaItem) then
begin
if not FileExists(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName) then
ExtractTemporaryFile(CompDescs[CompIndex].ImageName);
CompDescImg.Bitmap.LoadFromFile(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName);
end;
LastIndex := Index;
end;
procedure CompListMouseLeave(Sender: TObject);
begin
LastIndex := -1;
ExtractTemporaryFile('MainPic.bmp');
CompDescImg.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MainPic.bmp'));
end;
procedure AddCompDescription(AIndex: Integer; AImageName: String);
var
i: Integer;
begin
i := GetArrayLength(CompDescs);
SetArrayLength(CompDescs, i + 1);
CompDescs[i].ImageName := AImageName;
CompDescs[i].Index := AIndex - 1
end;
procedure InitializeWizard();
begin
WizardForm.SelectComponentsLabel.Hide;
WizardForm.TypesCombo.Hide;
WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(0), ScaleX(184), ScaleY(45));
WizardForm.ComponentsList.OnItemMouseMove:= @ShowCompDescription;
WizardForm.ComponentsList.OnMouseLeave := @CompListMouseLeave;
CompDescImgPanel := TPanel.Create(WizardForm);
with CompDescImgPanel do
begin
Parent := WizardForm.SelectComponentsPage;
SetBounds(ScaleX(192), ScaleY(0), ScaleX(225), ScaleY(120));
BevelInner := bvLowered;
end;
CompDescImg := TBitmapImage.Create(WizardForm);
with CompDescImg do
begin
Parent := CompDescImgPanel;
SetBounds(ScaleX(5), ScaleY(5), CompDescImgPanel.Width - ScaleX(10), CompDescImgPanel.Height - ScaleY(10));
Stretch := True;
ExtractTemporaryFile('MainPic.bmp');
Bitmap.LoadFromFile(ExpandConstant('{tmp}\MainPic.bmp'));
end;
AddCompDescription(1, 'CompDescImg1.bmp');
AddCompDescription(2, 'CompDescImg2.bmp');
end;
его сделать, помогите пожайлуста »
прочтите еще раз полностью обсуждение вашего вопроса, в основном это помогает вернуть свое понимание)) ну а если все же нет то вот вам пример »
Спасибо ваш пример помог , но у меня возник такой вопрос, я с Messages убрал натпись на кнопке , но она осталась , я подумал что ето может сама картинка с натписью , но нет , неподскажете что ето может быть? https://yadi.sk/i/CK0NoXnDfBH6E
Dodakaedr
11-03-2015, 18:13
неподскажете что ето может быть? »
Это кнопка! Если хотите убрать то нужно её скрыть [Setup]
AppName=test
AppVersion=1.0
DefaultDirName={pf}\test
[code]
procedure CurPageChanged(CurPageID: Integer);
begin
WizardForm.BackButton.Hide;
end;
секция Messages служить для изменения надписей, если она отсутствует то используется текст по умолчанию с языкового файла [Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
ekspoint
11-03-2015, 19:33
»
спасибо
Sotonisto
14-03-2015, 14:44
Доброго времени суток.
Подскажите, как реализовать отображение жирного текста одновременно с обычным. Т.е.:
Caption:= ExpandConstant('Случайная надпись в скрипте');
отображается как "Случайная надпись в скрипте", мне же необходимо "Случайная надпись в скрипте".
kotyarko@fb
14-03-2015, 16:50
Подскажите, как реализовать отображение жирного текста одновременно с обычным. »
http://krinkels.org/threads/redrawtext.818/
Здраствуйте , не подскажите как сделать абзац в строке в Inno
Dodakaedr
14-03-2015, 17:32
Здраствуйте , не подскажите как сделать абзац в строке в Inno »
[Setup]
AppName=test
AppVersion=1.0
DefaultDirName={pf}\test
[Code]
var
Label1: TLabel;
procedure RedesignWizardForm;
begin
{ Label1 }
Label1 := TLabel.Create(WizardForm);
with Label1 do
begin
Parent := WizardForm.WelcomePage;
Caption := 'Label1' + #13#10 +
'' + #13#10 +
'абзац....';
Left := ScaleX(192);
Top := ScaleY(216);
Width := ScaleX(45);
Height := ScaleY(39);
end;
with WizardForm.WelcomeLabel2 do
begin
Height := ScaleY(103);
end;
end;
procedure InitializeWizard();
begin
RedesignWizardForm;
end;
од: Выделить весь код
[Setup]
AppName=test
AppVersion=1.0
DefaultDirName={pf}\test
[Code]
var
Label1: TLabel;
procedure RedesignWizardForm;
begin
{ Label1 }
Label1 := TLabel.Create(WizardForm);
with Label1 do
begin
Parent := WizardForm.WelcomePage;
Caption := 'Label1' + #13#10 +
'' + #13#10 +
'абзац....';
Left := ScaleX(192);
Top := ScaleY(216);
Width := ScaleX(45);
Height := ScaleY(39);
end;
with WizardForm.WelcomeLabel2 do
begin
Height := ScaleY(103);
end;
end;
procedure InitializeWizard();
begin
RedesignWizardForm;
end; »
спибо большое , вы очередной раз меня выручили :) :)
еще вопросик, не подскажите как решить такую небольшую проблемку ?
https://yadi.sk/i/dFHhJtrZfFiuz
Dodakaedr
14-03-2015, 20:39
еще вопросик, не подскажите как решить такую небольшую проблемку ? »
вот так:
SystemPage.Caption := 'заголовок';
SystemPage.Description := 'описание';
или что вы имели ввиду?
Может это? [Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[CustomMessages]
Caption=заголовок
Desc=описание
[Code]
var
SystemPage: TWizardPage;
procedure InitializeWizard();
begin
SystemPage := CreateCustomPage(wpSelectTasks, CustomMessage('Caption'), CustomMessage('Desc'));
end;
Пожалуйста, поподробней излагайте суть вашей проблемы.
Профиль | Отправить PM | Цитировать | Сообщить модератору
Цитата ShadeUa:
еще вопросик, не подскажите как решить такую небольшую проблемку ? »
вот так:
Код: Выделить весь код
SystemPage.Caption := 'заголовок';
SystemPage.Description := 'описание';
или что вы имели ввиду?
Может это?
Скрытый текст
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[CustomMessages]
Caption=заголовок
Desc=описание
[Code]
var
SystemPage: TWizardPage;
procedure InitializeWizard();
begin
SystemPage := CreateCustomPage(wpSelectTasks, CustomMessage('Caption'), CustomMessage('Desc'));
end;
Пожалуйста, поподробней излагайте суть вашей проблемы. »
извиняюсь , случайно удалил. Не переводиться текс, там нужно что то дописать я незнаю что , ну тоисть все то перевелось кроме того что я подчеркнул
Dodakaedr
14-03-2015, 21:02
Не переводиться текс, там нужно что то дописать я незнаю что »
Все как и с остальными элементами скрипта. Создаете CustomMessages [CustomMessages]
rusCaption=заголовок
rusDesc=описание
engCaption=Caption
engDesc=Description
и прописываете в процедуре ChangeLang
SystemPage.Caption := CustomMessage(lang+'Caption');
SystemPage.Description := CustomMessage(lang+'Desc');
Все как и с остальными элементами скрипта. Создаете CustomMessages
Код: Выделить весь код
[CustomMessages]
rusCaption=заголовок
rusDesc=описание
engCaption=Caption
engDesc=Description
и прописываете в процедуре ChangeLang
Код: Выделить весь код
SystemPage.Caption := CustomMessage(lang+'Caption');
SystemPage.Description := CustomMessage(lang+'Desc'); »
https://yadi.sk/i/u_TuaoKEfFnLF не помогло , вроде бы сделал так же и не помогло
Dodakaedr
14-03-2015, 21:40
не помогло , вроде бы сделал так же и не помогло »
Все работает [Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
ShowLanguageDialog=auto
[Languages]
Name: "eng"; MessagesFile: "compiler:Languages\English.isl"
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"
[CustomMessages]
rusCaption=заголовок
rusDesc=описание
engCaption=Caption
engDesc=Description
[Code]
var
SystemPage: TWizardPage;
lang: String;
langBtn: TButton;
procedure ChangeLang();
begin
SystemPage.Caption := CustomMessage(lang+'Caption');
SystemPage.Description := CustomMessage(lang+'Desc');
end;
procedure LangBtnClick(Sender: TObject);
begin
if lang='rus' then begin
lang:= 'eng';
langBtn.Caption:= 'рус';
end else begin
lang:= 'rus';
langBtn.Caption:= 'eng';
end;
ChangeLang();
end;
procedure InitializeWizard();
begin
SystemPage := CreateCustomPage(wpSelectTasks, 'заголовок','описание');
langBtn:= TButton.Create(WizardForm);
with langBtn do begin
SetBounds(10,WizardForm.CancelButton.Top,30,WizardForm.CancelButton.Height)
OnClick:= @LangBtnClick;
Parent:= WizardForm;
end;
if ActiveLanguage='rus' then begin
lang:= 'rus';
langBtn.Caption:= 'eng';
end else begin
lang:= 'eng';
langBtn.Caption:= 'рус';
end;
end;
Все работает
Скрытый текст
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
ShowLanguageDialog=auto
[Languages]
Name: "eng"; MessagesFile: "compiler:Languages\English.isl"
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"
[CustomMessages]
rusCaption=заголовок
rusDesc=описание
engCaption=Caption
engDesc=Description
[Code]
var
SystemPage: TWizardPage;
lang: String;
langBtn: TButton;
procedure ChangeLang();
begin
SystemPage.Caption := CustomMessage(lang+'Caption');
SystemPage.Description := CustomMessage(lang+'Desc');
end;
procedure LangBtnClick(Sender: TObject);
begin
if lang='rus' then begin
lang:= 'eng';
langBtn.Caption:= 'рус';
end else begin
lang:= 'rus';
langBtn.Caption:= 'eng';
end; »
да , у вас получилось а у меня почему то нет , все перепроверил все ровно нечего(
Все работает »
а если я вам скину скрипт , вы сможете помочь решить проблему?
Всем привет :) Подскажите пожалуйста, как при создании установщика сделать два исполняемых файла? Мне нужно, чтоб с одного создавался ярлык и после установки пользователь мог сам запустить этот файл .exe. А другой должен по окончанию установки запуститься автоматически без создания ярлыка на рабочем столе. Спасибо :)
Dodakaedr
15-03-2015, 00:26
а если я вам скину скрипт , вы сможете помочь решить проблему? »
попробую конечно
сделать два исполняемых файла? »
сделать? В смысле?
Мне нужно, чтоб с одного создавался ярлык и после установки пользователь мог сам запустить этот файл .exe. А другой должен по окончанию установки запуститься автоматически без создания ярлыка на рабочем столе. »
[setup]
AppName=My programm
AppVersion=1.0
DefaultDirName={pf}\My programm
DisableProgramGroupPage=yes
[Files]
Source: "compiler:Examples\MyProg.exe"; DestDir: "{app}";
[Icons]
; создаем ярлык чтобы пользователь мог сам запустить этот файл .exe
Name: "{userdesktop}\MyProg"; Filename: "{app}\MyProg.exe";
[Run]
; запуститься автоматически без создания ярлыка на рабочем столе.
//Filename: "http://forum.oszone.net/thread-294838-30.html"; Flags: skipifsilent shellexec
; или для .exe файла (пример: калькулятор)
Filename: "calc.exe"; Flags: skipifsilent nowait
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.