Автор: Genri
Дата сообщения: 28.05.2008 16:09
AlexDJ666 -- используй свойство [more=RTFText]
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
[Files]
Source: ReadMe1.rtf; Flags: dontcopy
Source: ReadMe2.rtf; Flags: dontcopy
Source: ReadMe3.rtf; Flags: dontcopy
[_Code]
var
Page: TWizardPage;
ListBox: TNewCheckListBox;
Memo: TRichEditViewer;
CheckLabel: TLabel;
MouseY: integer;
procedure CheckOnClick (Sender: TObject);
begin
if MouseY < ListBox.Items.Count then
ListBox.Checked[MouseY]:= Not(ListBox.Checked[MouseY]);
end;
procedure CheckMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
MouseY:= Y/ScaleY(16);
if MouseY < ListBox.Items.Count then
Memo.RTFText:= TStrings(ListBox.ItemObject[MouseY]).Text;
end;
Procedure InitializeWizard();
begin
ExtractTemporaryFile('ReadMe1.rtf');
ExtractTemporaryFile('ReadMe2.rtf');
ExtractTemporaryFile('ReadMe3.rtf');
Page:=CreateCustomPage(3, 'Интерфейс', 'Выберите компоненты, которые вы хотите установить.')
ListBox:= TNewCheckListBox.Create(Page);
with ListBox do
begin
Left := 15
Top := 0
Width := 200
Height := 149
Parent := Page.Surface
AddCheckBox('aaa', 'ddd', 0, True, True, False, True, TStringList.Create);
AddCheckBox('bbb', 'eee', 0, True, True, False, True, TStringList.Create);
AddCheckBox('ccc', 'fff', 0, True, True, False, True, TStringList.Create);
TStrings(ItemObject[0]).LoadFromFile(ExpandConstant('{tmp}\ReadMe1.rtf'));
TStrings(ItemObject[1]).LoadFromFile(ExpandConstant('{tmp}\ReadMe2.rtf'));
TStrings(ItemObject[2]).LoadFromFile(ExpandConstant('{tmp}\ReadMe3.rtf'));
end;
Memo:= TRichEditViewer.Create(Page);
with Memo do
begin
Left := ListBox.Left + ListBox.Width + 8;
Top := ListBox.Top;
Width := ListBox.Width
Height := ListBox.Height
Color := clBtnFace
Enabled := False
BorderStyle := bsNone
Parent := Page.Surface
end;
CheckLabel:= TLabel.Create(Page);
with CheckLabel do
begin
Width :=ListBox.Width
Height :=ListBox.Height
Autosize :=False
Transparent :=True
OnMouseMove :=@CheckMouseMove
OnClick :=@CheckOnClick
Parent :=ListBox
end;
end; [/more]
antifire, SotM -- для работы с бинарными файлами можно использовать [more=TFileStream]
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
[Files]
Source: MyProg.exe; DestDir: {app}
[_Code]
procedure WriteToFile();
var
FS: TFileStream;
str: string;
i: integer;
begin
str:= '';
for i:= 0 to 10 do str:= str + IntToStr(Random(10)); // сгенерили рандомную строку
FS := TFileStream.Create(ExpandConstant('{app}\MyProg.exe'), fmOpenReadWrite); // открыли файл
try
FS.Seek(1572,soFromBeginning); // установили курсор по смещению 1572 от начала файла
FS.WriteBuffer(str, Length(str)); // записали рандомную строку в позицию курсора
finally
FS.Free; // освободили файл
end;
end;
procedure ReadFromFile();
var
FS: TFileStream;
str: string;
i: integer;
begin
str:= StringOfChar(' ', 10); // подготовили буфер для чтения длиной 10 байт
FS := TFileStream.Create(ExpandConstant('{app}\MyProg.exe'), fmOpenReadWrite); // открыли файл
try
FS.Seek(1572,soFromBeginning); // установили курсор по смещению 1572 от начала файла
FS.ReadBuffer(str, Length(str)); // считали в буфер 10 байт от позиции курсора
MsgBox(str, mbInformation, MB_OK); // вывели сообщение с тем, что считали
finally
FS.Free; // освободили файл
end;
end;
procedure DeinitializeSetup();
begin
ReadFromFile(); // прочитали строку из файла
WriteToFile(); // записали строку в файл
ReadFromFile(); // опять прочитали
end; [/more]