Prost 1 #232617 Posted November 21, 2014 (edited) 'Есть пример.' [Setup] AppName=Моя программа AppVersion=1.5 AppPublisher=YURSHAT AppPublisherURL=http://krinkels.org/ 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 [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 Description: String; ImageName: String; Index: Integer; end; var CompDescs: array of TComponentDesc; CompDescPanel, CompDescImgPanel: TPanel; CompDescText: array[1..2] of TLabel; 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); CompDescImg.Show; CompDescText[2].Caption := CompDescs[CompIndex].Description; CompDescText[2].Enabled := True; end else begin CompDescText[2].Caption := CustomMessage('ComponentsInfo'); CompDescText[2].Enabled := False; CompDescImg.Hide; end; LastIndex := Index; end; procedure CompListMouseLeave(Sender: TObject); begin CompDescImg.Hide; CompDescText[2].Caption := CustomMessage('ComponentsInfo'); CompDescText[2].Enabled := False; LastIndex := -1; end; procedure AddCompDescription(AIndex: Integer; ADescription: String; AImageName: String); var i: Integer; begin i := GetArrayLength(CompDescs); SetArrayLength(CompDescs, i + 1); CompDescs[i].Description := ADescription; 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(205)); 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; CompDescText[1] := TLabel.Create(WizardForm); with CompDescText[1] do begin Parent := CompDescImgPanel; SetBounds(ScaleX(5), ScaleY(5), CompDescImgPanel.Width - ScaleX(10), CompDescImgPanel.Height - ScaleY(10)); AutoSize := False; WordWrap := True; Enabled := False; Caption := CustomMessage('ComponentsImgInfo'); 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; Hide; end; CompDescPanel := TPanel.Create(WizardForm); with CompDescPanel do begin Parent := WizardForm.SelectComponentsPage; SetBounds(ScaleX(192), ScaleY(125), ScaleX(225), ScaleY(80)); BevelInner := bvLowered; end; CompDescText[2] := TLabel.Create(WizardForm); with CompDescText[2] do begin Parent := CompDescPanel; SetBounds(ScaleX(5), ScaleY(5), CompDescPanel.Width - ScaleX(10), CompDescPanel.Height - ScaleY(10)); AutoSize := False; WordWrap := True; Enabled := False; Caption := CustomMessage('ComponentsInfo'); end; AddCompDescription(1, CustomMessage('CompDesc1'), 'CompDescImg1.bmp'); AddCompDescription(2, CustomMessage('CompDesc2'), 'CompDescImg2.bmp'); end; А можешь мне встроить это в скрипт? Просто я не знаю как это вставлять и что редактировать. Могу скинуть в лч его. Edited November 21, 2014 by Prost Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #232646 Posted November 21, 2014 есть пример лога распаковки файлов на странице установки? А можешь мне встроить это в скрипт? Просто я не знаю как это вставлять и что редактировать. Могу скинуть в лч его. взял и добавил в код,дальше сам дописывай. Quote Share this post Link to post Short link Share on other sites
Prost 1 #232649 Posted November 21, 2014 (edited) есть пример лога распаковки файлов на странице установки? взял и добавил в код,дальше сам дописывай Я думаю будет лучше, если это будет делать человек понимающий в этой программе, я не особо знаю как прописывать код, единственное что я могу сделать это просто выбор модов и всё. Хотелось бы сделать с картинками но я не умею этого делать Edited November 21, 2014 by Prost Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #232652 Posted November 21, 2014 (edited) Я думаю будет лучше, если это будет делать человек понимающий в этой программе, я не особо знаю как прописывать код, единственное что я могу сделать это просто выбор модов и всё. Хотелось бы сделать с картинками но я не умею этого делать ну го в лс Edited November 21, 2014 by Ekspoint Quote Share this post Link to post Short link Share on other sites
Prost 1 #232718 Posted November 21, 2014 Подскажите что за ошибка? Как её исправить? Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #232723 Posted November 21, 2014 есть нормальный пример лога распаковки файлов на странице установки? почему лог установки создается после второго раза установки? а то когда ставишь первый раз он не пишется,почему так? Quote Share this post Link to post Short link Share on other sites
Andrew_Dark 8 #232731 Posted November 22, 2014 Это ты про лог со страницы 11? У меня тоже самое происходит. Quote Share this post Link to post Short link Share on other sites
AtotIK 580 #232736 Posted November 22, 2014 Этот код? Если сохраняете в подпапку, то её сначала нужно создать. Quote Share this post Link to post Short link Share on other sites
Andrew_Dark 8 #232742 Posted November 22, 2014 Ахах, вот где заковыка то была, спасибо, всё работатет:) Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #232749 Posted November 22, 2014 Подскажите что за ошибка? Как её исправить? procedure ShowCompDescription(Sender: TObject; X, Y, Index: Integer; Area: TItemArea); есть нормальный пример лога распаковки файлов на странице установки? 'Это имеется ввиду?' Quote Share this post Link to post Short link Share on other sites
Andrew_Dark 8 #232752 Posted November 22, 2014 Естественно это:) Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #232753 Posted November 22, 2014 (edited) Стоковый код. Будет выглядеть иначе, чем у меня. [Code] var FilesMemo: TNewMemo; procedure AddToMemo(); var AFile: String; begin AFile := ExpandConstant(CurrentFilename); if ExtractFileExt(AFile) = '' then FilesMemo.Lines.Add('CreateFolder: ' + RemoveBackslash(AFile)) else FilesMemo.Lines.Add('Extract: ' + AFile); end; procedure InitializeWizard(); begin FilesMemo := TNewMemo.Create(WizardForm); FilesMemo.SetBounds(ScaleX(0), ScaleY(80), ScaleX(418), ScaleY(120)); FilesMemo.WordWrap := False; FilesMemo.Parent := WizardForm.InstallingPage; FilesMemo.ScrollBars := ssVertical; FilesMemo.ReadOnly := True; FilesMemo.Clear; end; Edited November 22, 2014 by Kotyarko_O Quote Share this post Link to post Short link Share on other sites
Andrew_Dark 8 #232760 Posted November 22, 2014 Попробовал, поле пустое, текста 0 Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #232772 Posted November 22, 2014 (edited) Стоковый код. Будет выглядеть иначе, чем у меня. [Code] var FilesMemo: TNewMemo; procedure AddToMemo(); var AFile: String; begin AFile := ExpandConstant(CurrentFilename); if ExtractFileExt(AFile) = '' then FilesMemo.Lines.Add('CreateFolder: ' + RemoveBackslash(AFile)) else FilesMemo.Lines.Add('Extract: ' + AFile); end; procedure InitializeWizard(); begin FilesMemo := TNewMemo.Create(WizardForm); FilesMemo.SetBounds(ScaleX(0), ScaleY(80), ScaleX(418), ScaleY(120)); FilesMemo.WordWrap := False; FilesMemo.Parent := WizardForm.InstallingPage; FilesMemo.ScrollBars := ssVertical; FilesMemo.ReadOnly := True; FilesMemo.Clear; end; это хрень не рабочая,я прошу рабочий!! AtotIK скинь нормальный Edited November 22, 2014 by Ekspoint Quote Share this post Link to post Short link Share on other sites
Prost 1 #232773 Posted November 22, 2014 procedure ShowCompDescription(Sender: TObject; X, Y, Index: Integer; Area: TItemArea); всё равно ошибка Quote Share this post Link to post Short link Share on other sites
Andrew_Dark 8 #232774 Posted November 22, 2014 всё равно ошибка Внимание вопрос: какая у вас версия инно? Quote Share this post Link to post Short link Share on other sites
Prost 1 #232777 Posted November 22, 2014 (edited) Внимание вопрос: какая у вас версия инно? 5.1.0 procedure ShowCompDescription(Sender: TObject; X, Y, Index: Integer; Area: TItemArea); Теперь всё заработало, но картинки не показывает. В чём проблема? Могу скинуть скрипт в лч Edited November 22, 2014 by Prost Quote Share this post Link to post Short link Share on other sites
Andrew_Dark 8 #232780 Posted November 22, 2014 Скинь код в лс, гляну Кстати, напомните кто либо склеротику как в форме что открывается кнопкой скроллбар прописать:) Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #232781 Posted November 22, 2014 почему у меня звук лезет на нижний компонент тоже который не прописан? [Setup] RawDataResource=SndA:звуки модов\тихая.WAV |SndB:звуки модов\средняя.WAV |SndC:звуки модов\громкая.WAV |SndD:звуки модов\тихая 10 сек.WAV |SndE:звуки модов\громкая 10 сек.WAV [Code] #define A = (Defined UNICODE) ? "W" : "A" Type HINST = THandle; HMODULE = HINST; Pointer = Longint; HRSRC = THandle; HGLOBAL = THandle; Const SND_ASYNC = $0001; SND_NODEFAULT = $0002; SND_MEMORY = $0004; RT_RCDATA = 10; Function sndPlaySound(lpszSoundName: Pointer; uFlags: UINT): BOOL; external 'sndPlaySound{#A}@Winmm.dll stdcall'; Function LoadResource(hModule: HINST; hResInfo: HRSRC): HGLOBAL; external '[email protected] stdcall'; Function FindResource(hModule: HMODULE; lpName: String; lpType: Longint): HRSRC; external 'FindResource{#A}@kernel32.dll stdcall'; Function LockResource(hResData: HGLOBAL): Pointer; external '[email protected] stdcall'; Var pSoundMemory_A, pSoundMemory_B, pSoundMemory_C, pSoundMemory_D, pSoundMemory_E: Pointer; IndexLast: Integer; Function GetResourceSoundAddr(const ResourceName: String): Pointer; var hResourceSound: HRSRC; begin hResourceSound := FindResource(HInstance, ResourceName, RT_RCDATA); Result := LockResource(LoadResource(HInstance, hResourceSound)); end; Procedure ComponentsOnClickCheck(Sender: TObject); begin if IsComponentSelected('KMP\22\2\1') then begin sndPlaySound(pSoundMemory_A, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; //"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""// begin if IsComponentSelected('KMP\22\2\2') then begin sndPlaySound(pSoundMemory_B, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; end; //"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""// begin if IsComponentSelected('KMP\22\2\3') then begin sndPlaySound(pSoundMemory_C, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; end; //"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""// begin if IsComponentSelected('KMP\22\2\4') then begin sndPlaySound(pSoundMemory_D, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; end; //"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""// begin if IsComponentSelected('KMP\22\2\5') then begin sndPlaySound(pSoundMemory_E, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; end; //"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""// end; procedure InitializeWizard8(); begin IndexLast := -1; pSoundMemory_A := GetResourceSoundAddr('_IS_SNDA'); pSoundMemory_B := GetResourceSoundAddr('_IS_SNDB'); pSoundMemory_C := GetResourceSoundAddr('_IS_SNDC'); pSoundMemory_D := GetResourceSoundAddr('_IS_SNDD'); pSoundMemory_E := GetResourceSoundAddr('_IS_SNDE'); WizardForm.ComponentsList.OnClickCheck := @ComponentsOnClickCheck; end; Quote Share this post Link to post Short link Share on other sites
Prost 1 #232783 Posted November 22, 2014 (edited) Скинь код в лс, гляну Кстати, напомните кто либо склеротику как в форме что открывается кнопкой скроллбар прописать:) ты мне? Edited November 22, 2014 by Prost Quote Share this post Link to post Short link Share on other sites