SFile := OpenDialogl.FileName;
Оагрузка в окно документа файла SFile>
end;

Процедура SaveAs может иметь вид:

// задание имени файла по умолчанию SaveDialogl.FileName := SFile;
if SaveDialogl.Execute then begin // сохранение имени файла в SFile SFile := SaveDialogl.FileName;
<сохранение документа в файле с именем SFile>
end;

Процедура Save может иметь вид:

if (SFile = 'Неизвестный') then <вызов процедуры SaveAs>

else <сохранение документа в файле с именем SFile> Процедура New может иметь вид:

SFile := 'Неизвестный';
<очистка окна документа>

Если у вас приложение MDI, позволяющее пользователю работать сразу с несколькими дочерними формами, содержащими окна документов, то приведенная выше схема работы с файлами остается той же за одним исключением: в данном случае вместо одной переменной строки SFile надо хранить список строк с именами файлов, загруженных в окна документов различных дочерних форм. Это можно сделать, объявив переменную SFile типа списка строк TStringList и добавляя в список новую строку при открытии каждой новой дочерней формы. Но можно поступить проще, учитывая то, что в заголовках дочерних форм принято указывать имя загруженного в них файла документа. Поэтому заголовки форм (значения их свойств Caption) можно использовать для хранения имен файлов.

Приложение MDI можно создать так. Создаете главную форму, переносите на нее компоненты диалогов OpenDialog и SaveDialog и создаете меню или инструментальную панель, содержащую разделы создания новой дочерней формы, открытия и сохранения файлов. Подробнее как все это грамотно делается с помощью диспетчеризации действий рассмотрено в книге [1] и будет рассмотрено в книге [5]. В главной форме задаете значение свойства FormStyle равное fsMDIForm - родительская форма приложения MDI.

Включаете в проект новую форму (назовем ее FChild, а содержащий ее модуль - UDoc), размещаете на ней окно редактирования документа (для текстовых файлов - Memo или RichEdit) и задаете свойство формы FormStyle равным fsMDIChild - дочерняя форма приложения MDI. С помощью команды Project | Options на странице Forms окна опций проекта исключаете форму FChild из числа автоматически создаваемых (Auto-create forms) и переносите в число доступных (Available forms). Это надо сделать, поскольку дочерние формы будут создаваться программно при выборе пользователем команды New.

При закрытии пользователем дочернего окна оно не исчезает, а сворачивается в виде пиктограммы в углу главного окна. Обычно это неудобно. Чтобы устранить это, можно в обработчик события OnClose дочерней формы вставить оператор:

Action := caFree; это обеспечит уничтожение закрывающегося окна.

Сохраняете дочернюю форму в файле UDoc и из модуля главной формы делаете ссылку на модуль дочерней формы (команда File | Use Unit).

Теперь можно программировать работу с файлами в главной форме. Реализация команды New может иметь вид:

var NewF : TFChild; begin

NewF := TFChiia.Create(Application);
NewF.Caption := 'Документ ' + IntToStr(MDIChildCount) ;
NewF.Show;
end;

⇐ Предыдущая страница| |Следующая страница ⇒

Приемы программирования в Delphi на основе VCL



Новости за месяц

  • Сентябрь
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс