Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
#define Name "Test"
[Setup]
SourceDir=.
OutputDir=Setup
AppName=Test
AppVerName=Test
DefaultDirName={pf}\Test
DefaultGroupName=Test
OutputBaseFilename=Setup
AllowNoIcons=true
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs;
[Icons]
Name: {group}\MyProg; Filename: {app}; WorkingDir: {app}
[CustomMessages]
russian.RestoreButton=Сброс
[Code]
var
BrowseForm: TSetupForm;
BrowseForm2: TSetupForm;
DirTreeView: TFolderTreeView;
DirFolderTreeView: TStartMenuFolderTreeView;
EditTreeView: TNewEdit;
EditFolderTreeView: TNewEdit;
DB_Button: TNewButton;
GB_Button: TNewButton;
OldEvent_NoIconsCheckClick: TNotifyEvent;
procedure DirTreeViewChange(Sender: TObject);
begin
if DirTreeView.Directory <> WizardForm.DirEdit.Text then
EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}' else
EditTreeView.Text := DirTreeView.Directory;
end;
procedure DirFolderTreeViewChange(Sender: TObject);
begin
if DirFolderTreeView.Directory <> WizardForm.GroupEdit.Text then
EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}' else
EditFolderTreeView.Text := DirFolderTreeView.Directory;
end;
procedure BrowseFormButtonsTreeViewOnClick(Sender: TObject);
begin
case TButton(Sender).Tag of
1: EditTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#SetupSetting("DefaultDirName")}'));
2: begin
DirTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}';
end;
3: if EditTreeView.Text <> WizardForm.DirEdit.Text then WizardForm.DirEdit.Text := EditTreeView.Text;
end;
end;
procedure BrowseFormButtonsFolderTreeViewOnClick(Sender: TObject);
begin
case TButton(Sender).Tag of
4: EditFolderTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#Name}'));
5: begin
DirFolderTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}';
end;
6: if EditFolderTreeView.Text <> WizardForm.GroupEdit.Text then WizardForm.GroupEdit.Text := EditFolderTreeView.Text;
end;
end;
procedure BrowseDirTreeViewClick(Sender: TObject);
begin
BrowseForm := CreateCustomForm();
with BrowseForm do
begin
Width := ScaleX(413);
Height := ScaleY(361);
Caption := SetupMessage(msgBrowseDialogTitle);
Position := poScreenCenter;
with TLabel.Create(nil) do
begin
SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16));
Caption := SetupMessage(msgBrowseDialogLabel);
Parent := BrowseForm;
Font.Size := 8;
end;
DirTreeView := TFolderTreeView.Create(nil)
with DirTreeView do
begin
SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225));
OnChange := @DirTreeViewChange;
Parent := BrowseForm;
end;
EditTreeView := TNewEdit.Create(nil);
with EditTreeView do
begin
SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21));
Text := DirTreeView.Directory;
Parent := BrowseForm;
Font.Color := clWindowText;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonCancel);
ModalResult := mrCancel;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm;
Caption := ExpandConstant('{cm:RestoreButton}');
Tag := 1;
OnClick := @BrowseFormButtonsTreeViewOnClick;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonNewFolder);
Tag := 2;
OnClick := @BrowseFormButtonsTreeViewOnClick;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonOK);
Tag := 3;
OnClick := @BrowseFormButtonsTreeViewOnClick;
ModalResult := mrOk;
end;
DirTreeView.ChangeDirectory(AddBackslash(WizardForm.DirEdit.Text), True);
ShowModal;
Free;
end;
end;
procedure BrowseDirFolderTreeViewClick(Sender: TObject);
begin
BrowseForm2 := CreateCustomForm();
with BrowseForm2 do
begin
Width := ScaleX(413);
Height := ScaleY(361);
Caption := SetupMessage(msgBrowseDialogTitle);
Position := poScreenCenter;
with TLabel.Create(nil) do
begin
SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16));
Caption := SetupMessage(msgBrowseDialogLabel);
Parent := BrowseForm2;
Font.Size := 8;
end;
DirFolderTreeView := TStartMenuFolderTreeView.Create(nil)
with DirFolderTreeView do
begin
SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225));
SetPaths(ExpandConstant('{userprograms}'),ExpandConstant('{commonprograms}'),ExpandConstant('{userstartup}'),ExpandConstant('{commonstartup}'));
OnChange := @DirFolderTreeViewChange;
Parent := BrowseForm2;
end;
EditFolderTreeView := TNewEdit.Create(nil);
with EditFolderTreeView do
begin
SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21));
Text := DirFolderTreeView.Directory;
Parent := BrowseForm2;
Font.Color := clWindowText;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23));
Parent := BrowseForm2;
Caption := SetupMessage(msgButtonCancel);
ModalResult := mrCancel;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm2;
Caption := ExpandConstant('{cm:RestoreButton}');
Tag := 4;
OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm2;
Caption := SetupMessage(msgButtonNewFolder);
Tag := 5;
OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm2;
Caption := SetupMessage(msgButtonOK);
Tag := 6;
OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
ModalResult := mrOk;
end;
DirFolderTreeView.ChangeDirectory(AddBackslash(WizardForm.GroupEdit.Text), True);
ShowModal;
Free;
end;
end;
procedure NoIconsCheckClick(Sender: TObject);
begin
OldEvent_NoIconsCheckClick(Sender);
GB_Button.Enabled := not WizardForm.NoIconsCheck.Checked;
end;
procedure InitializeWizard();
begin
OldEvent_NoIconsCheckClick := WizardForm.NoIconsCheck.OnClick;
WizardForm.NoIconsCheck.OnClick := @NoIconsCheckClick;
WizardForm.DirBrowseButton.Hide;
DB_Button := TNewButton.create(WizardForm);
with DB_Button do
begin
Parent := WizardForm.SelectDirPage;
SetBounds(WizardForm.DirBrowseButton.Left, WizardForm.DirBrowseButton.Top, WizardForm.DirBrowseButton.Width, WizardForm.DirBrowseButton.Height - ScaleY(1));
Caption := SetupMessage(msgButtonBrowse);
OnClick := @BrowseDirTreeViewClick;
end;
WizardForm.GroupBrowseButton.Hide;
GB_Button := TNewButton.create(WizardForm);
with GB_Button do
begin
Parent := WizardForm.SelectProgramGroupPage;
SetBounds(WizardForm.GroupBrowseButton.Left, WizardForm.GroupBrowseButton.Top, WizardForm.GroupBrowseButton.Width, WizardForm.GroupBrowseButton.Height - ScaleY(1));
Caption := SetupMessage(msgButtonBrowse);
OnClick := @BrowseDirFolderTreeViewClick;
end;
end;
uses
// форма со своими компонеттами treeView, поиском диска по VolumeName
Unit1 in 'Unit1.pas' {Form2};
function MyShowChangeDiskWindowEX(Text, DefaultPath, SearchFile, VolName:AnsiString):boolean;
begin
if (FileExists(DefaultPath+'\'+SearchFile) then begin result:=true; break; end;
Form2 := TForm2.Create(Application);
Form2.Show;
Form2.TextInf:=Text;
Form2.DeftPath:=DefaultPath;
Form2.SPath:=SearchFile;
Form2.Vollname:=VolName;
while Form2.Showing do begin
if (FileExists(Form2.NewPath+'\'+SearchFile)) then begin
// здесь необходимо передать переменку Form2.NewPath обратно в инсталятор
Form2.close;
result:=true;
break;
end;
Application.ProcessMessages;
end;
end;
exports MyShowChangeDiskWindowEX;