Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Delphi, MDIChild, сохранение

erutan revol Мастер (1216), закрыт 12 лет назад
Есть MDI-приложение. Каждая дочерняя форма - содержит редактор Memo. Меню, с пунктом сохранить, находится на главной форме. При попытке сохранить содержимое сохраняется текст из Memo последней созданной формы, а не текущей активной.
Думал-думал, как это сделать, так и не придумал.
Как проверить, какое из дочерних окон сейчас активно?
Пробовал так

procedure TForm2.N5Click(Sender: TObject);
var i:integer;
begin
savedialog1.execute;
if savedialog1.filename<>'' then
for i := 0 to form3.MDIChildCount - 1 do
begin
if Form3.ActiveMDIChild=form3.MDIChildren then
form3.Memo1.Lines.SavetoFile(savedialog1.filename);
end;

ничего не вышло.
Дополнен 12 лет назад
Может, и проще. Но курсовая будет по Delphi. Все равно надо разобраться.
Лучший ответ
Ю В Мыслитель (9453) 12 лет назад
Насколько я поняла, Form2 - это главная форма, а Form3 - это дочерняя, причем их может быть много.
Чтобы сохранить текущую, обращаемся к свойству ActiveMDIChild, а оно имеет тип - дочерняя форма, то есть в твоем случае, TForm3
(ActiveMDIChild as TForm3).Memo1.Lines.SaveToFile(SaveDialog1.FileName);
Чтобы закрыть текущую форму из главной -
(ActiveMDIChild as TForm3).Close;

И цикл там не нужен совсем
erutan revolМастер (1216) 12 лет назад
Отлично сработало, спасибо ^_^
Ю В Мыслитель (9453) На здоровье
Остальные ответы
Sensored Ученик (226) 12 лет назад
лично мне кажется что на С++ меньше будет у тя таких проблем, так что я те на С++ советую перейти
Сергей Профи (538) 12 лет назад
(MainForm.ActiveMDIChild as TMDIChild).memo.Lines.SaveToFile();

примерно так...
Похожие вопросы