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

Вниз

Как программно определить, создана ли дочерняя форма ?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.01 c
6-32912
Димка-1200
2002-01-28 04:43
2002.04.11
Плз, помогите! Как работать с HTTPGet через прокси ?


1-32780
fgh
2002-03-31 16:45
2002.04.11
Компоненты для работы с архивами


3-32637
AndrewK
2002-03-19 12:54
2002.04.11
Работа с ADO


3-32714
-Stealtch-
2002-03-22 10:46
2002.04.11
SQL запрос выборочного удаления строк


6-32931
bg8
2002-01-23 18:38
2002.04.11
TCustomWinSocket