Форум: "Потрепаться";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
ВнизКак программно определить, создана ли дочерняя форма ? Найти похожие ветки
← →
IronHawk (2002-02-27 16:22) [0]Subj !
← →
MBo (2002-02-27 16:32) [1]проверить на nil
← →
IronHawk (2002-02-27 16:46) [2]Тоесть :
if MDIChild1.create <> nil then MessageDlg("CREAT",mtInformation,mbOKCancel,0);
else MessageDlg("NOT CREAT",mtInformation,mbOKCancel,0);
Так что-ли ???
← →
Кулюкин Олег (2002-02-27 16:58) [3]Если все дочерние формы одного типа, то RTFM MDIChildCount.
Если разных типов, то RTFM MDIChildCount, MDIChildren.
Либо проверить на nil (с) MBo
Предыдущие шесть программ были SDI? :)
← →
Digitman (2002-02-27 16:59) [4]Результат работы конструктора экземпляра класса, если в процессе его работы не возникла исключительная ситуация, никогда не может быть равен nil. Это - всегда ссылка на область памяти, распределенная менеджером памяти под хранение полей созданного экземпляра объекта
← →
IronHawk (2002-02-27 17:17) [5]>>> Кулюкин Олег
Уже ближе к телу !
> Либо проверить на nil (с) MBo
дает access violation on adress ????????
>Предыдущие шесть программ были SDI? :)
не все ! :-))) !
Digitman ©
А как тогда ?
← →
Виктор Щербаков (2002-02-27 17:27) [6]Ну это уже на коммедию похоже...
← →
Кулюкин Олег (2002-02-27 17:32) [7]2 Виктор Щербаков
Точнее "и эта ветка становится похожей на комедию"
← →
Val (2002-02-27 17:34) [8]и ее похоже, тоже, перенесут..
← →
Digitman (2002-02-27 17:38) [9]см. Digitman © (27.02.02 16:59)
еще раз : если при вызове конструктора экземпляра класса не возникло ни одного исключения, то это - гарантия того, что экземпляр класса создан.
← →
IronHawk (2002-02-27 17:48) [10]2Digitman ©
а теперь тоже самое и несловами !
← →
Зачиняев С.В. (2002-02-27 17:52) [11]2 IronHawk
опять "дайте код"?
Может все-таки заказать программу целиком?
← →
Digitman (2002-02-27 18:01) [12]>IronHawk
ты вопрос словами задал, не так ли ?
я и ответил тебе - словами. Я твой вопрос понял ровно так, как он был задан, а вот что тебе непонятно в моем ответе ?
← →
IronHawk (2002-02-27 18:06) [13]>>> Digitman ©
Перефразирую:
Какой процедурой (функцией) определить, создана ли дочерняя форма ?
Так ?
>>> panov ©
А можно не загонять ветку в "Потрепаться" (благодаря: Зачиняев С.В., Виктор Щербаков ©), а такого рода "лирические отступления" удалять ???
← →
Digitman (2002-02-27 18:22) [14]>IronHawk
if MDIChild1.create <> nil then MessageDlg("CREAT",mtInformation,mbOKCancel,0);
else MessageDlg("NOT CREAT",mtInformation,mbOKCancel,0);
Еще раз повторяю :
если в результате выполнения ВОТ ЭТОГО
MDIChild1.create
исключение не возникло, то - 100%-ная гарантия того, что ДОЧЕРНЯЯ ФОРМА СОЗДАНА !
← →
Юрий Зотов (2002-02-27 18:30) [15]> Какой процедурой (функцией) определить, создана ли дочерняя форма?
Есть такая функция, Assigned называется. См. справку.
А вот еще один вариант, который железно проверяет, была ли создана Form2:
try
Form2.Free;
ShowMessage("Форма была создана.")
except
ShowMessage("Форма не была создана.")
end;
А если серьезно, то почему бы не перечитать предыдущие ответы и не подумать над ними?
← →
IronHawk (2002-02-27 18:34) [16]>>> Digitman ©
В том то и дело, что возникает только - это последнее исключение которое делает прога !
Как это обойти ?
>>> Юрий Зотов ©
.... Free - это весело ну,
← →
IronHawk (2002-02-27 18:36) [17]>>> Digitman ©
В том то и дело, что возникает только - это последнее исключение которое делает прога !
Как это обойти ?
>>> Юрий Зотов ©
.... Free - это весело ну, >А если серьезно, то почему бы не перечитать предыдущие ответы и не подумать над ними?
Я это и сделал ... чёт день у меня сёдня тяжелый ...
Кулюкин Олег вначале дал неплохой ответ, вот только он у меня непрокатывает ! :-(((
← →
Digitman (2002-02-27 18:38) [18]>>IronHawk
>>"последнее исключение которое делает прога !"
я , видимо, туп как сибирский валенок, но - Я НИ ЧЕРТА НЕ ПОНЯЛ ИЗ СКАЗАННОГО ТОБОЙ !
← →
IronHawk (2002-02-27 18:53) [19]
> Digitman © (27.02.02 18:38)
> >>IronHawk
> >>"последнее исключение которое делает прога !"
далее идёт:
Erorr
В программе произошла ошибка ?????
в модуле <нет данных> ??????
если ошибка будет повторяться обратитесь к разработчику !
А мне от этого нелегче !
На что надо заменить :
> if MDIChild1.create <> nil then MessageDlg("CREAT",mtInformation,mbOKCancel,0);
> else MessageDlg("NOT CREAT",mtInformation,mbOKCancel,0);
ЧТО Б ЭТОГО НЕ_БЫ_ЛО ?
← →
Shaman_Naydak (2002-02-27 19:08) [20]Ладно народ, таперича моя очередь пробовать.
Конструкция
TMDIChild.Create(Application)
железно вернет объект, если, конечно же, при его в создании не возникло исключение.
Если же оно возникло то проверка ничего не даст, так как не отработает. Можешь отловить его в обработчике
try
TMDIChild.Create(Application)
MessageDlg("CREAT",mtInformation,mbOKCancel,0);
except
MessageDlg("NOT CREAT",mtInformation,mbOKCancel,0);
end;
СМЫСЛА Я В ТАКОМ ОБРАБОТЧИКЕ ПРАВДА НЕ ВИЖУ
Кстати, почему у тебя Create вызывается для переменной, а не для типа.. Это описка или непонимание того, что делаешь?
← →
Val (2002-02-27 19:13) [21]>Shaman_Naydak © (27.02.02 19:08)
Это описка или непонимание того, что делаешь?
Ветку видел же? :)
← →
Anatoly Podgoretsky (2002-02-27 21:08) [22]IronHawk © (27.02.02 18:53)
Конечно полегче, теперь знаешь к кому обращаться, а ты обращаешься не по адресу :-)
← →
Digitman (2002-02-28 09:09) [23]>IronHawk
Итак, <Shaman_Naydak>, вероятней всего, ближе всех к истине.
Исключение с сообщением типа "в модуле ... <нет данных>.." возникает, как правило, именно ситуации, когда производится попытка вызова некоего существующего метода несуществующего класса/объекта (если при этом не возникает явных условий для исключения AV). В твоем случае это - переменная объектного типа MDIChild1, ссылающаяся , видимо, в никуда (скорее всего - nil). И ты пытаешься вызвать некий метод этого несуществующего объекта.
← →
Кулюкин Олег (2002-02-28 09:42) [24]2 IronHawk © (27.02.02 18:36)
> Кулюкин Олег вначале дал неплохой ответ, вот только он у меня непрокатывает ! :-(((
А почему?
Если я правильно понял вопрос, нужно определить создана ли дочерняя форма определенного типа в MDI приложении.
Для этого читаем хелп по MDIChildCount и MDIChildren.
Организуем цикл в котором перебираем все дочерние формы (если надо, то читаем хелп по циклам :) и проверяем нет ли среди них формы нужного типа (читаем хелп по оператору IS).
Если есть - делаем вывод что создана, если нет - делаем вывод противоположный первому.
Код не дам (копированием хелпа не занимаюсь)
PS. Как _программно_ определить, создана ли дочерняя форма
программно? А еще можно аппаратно? :)))
← →
IronHawk (2002-02-28 10:34) [25]>>> Shaman_Naydak ©
Cпасибо !
> Digitman © (28.02.02 09:09)
> >IronHawk
> Итак, <Shaman_Naydak>, вероятней всего, ближе всех к истине.
ИМЕННО !
> Кулюкин Олег
> (копированием хелпа не занимаюсь)
Я это понял, в хелпе ориентируюсь нехуже других, и ссылки типа "Example" вижу !
Спасибки я это видал !
> PS. Как _программно_ определить, создана ли дочерняя форма
>
> программно? А еще можно аппаратно? :)))
Нет ! Можно словестно ! :-))
← →
Digitman (2002-02-28 12:40) [26]>IronHawk
Я вот на сей момент понял одно : треп ради трепа для тебя самоцель. Иначе - как понять, что ты до сих пор не удосужился пояснить, что есть в твоей 7-й программе идентификатор MDIChild1, не привел ни его декларации ни пояснения того, что ты делаешь в строчке MDIChild1.Create.
А еще претендуешь на "тупой код"....
← →
Andrey (2002-02-28 13:11) [27]Мда.
Видно МимоПолзающий переквалифицировался в ЖелезноЛетающего.
> Господа Мастера (Digitman,MBo,Кулюкин Олег,Юрий Зотов,Shaman_Naydak,...)
Извините конечно, но мне кажется, что просто безсмысленно вступать в дискусию и отвечать на вопросы, тоесть тратить свое время, на подобных э... представителей Интернет-сообщества.
← →
IronHawk (2002-02-28 13:25) [28]>>> Digitman ©
Смотрите - IronHawk © (27.02.02 16:46) !
> Andrey ©
Спасибо, я вкурсе !
> Господа Мастера (Digitman,MBo,Кулюкин Олег,Юрий Зотов,Shaman_Naydak,...)
Когда мы перейдём непосредственно к проблемме ???
← →
Digitman (2002-02-28 14:00) [29]Если кто-либо из уважаемых коллег найдет в коде IronHawk © (27.02.02 16:46) хоть что-либо, напоминающее ДЕКЛАРАЦИЮ, клянусь - уйду в монастырь !)))))))))))))
>IronHawk
Давай уже закончим, а ? Ну к чему эта клоунада ?
Бери любой букварь по Паскалю и штудируй его от корки до корки много-много раз. Или - вернись к депутатским обязанностям)
Смею утверждать, что у тебя, сударь, нет даже ЭЛЕМЕНТАРНЫХ знаний Паскаля !
О каком ОСМЫСЛЕННОМ программировании в среде Delphi ВООБЩЕ может идти речь, если ты даже не представляешь себе, ЧТО ТАКОЕ "ДЕКЛАРАЦИЯ ИДЕНТИФИКАТОРА" ! Я от тебя уже который раз в этой ветке прошу : приведи фрагмент текста, где идентификатор MDIChild1 декларирован ! А ты продолжаешь нести словесный понос ...
← →
Кулюкин Олег (2002-02-28 14:09) [30]2 IronHawk © (28.02.02 13:25)
> Когда мы перейдём непосредственно к проблемме ???
Проблемму уже прошли.
На вопрос ответили (три варианта, минимум).
Что еще нужно?
Дать код?
← →
IronHawk (2002-02-28 14:36) [31]>>> Кулюкин Олег
> Что еще нужно?
> Дать код?
Об остальных я всё понял, и всё что надо получил - почти !
А От Вас "уважаемый" ДА ХОЧУ КОД !
Что ВЫ ПоНЯЛИ "уважаемый" О ЧЁМ ТУТ РЕЧЬ ИДЁТ !
← →
MBo (2002-02-28 15:16) [32]procedure TMainForm1.Button1Click(Sender: TObject);
begin
try
childform2:=tchildform2.create(application);
except
caption:="Creation Error"
end;
end;
procedure TMainForm1.Button2Click(Sender: TObject);
begin
if childform2=nil then begin caption:="It has not been created yet";exit;end;
if not (childform2 is tchildform2) then begin caption:="It is wild pointer!!!";exit;end;
caption:="OK, it exists!"
end;
← →
Andrey (2002-02-28 15:26) [33]>MBo
Ну у вас и подчерк в Button2Click. :)
← →
IronHawk (2002-02-28 16:08) [34]>>> MBo ©
СПАСИБО !
> ALL !
Вот это настоящий Мастер !
← →
Кулюкин Олег (2002-02-28 16:18) [35]До конца программы осталось 25689 вопросов. :)
← →
Pete (2002-02-28 16:23) [36]Кулюкин Олег ©
>До конца программы осталось 25689 вопросов. :)
:)))))))))))))))))))))))))))))))))))
← →
MBo (2002-02-28 16:24) [37]Не юродствуй.
Разве есть в этом нелепом коде что-то, чего нет в хелпе и до чего нельзя самому додуматься?
и про exception уже говорили,и про создание экземпляра
VarSomeClass:=<>TSomeClass<>.Create(...)
← →
IronHawk (2002-02-28 16:55) [38]>>> MBo ©
Их просто хлебом некорми, дай только поиздеваться (им титул пылью мысли заслонил)!
← →
Andrey (2002-02-28 17:15) [39]>MBo
Если спросили значит
или нет в help-е
или нельзя самому додуматься.
В help-е есть сам видел. Ну и кто теперь слабое звено. :)
← →
IronHawk (2002-02-28 18:36) [40]ХАРЕ УЖЕ ТУТ МЯТЬСЯ !
Все кто имеет деловые предложения прошу в :
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1014910358&n=0
Страницы: 1 2 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.008 c