Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Для примера давай напишем программку, которая будет сохранять свои параметры при выходе и восстанавливать позицию и размер при запуске.
Я создал простейшую форму с одной только кнопкой «Закрыть».
Теперь я создал обработчик события OnShow, в котором я должен восстановить параметры программы, которые были после последнего закрытия проги. Чтобы не загромождать этот обработчик я просто написал вызов метода LoadProgParam. Этого метода пока не существует, но мы его скоро напишем.
procedure TForm1.FormShow(Sender: TObject); begin LoadProgParam; end;
Теперь я создал обработчик события OnClose. Здесь будут сохраняться параметры окна. Я опять не буду ничего загромождать и просто вызову метод SaveProgParam.
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin SaveProgParam; end;
Если ты сейчас попытаешься скомпилировать прогу, то получишь три ошибки. Компилятор Delphi проругается на то, что не может найти процедуры LoadProgParam и SaveProgParam. Давай напишем их. Для этого подымись в начало модуля и найди раздел описания закрытых процедур private. Опиши там эти две процедуры без всяких параметров:
private { Private declarations } procedure LoadProgParam; procedure SaveProgParam;
Теперь нажми сочетание клавиш Ctrl+Shift+C и Delphi создаст заготовки под эти процедуры:
procedure TForm1.LoadProgParam;
begin
end;
procedure TForm1.SaveProgParam;
begin
end;
Теперь напишем сами эти процедуры. Начнём с SaveProgParam:
procedure TForm1.SaveProgParam; var FIniFile: TRegIniFile;
begin FIniFile:= TRegIniFile.Create('Software'); // Инициализирую реестр
FIniFile.OpenKey('VR',true); // Открываю раздел FIniFile.OpenKey('VR-Online',true); // Открываю ещё один раздел
if WindowState=wsNormal then
begin
FIniFile.WriteInteger('Option', 'Width', Width);
FIniFile.WriteInteger('Option', 'Heigth', Height);
FIniFile.WriteInteger('Option', 'Left', Left);
FIniFile.WriteInteger('Option', 'Top', Top);
End;
FIniFile.WriteInteger('Option', 'WinState', Integer(WindowState));
FIniFile.Free; // Освобождаю реестр end;
После инициализации реестра и подготовки разделов я делаю проверку, в каком состоянии находится окно. Если WindowState равно wsNormal, то я сохраняю параметры окна. Если нет, то этого делать не надо. Если у тебя стоит разрешение экрана 800х600, по при максимизированном окне значение ширины окна будет 802, а высоты 602. Эти значения больше реального разрешения и если ты установишь их при загрузке, то изменить размеры окна мышкой будет очень трудно.
После этого я сохраняю состояние окна - WindowState. Так как оно имеет тип ТWindowState, то мне приходится приводить этот тип к Integer с помощью Integer(WindowState).
Процедура LoadProgParam работает таким же образом:
Дата публикования: 2014-11-04; Прочитано: 435 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!