Ekspoint 2,122 #308787 Posted January 7, 2016 (edited) Помогите, не могу понять какого хрена на win xp не работает Edited January 7, 2016 by Dark_Knight_MiX Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #308788 Posted January 7, 2016 Помогите, не могу понять какого хрена на win xp не работает [Code]function WindowsXP: boolean;begin Result := (GetWindowsVersion shr 24) = 5;end;procedure CopyAdioFile(FromPlace, ToPlace: String);var ResultCode: Integer;begin if WindowsXP then begin Exec(ExpandConstant('xcopy.exe'), '/E /C /H /R /Y /F /I ' + FromPlace + '\*' + ' ' + ToPlace, ExpandConstant('{app}'), SW_SHOW, ewWaitUntilTerminated, ResultCode); end; if not WindowsXP then begin Exec(ExpandConstant('{cmd}'), '"/c for %a in (*) do mklink' + ' ' + '"' + ToPlace + '\%~nxa"' + ' ' + '"%~fa"', FromPlace, SW_SHOW, ewWaitUntilTerminated, ResultCode); end;end;procedure CopyAdioProcedure;begin if not DirExists(ExpandConstant('{app}\res_mods\{#Patch}\audio')) then begin CreateDir(ExpandConstant('{app}\res_mods')); CreateDir(ExpandConstant('{app}\res_mods\{#Patch}')); CreateDir(ExpandConstant('{app}\res_mods\{#Patch}\audio')); end; WizardForm.StatusLabel.Caption := 'Копирование audio...'; CopyAdioFile(ExpandConstant('{app}\res\audio'), ExpandConstant('{app}\res_mods\{#Patch}\audio'));end;procedure CurStepChanged(CurStep: TSetupStep);begin if WindowsXP then begin If CurStep=ssPreInstall then begin CopyAdioProcedure; end; end; if not WindowsXP then begin If CurStep=ssPostInstall then begin CopyAdioProcedure; end; end;end; Не используй PreInstall. Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #308789 Posted January 7, 2016 Не используй PreInstall. а как мне еще поставить перед установкой копирование Quote Share this post Link to post Short link Share on other sites
AtotIK 580 #308791 Posted January 7, 2016 Не используй symlink. Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #308805 Posted January 7, 2016 (edited) а как мне еще поставить перед установкой копированиеssInstall вполне подойдет. Неужели за все время, как ты работаешь с инно, не смог запомнить что и когда отрабатывает? Edited January 7, 2016 by Kotyarko_O Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #308806 Posted January 7, 2016 (edited) ssInstall вполне подойдет. Неужели за все время, как ты работаешь с инно, не смог запомнить что и когда отрабатывает? перепутал Edited January 7, 2016 by Dark_Knight_MiX Quote Share this post Link to post Short link Share on other sites
CiberGame 0 #308837 Posted January 7, 2016 как узнать какая версия винды стоит? что бы писать типо if WinXP then .... ты подумал что под новый год тебе просто так дадут готовый скрипт? Читай внимательней:"Скрипт с примером".Мне нужен лишь скрипт ,чтобы картинка напротив была , как у маракаси , например. Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #308839 Posted January 7, 2016 (edited) Мне нужен лишь скрипт ,чтобы картинка напротив была , как у маракаси , например. картинка и описание [Setup] AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application [CustomMessages] CompName1=Компонент 1 CompName2=Компонент 2 ComponentsInfo=Наведите курсор мыши на компонент, чтобы прочитать его описание. ComponentsImgInfo=Наведите курсор мыши на компонент, чтобы посмотреть его превью. CompDesc1=Описание первого компонента CompDesc2=Описание второго компонента [Files] Source: "compiler:WizModernImage.bmp"; DestName: "CompDescImg1.bmp"; Flags: dontcopy Source: "compiler:WizModernImage-IS.bmp"; DestName: "CompDescImg2.bmp"; Flags: dontcopy Source: "compiler:WizModernImage.bmp"; DestName: "MainPic.bmp"; Flags: dontcopy [Components] Name: comp1; Description: "{cm:CompName1}"; Name: comp2; Description: "{cm:CompName2}"; Name: comp3; Description: "{cm:CompName1}"; Name: comp4; Description: "{cm:CompName2}"; Name: comp5; Description: "{cm:CompName1}"; Name: comp6; Description: "{cm:CompName2}"; [code] type TComponentDesc = record Description: String; ImageName: String; Index: Integer; end; var CompDescs: array of TComponentDesc; CompDescPanel, CompDescImgPanel: TPanel; CompDescText: 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.Caption := CompDescs[CompIndex].Description; CompDescText.Enabled := True; end else begin CompDescImg.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MainPic.bmp')); CompDescText.Caption := CustomMessage('ComponentsInfo'); CompDescText.Enabled := False; end; LastIndex := Index; end; procedure CompListMouseLeave(Sender: TObject); begin CompDescImg.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MainPic.bmp')); CompDescText.Caption := CustomMessage('ComponentsInfo'); CompDescText.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; function GetComponentIndex(Name: String): Integer; var i: Integer; begin Result:= -1; for i:= 0 to WizardForm.ComponentsList.ItemCount-1 do begin if (WizardForm.ComponentsList.ItemCaption[i] = Name) then begin Result:= i + 1; Break; end; end; end; procedure InitializeWizard; begin ExtractTemporaryFile('MainPic.bmp'); 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; 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; Bitmap.LoadFromFile(ExpandConstant('{tmp}\MainPic.bmp')); 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 := TLabel.Create(WizardForm); with CompDescText 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(GetComponentIndex(CustomMessage('CompName1')), CustomMessage('CompDesc1'), 'CompDescImg1.bmp'); AddCompDescription(GetComponentIndex(CustomMessage('CompName2')), CustomMessage('CompDesc2'), 'CompDescImg2.bmp'); end; картинка [Setup] AppName=Моя программа AppVersion=1.5 DefaultDirName={pf}\Моя программа [CustomMessages] CompName1=Компонент 1 CompName2=Компонент 2 ComponentsImgInfo=Наведите курсор мыши на компонент, чтобы посмотреть его превью. CompDesc1=Описание первого компонента CompDesc2=Описание второго компонента [Files] Source: "compiler:WizModernImage.bmp"; DestName: "CompDescImg1.bmp"; Flags: dontcopy Source: "compiler:WizModernImage-IS.bmp"; DestName: "CompDescImg2.bmp"; Flags: dontcopy Source: "compiler:WizModernImage.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 Name: comp3; Description: "{cm:CompName1}"; Types: full Name: comp4; Description: "{cm:CompName2}"; Types: full Name: comp5; Description: "{cm:CompName1}"; Types: full Name: comp6; Description: "{cm:CompName2}"; Types: full Name: comp7; Description: "{cm:CompName1}"; Types: full Name: comp8; 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); CompDescImg.Show; end else begin CompDescImg.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MainPic.bmp')); end; LastIndex := Index; end; procedure CompListMouseLeave(Sender: TObject); begin LastIndex := -1; 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; function GetComponentIndex(Name: String): Integer; var i: Integer; begin Result:= -1; for i:= 0 to WizardForm.ComponentsList.ItemCount-1 do begin if (WizardForm.ComponentsList.ItemCaption[i] = Name) then begin Result:= i + 1; Break; end; end; end; procedure InitializeWizard(); begin ExtractTemporaryFile('MainPic.bmp'); WizardForm.SelectComponentsLabel.Hide; WizardForm.TypesCombo.Hide; WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(0), ScaleX(184), ScaleY(200)); 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; Bitmap.LoadFromFile(ExpandConstant('{tmp}\MainPic.bmp')); end; AddCompDescription(GetComponentIndex(CustomMessage('CompName1')), 'CompDescImg1.bmp'); //по названию компонента AddCompDescription(GetComponentIndex(CustomMessage('CompName2')), 'CompDescImg2.bmp'); //по названию компонента end; описание [Setup] AppName=Моя программа AppVersion=1.5 DefaultDirName={pf}\Моя программа [CustomMessages] CompName1=Компонент 1 CompName2=Компонент 2 CompName3=Компонент 3 CompName4=Компонент 4 CompName5=Компонент 5 CompName6=Компонент 6 ComponentsInfo=Наведите курсор мыши на компонент, чтобы прочитать его описание. CompDesc1=Описание первого компонента CompDesc2=Описание второго компонента CompDesc3=Описание третьего компонента CompDesc4=Описание четвертого компонента [Components] Name: comp1; Description: "{cm:CompName1}"; Name: comp2; Description: "{cm:CompName2}"; Name: comp3; Description: "{cm:CompName3}"; Name: comp4; Description: "{cm:CompName4}"; Name: comp5; Description: "{cm:CompName5}"; Name: comp6; Description: "{cm:CompName6}"; [code] type TComponentDesc = record Description: String; ImageName: String; Index: Integer; end; var CompDescs: array of TComponentDesc; CompDescPanel: TPanel; CompDescText: TLabel; CompIndex, LastIndex: Integer; 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 CompDescText.Caption := CompDescs[CompIndex].Description; CompDescText.Enabled := True; end else begin CompDescText.Caption := CustomMessage('ComponentsInfo'); CompDescText.Enabled := False; end; LastIndex := Index; end; procedure CompListMouseLeave(Sender: TObject); begin CompDescText.Caption := CustomMessage('ComponentsInfo'); CompDescText.Enabled := False; LastIndex := -1; end; procedure AddCompDescription(AIndex: Integer; ADescription: String); var i: Integer; begin i := GetArrayLength(CompDescs); SetArrayLength(CompDescs, i + 1); CompDescs[i].Description := ADescription; CompDescs[i].Index := AIndex - 1 end; function GetComponentIndex(Name: String): Integer; var i: Integer; begin Result:= -1; for i:= 0 to WizardForm.ComponentsList.ItemCount-1 do begin if (WizardForm.ComponentsList.ItemCaption[i] = Name) then begin Result:= i + 1; Break; end; end; 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; CompDescPanel := TPanel.Create(WizardForm); with CompDescPanel do begin Parent := WizardForm.SelectComponentsPage; SetBounds(ScaleX(192), ScaleY(125), ScaleX(225), ScaleY(80)); BevelInner := bvLowered; end; CompDescText := TLabel.Create(WizardForm); with CompDescText 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(GetComponentIndex(CustomMessage('CompName1')), CustomMessage('CompDesc1')); AddCompDescription(GetComponentIndex(CustomMessage('CompName2')), CustomMessage('CompDesc2')); AddCompDescription(GetComponentIndex(CustomMessage('CompName3')), CustomMessage('CompDesc3')); AddCompDescription(GetComponentIndex(CustomMessage('CompName4')), CustomMessage('CompDesc4')); end; как то так Edited January 7, 2016 by Dark_Knight_MiX 1 Quote Share this post Link to post Short link Share on other sites
CiberGame 0 #308876 Posted January 8, 2016 картинка и описание [Setup] AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application [CustomMessages] CompName1=Компонент 1 CompName2=Компонент 2 ComponentsInfo=Наведите курсор мыши на компонент, чтобы прочитать его описание. ComponentsImgInfo=Наведите курсор мыши на компонент, чтобы посмотреть его превью. CompDesc1=Описание первого компонента CompDesc2=Описание второго компонента [Files] Source: "compiler:WizModernImage.bmp"; DestName: "CompDescImg1.bmp"; Flags: dontcopy Source: "compiler:WizModernImage-IS.bmp"; DestName: "CompDescImg2.bmp"; Flags: dontcopy Source: "compiler:WizModernImage.bmp"; DestName: "MainPic.bmp"; Flags: dontcopy [Components] Name: comp1; Description: "{cm:CompName1}"; Name: comp2; Description: "{cm:CompName2}"; Name: comp3; Description: "{cm:CompName1}"; Name: comp4; Description: "{cm:CompName2}"; Name: comp5; Description: "{cm:CompName1}"; Name: comp6; Description: "{cm:CompName2}"; [code] type TComponentDesc = record Description: String; ImageName: String; Index: Integer; end; var CompDescs: array of TComponentDesc; CompDescPanel, CompDescImgPanel: TPanel; CompDescText: 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.Caption := CompDescs[CompIndex].Description; CompDescText.Enabled := True; end else begin CompDescImg.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MainPic.bmp')); CompDescText.Caption := CustomMessage('ComponentsInfo'); CompDescText.Enabled := False; end; LastIndex := Index; end; procedure CompListMouseLeave(Sender: TObject); begin CompDescImg.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MainPic.bmp')); CompDescText.Caption := CustomMessage('ComponentsInfo'); CompDescText.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; function GetComponentIndex(Name: String): Integer; var i: Integer; begin Result:= -1; for i:= 0 to WizardForm.ComponentsList.ItemCount-1 do begin if (WizardForm.ComponentsList.ItemCaption[i] = Name) then begin Result:= i + 1; Break; end; end; end; procedure InitializeWizard; begin ExtractTemporaryFile('MainPic.bmp'); 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; 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; Bitmap.LoadFromFile(ExpandConstant('{tmp}\MainPic.bmp')); 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 := TLabel.Create(WizardForm); with CompDescText 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(GetComponentIndex(CustomMessage('CompName1')), CustomMessage('CompDesc1'), 'CompDescImg1.bmp'); AddCompDescription(GetComponentIndex(CustomMessage('CompName2')), CustomMessage('CompDesc2'), 'CompDescImg2.bmp'); end; картинка [Setup] AppName=Моя программа AppVersion=1.5 DefaultDirName={pf}\Моя программа [CustomMessages] CompName1=Компонент 1 CompName2=Компонент 2 ComponentsImgInfo=Наведите курсор мыши на компонент, чтобы посмотреть его превью. CompDesc1=Описание первого компонента CompDesc2=Описание второго компонента [Files] Source: "compiler:WizModernImage.bmp"; DestName: "CompDescImg1.bmp"; Flags: dontcopy Source: "compiler:WizModernImage-IS.bmp"; DestName: "CompDescImg2.bmp"; Flags: dontcopy Source: "compiler:WizModernImage.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 Name: comp3; Description: "{cm:CompName1}"; Types: full Name: comp4; Description: "{cm:CompName2}"; Types: full Name: comp5; Description: "{cm:CompName1}"; Types: full Name: comp6; Description: "{cm:CompName2}"; Types: full Name: comp7; Description: "{cm:CompName1}"; Types: full Name: comp8; 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); CompDescImg.Show; end else begin CompDescImg.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MainPic.bmp')); end; LastIndex := Index; end; procedure CompListMouseLeave(Sender: TObject); begin LastIndex := -1; 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; function GetComponentIndex(Name: String): Integer; var i: Integer; begin Result:= -1; for i:= 0 to WizardForm.ComponentsList.ItemCount-1 do begin if (WizardForm.ComponentsList.ItemCaption[i] = Name) then begin Result:= i + 1; Break; end; end; end; procedure InitializeWizard(); begin ExtractTemporaryFile('MainPic.bmp'); WizardForm.SelectComponentsLabel.Hide; WizardForm.TypesCombo.Hide; WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(0), ScaleX(184), ScaleY(200)); 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; Bitmap.LoadFromFile(ExpandConstant('{tmp}\MainPic.bmp')); end; AddCompDescription(GetComponentIndex(CustomMessage('CompName1')), 'CompDescImg1.bmp'); //по названию компонента AddCompDescription(GetComponentIndex(CustomMessage('CompName2')), 'CompDescImg2.bmp'); //по названию компонента end; описание [Setup] AppName=Моя программа AppVersion=1.5 DefaultDirName={pf}\Моя программа [CustomMessages] CompName1=Компонент 1 CompName2=Компонент 2 CompName3=Компонент 3 CompName4=Компонент 4 CompName5=Компонент 5 CompName6=Компонент 6 ComponentsInfo=Наведите курсор мыши на компонент, чтобы прочитать его описание. CompDesc1=Описание первого компонента CompDesc2=Описание второго компонента CompDesc3=Описание третьего компонента CompDesc4=Описание четвертого компонента [Components] Name: comp1; Description: "{cm:CompName1}"; Name: comp2; Description: "{cm:CompName2}"; Name: comp3; Description: "{cm:CompName3}"; Name: comp4; Description: "{cm:CompName4}"; Name: comp5; Description: "{cm:CompName5}"; Name: comp6; Description: "{cm:CompName6}"; [code] type TComponentDesc = record Description: String; ImageName: String; Index: Integer; end; var CompDescs: array of TComponentDesc; CompDescPanel: TPanel; CompDescText: TLabel; CompIndex, LastIndex: Integer; 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 CompDescText.Caption := CompDescs[CompIndex].Description; CompDescText.Enabled := True; end else begin CompDescText.Caption := CustomMessage('ComponentsInfo'); CompDescText.Enabled := False; end; LastIndex := Index; end; procedure CompListMouseLeave(Sender: TObject); begin CompDescText.Caption := CustomMessage('ComponentsInfo'); CompDescText.Enabled := False; LastIndex := -1; end; procedure AddCompDescription(AIndex: Integer; ADescription: String); var i: Integer; begin i := GetArrayLength(CompDescs); SetArrayLength(CompDescs, i + 1); CompDescs[i].Description := ADescription; CompDescs[i].Index := AIndex - 1 end; function GetComponentIndex(Name: String): Integer; var i: Integer; begin Result:= -1; for i:= 0 to WizardForm.ComponentsList.ItemCount-1 do begin if (WizardForm.ComponentsList.ItemCaption[i] = Name) then begin Result:= i + 1; Break; end; end; 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; CompDescPanel := TPanel.Create(WizardForm); with CompDescPanel do begin Parent := WizardForm.SelectComponentsPage; SetBounds(ScaleX(192), ScaleY(125), ScaleX(225), ScaleY(80)); BevelInner := bvLowered; end; CompDescText := TLabel.Create(WizardForm); with CompDescText 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(GetComponentIndex(CustomMessage('CompName1')), CustomMessage('CompDesc1')); AddCompDescription(GetComponentIndex(CustomMessage('CompName2')), CustomMessage('CompDesc2')); AddCompDescription(GetComponentIndex(CustomMessage('CompName3')), CustomMessage('CompDesc3')); AddCompDescription(GetComponentIndex(CustomMessage('CompName4')), CustomMessage('CompDesc4')); end; как то так Спасибо большое! Quote Share this post Link to post Short link Share on other sites
CiberGame 0 #309160 Posted January 10, 2016 (edited) А как изменить дефолтную картинку на свою Уже разобрался)) Пойдет? Edited January 10, 2016 by CiberGame Quote Share this post Link to post Short link Share on other sites
AtotIK 580 #309204 Posted January 10, 2016 Нахер музыка в инсталляторе? Quote Share this post Link to post Short link Share on other sites
CiberGame 0 #309212 Posted January 10, 2016 Нахер музыка в инсталляторе? Думаешь стоит убрать? Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #309215 Posted January 10, 2016 Думаешь стоит убрать? Кому она там нужна?Вот представь, что ты пользователь, скачавший какую-то программу. И при её открытии начнёт играть музыка, что ты сделаешь? - Правильно, выключишь. Как и 95% остальных пользователей. Quote Share this post Link to post Short link Share on other sites
CiberGame 0 #309216 Posted January 10, 2016 Кому она там нужна? Вот представь, что ты пользователь, скачавший какую-то программу. И при её открытии начнёт играть музыка, что ты сделаешь? - Правильно, выключишь. Как и 95% остальных пользователей. Согласен Quote Share this post Link to post Short link Share on other sites
asterix93 9 #309227 Posted January 10, 2016 (edited) Privet vsem pamaghite pajalusta dabaviti iseio nescalicao failov ea zdelal no ne paluceaitsa sspasiba za ranie [Setup] AppName=Sound AppVerName=1.0 DefaultDirName={pf}\Sound OutputDir=Output RawDataResource=SndA:bugreporter_succeeded.wav |SndC:buttonclickreleaseo.WAV |SndB:Button.wav [Components] Name: "main"; Description: "Main Files"; Name: "main\a"; Description: "A Files"; Flags: exclusive disablenouninstallwarning; Name: "main\b"; Description: "B Files"; Flags: exclusive disablenouninstallwarning; Name: "main\c"; Description: "C Files"; Flags: exclusive disablenouninstallwarning; //Name: "main\d"; Description: "B Files"; Flags: exclusive disablenouninstallwarning; //Name: "main\e"; Description: "A Files"; Flags: exclusive disablenouninstallwarning; //Name: "main\f"; Description: "B Files"; Flags: exclusive disablenouninstallwarning; [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: 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('main\a') then begin sndPlaySound(pSoundMemory_A, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\b') then begin sndPlaySound(pSoundMemory_B, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\c') then begin sndPlaySound(pSoundMemory_C, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; end; procedure InitializeWizard(); begin IndexLast := -1; pSoundMemory_A := GetResourceSoundAddr('_IS_SNDA'); pSoundMemory_B := GetResourceSoundAddr('_IS_SNDB'); pSoundMemory_C := GetResourceSoundAddr('_IS_SNDB'); WizardForm.ComponentsList.OnClickCheck := @ComponentsOnClickCheck; end; Edited January 10, 2016 by asterix93 Quote Share this post Link to post Short link Share on other sites
Xotabych 337 #309234 Posted January 10, 2016 Пробуй [Setup] AppName=Sound AppVerName=1.0 DefaultDirName={pf}\Sound OutputDir=Output RawDataResource=SndA:A.wav |SndB:B.WAV |SndC:C.wav |SndD:D.wav |SndE:E.wav |SndF:F.WAV | [Components] Name: "main"; Description: "Main Files"; Name: "main\A"; Description: "A Files"; Flags: exclusive disablenouninstallwarning; Name: "main\B"; Description: "B Files"; Flags: exclusive disablenouninstallwarning; Name: "main\C"; Description: "C Files"; Flags: exclusive disablenouninstallwarning; Name: "main\D"; Description: "D Files"; Flags: exclusive disablenouninstallwarning; Name: "main\E"; Description: "E Files"; Flags: exclusive disablenouninstallwarning; Name: "main\F"; Description: "F Files"; Flags: exclusive disablenouninstallwarning; [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, pSoundMemory_F: 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('main\A') then begin sndPlaySound(pSoundMemory_A, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\B') then begin sndPlaySound(pSoundMemory_B, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\C') then begin sndPlaySound(pSoundMemory_C, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\D') then begin sndPlaySound(pSoundMemory_D, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\E') then begin sndPlaySound(pSoundMemory_E, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\F') then begin sndPlaySound(pSoundMemory_F, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; end; procedure InitializeWizard(); 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'); pSoundMemory_F := GetResourceSoundAddr('_IS_SNDF'); WizardForm.ComponentsList.OnClickCheck := @ComponentsOnClickCheck; end; 1 Quote Share this post Link to post Short link Share on other sites
asterix93 9 #309237 Posted January 10, 2016 (edited) Пробуй [Setup] AppName=Sound AppVerName=1.0 DefaultDirName={pf}\Sound OutputDir=Output RawDataResource=SndA:A.wav |SndB:B.WAV |SndC:C.wav |SndD:D.wav |SndE:E.wav |SndF:F.WAV | [Components] Name: "main"; Description: "Main Files"; Name: "main\A"; Description: "A Files"; Flags: exclusive disablenouninstallwarning; Name: "main\B"; Description: "B Files"; Flags: exclusive disablenouninstallwarning; Name: "main\C"; Description: "C Files"; Flags: exclusive disablenouninstallwarning; Name: "main\D"; Description: "D Files"; Flags: exclusive disablenouninstallwarning; Name: "main\E"; Description: "E Files"; Flags: exclusive disablenouninstallwarning; Name: "main\F"; Description: "F Files"; Flags: exclusive disablenouninstallwarning; [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, pSoundMemory_F: 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('main\A') then begin sndPlaySound(pSoundMemory_A, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\B') then begin sndPlaySound(pSoundMemory_B, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\C') then begin sndPlaySound(pSoundMemory_C, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\D') then begin sndPlaySound(pSoundMemory_D, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\E') then begin sndPlaySound(pSoundMemory_E, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\F') then begin sndPlaySound(pSoundMemory_F, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; end; procedure InitializeWizard(); 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'); pSoundMemory_F := GetResourceSoundAddr('_IS_SNDF'); WizardForm.ComponentsList.OnClickCheck := @ComponentsOnClickCheck; end; Agromnaea spasiba palucilas nashol u menea asibca no esti drugaea prableama cagda delaiu vot tac slisna oba [Setup] AppName=Sound AppVerName=1.0 DefaultDirName={pf}\Sound OutputDir=Output RawDataResource=SndA:bugreporter_succeeded.wav |SndB:buttonclickreleaseo.WAV |SndC:Button.wav |SndD:leave.wav |SndE:ButtonOnMouse.wav |SndF:WindowsLogoffSound.wav [Components] Name: "main"; Description: "Main Files"; Name: "main\a"; Description: "A Files"; Flags: exclusive disablenouninstallwarning; Name: "main\b"; Description: "B Files"; Flags: exclusive disablenouninstallwarning; Name: "main\c"; Description: "C Files"; Flags: exclusive disablenouninstallwarning; Name: "main\d"; Description: "D Files"; Flags: exclusive disablenouninstallwarning; Name: "main\e"; Description: "E Files"; Flags: exclusive disablenouninstallwarning; Name: "f"; Description: "F Files"; [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,pSoundMemory_F: 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('main\a') then begin sndPlaySound(pSoundMemory_A, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\b') then begin sndPlaySound(pSoundMemory_B, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\c') then begin sndPlaySound(pSoundMemory_C, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\d') then begin sndPlaySound(pSoundMemory_D, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\e') then begin sndPlaySound(pSoundMemory_E, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('f') then begin sndPlaySound(pSoundMemory_F, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; end; procedure InitializeWizard(); 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'); pSoundMemory_F := GetResourceSoundAddr('_IS_SNDF'); WizardForm.ComponentsList.OnClickCheck := @ComponentsOnClickCheck; end; Sound test.zip Edited January 10, 2016 by asterix93 Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #309239 Posted January 10, 2016 @asterix93, http://krinkels.org/threads/ozuchivanie-komponentov.2429/page-2#post-23989 1 Quote Share this post Link to post Short link Share on other sites
asterix93 9 #309269 Posted January 11, 2016 @asterix93, http://krinkels.org/threads/ozuchivanie-komponentov.2429/page-2#post-23989 Spasiba Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #309323 Posted January 11, 2016 Пробуй [Setup] AppName=Sound AppVerName=1.0 DefaultDirName={pf}\Sound OutputDir=Output RawDataResource=SndA:A.wav |SndB:B.WAV |SndC:C.wav |SndD:D.wav |SndE:E.wav |SndF:F.WAV | [Components] Name: "main"; Description: "Main Files"; Name: "main\A"; Description: "A Files"; Flags: exclusive disablenouninstallwarning; Name: "main\B"; Description: "B Files"; Flags: exclusive disablenouninstallwarning; Name: "main\C"; Description: "C Files"; Flags: exclusive disablenouninstallwarning; Name: "main\D"; Description: "D Files"; Flags: exclusive disablenouninstallwarning; Name: "main\E"; Description: "E Files"; Flags: exclusive disablenouninstallwarning; Name: "main\F"; Description: "F Files"; Flags: exclusive disablenouninstallwarning; [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, pSoundMemory_F: 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('main\A') then begin sndPlaySound(pSoundMemory_A, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\B') then begin sndPlaySound(pSoundMemory_B, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\C') then begin sndPlaySound(pSoundMemory_C, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\D') then begin sndPlaySound(pSoundMemory_D, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\E') then begin sndPlaySound(pSoundMemory_E, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; if IsComponentSelected('main\F') then begin sndPlaySound(pSoundMemory_F, SND_MEMORY or SND_NODEFAULT or SND_ASYNC); end; end; procedure InitializeWizard(); 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'); pSoundMemory_F := GetResourceSoundAddr('_IS_SNDF'); WizardForm.ComponentsList.OnClickCheck := @ComponentsOnClickCheck; end; есть же лучше http://krinkels.org/threads/ozuchivanie-komponentov.2429/page-2#post-23989 1 Quote Share this post Link to post Short link Share on other sites