Procedure TTestEditorForm.SaveAsMenuClick(Sender: TObject); begin if SaveDialog1.Execute then

begin TQuestionResultForm(ActiveMDIChild).FileName:=SaveDialog1.FileName; SaveButtonClick(nil);

end; end;

Здесь я отображаю окно выбора имени файла. Если пользователь что-то выбрал, то сохраняю имя файла в свойстве FileName активного окна, и вызываю обработчик события кнопки «Сохранить», где происходит сохранение.

Теперь посмотри на обработчик события OnClick для кнопки «Открыть» проект:

procedure TTestEditorForm.OpenButtonClick(Sender: TObject);

var
fs:TFileStream;
i, Count:Integer;
Str:String[5];
NewQuest:PQuestion;

begin
//Показать окно открытия файла
if not OpenDialog1.Execute then exit;

//Открыть файл для чтения
fs:=TFileStream.Create(OpenDialog1.FileName, fmOpenRead);

//Перейти в начало файла и прочитать заголовок
fs.Seek(0,soFromBeginning);
fs.read(Str, SizeOf(Str));


 

//Если заголовок равен тексу "Тест", значит это "вопрос-

//варианты ответов".
if Str='Тест' then

begin
//Создать новое окно теста
QuestionResultForm:=TQuestionResultForm.Create(Owner);

//Сохранить имя открытого файла в объекте окна
QuestionResultForm.FileName:=OpenDialog1.Filename;

//Прочитать имя проекта fs.Read(QuestionResultForm.ProjectName, sizeof(QuestionResultForm.ProjectName));

try
//Прочитать количество вопросов
fs.Read(Count, sizeof(Count));


 

//Запустить цикл чтения вопросов
for i:=0 to Count-1 do

begin
//Создаю новую структуру в памяти для вопроса
NewQuest:=New(PQuestion);
//Читаю структуру
fs.Read(NewQuest^, sizeof(TQuestion));

//Добавляю структуру в контейнер
QuestionResultForm.QuestionList.Add(NewQuest);