Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.27;
Скачать: CL | DM;

Вниз

Понять не могу где ошибка   Найти похожие ветки 

 
Бук   (2003-01-16 14:06) [0]

Привет всем!
У меня вот какая проблемка. В MDI приложении мне необходимо проверить активно ли окно. Если активно и в RichEdit ничего нет, то загружает в активный RichEdit файл. Если же нет активных окон, то создаем оное и загружаем в него файл
Я пишу вот такой код:

procedure TElantra_frm.OpenFileACTNExecute(Sender: TObject);
begin
if OpenDlg.Execute then
begin
if Child_Window.Showing and (Child_Window.Editor.Lines.Text="") then
Child_Window.Editor.Lines.LoadFromFile(OpenDlg.FileName);
if not Child_Window.Showing then
begin
Child_Window:=TChild_Editor.Create(Self);
Child_Window.Editor.Lines.LoadFromFile(OpenDlg.FileName);
end;
end;
end;

Но при попытке загрузить код в несуществующие окно
(строки:

if not Child_Window.Showing then
begin
Child_Window:=TChild_Editor.Create(Self);
Child_Window.Editor.Lines.LoadFromFile(OpenDlg.FileName);
end;
) происходит ошибка. Понять не могу в чем дело. Может чего с кодом намудрил?


 
Chubais ©   (2003-01-16 14:19) [1]

>Понять не могу в чем дело
в том что Child_Window указывает не туда куда надо


 
Chubais ©   (2003-01-16 14:22) [2]

if not Child_Window.Showing тута ты еще не создал окно, а уже к нему обращаешься then
begin
Child_Window:=TChild_Editor.Create(Self);
Child_Window.Editor.Lines.LoadFromFile(OpenDlg.FileName);
end;


 
Skier ©   (2003-01-16 14:22) [3]

Вооружись лучше
TForm.MDIChildCount и TForm.ActiveMDIChild


 
Александр Спелицин ©   (2003-01-16 14:23) [4]

Надо так:
if Child_Window = nil then
begin
Child_Window:=TChild_Editor.Create(Self);
Child_Window.Editor.Lines.LoadFromFile(OpenDlg.FileName);
end;

а при закрытии окна:
Child_Window := nil ж


 
Бук   (2003-01-16 14:44) [5]

To: Александр Спелицин
не, не.. Я окно создаю в меню "New". Еще раз привожу код (немного модифицирован) с более
подробными комментариями:

procedure TElantra_frm.OpenFileACTNExecute(Sender: TObject);
begin
if OpenDlg.Execute then
begin
Тут я смотрю создано ли окно по выбору пункта меню "New". Если окно создано, но в RichEdit нет текста, то загружаем файл в текущее окно
if Child_Window.Showing and (Child_Window.Editor.Lines.Text="") then
Child_Window.Editor.Lines.LoadFromFile(OpenDlg.FileName);
Тут я смотрю создано ли окно по выбору пункта меню "New". Если окно создано, но в RichEdit есть текст, то создаем новое окно и загружаем текст сюда
if Child_Window.Showing and (Child_Window.Editor.Lines.Text<>"") then
begin
Child_Window:=TChild_Editor.Create(Self);
Child_Window.Editor.Lines.LoadFromFile(OpenDlg.FileName);
end;
Впринципе, это начало работы программы, когда ни одно из дочерних окон не открыто. Создаем новое окно, и загружаем в RichEdit файл
if not Child_Window.Showing then
begin
Child_Window:=TChild_Editor.Create(Self);
Child_Window.Editor.Lines.LoadFromFile(OpenDlg.FileName);
end;

end;
end;

Этот код более-менее работает. Отрабатываются два последних условия. Но при попытке загрузить файл вактивное окно с "пустым" RichEdit создается ноое окно и файл загружается туда.

Почему это условие не срабатывает не могу понять


 
Бук   (2003-01-16 15:17) [6]

Вопрос решен. Тема закрыта. Всем спасибо! :))



Страницы: 1 вся ветка

Текущий архив: 2003.01.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
3-86693
MorfeyCOOL
2003-01-09 11:51
2003.01.27
Картинка в Access 2000 (XP)


8-86985
daos
2002-10-09 13:20
2003.01.27
ПОМОГИТЕ ПОЖАЛУЙСТА!!! Экран >> видео.


1-86757
Rulezz
2003-01-17 16:27
2003.01.27
как проверить контрольную сумму файла???


1-86908
Chizh
2003-01-15 22:43
2003.01.27
Как в CheckListBox по нажатию кнопки выделить все Items ы?


14-87020
vopros
2003-01-08 09:27
2003.01.27
Павлик вернулся.