Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.007 c
3-32691
der
2002-03-06 12:48
2002.04.11
круговерть с DLL


1-32755
MaxSit
2002-03-30 12:56
2002.04.11
QuickReport To Text


3-32705
Fareader
2002-03-21 12:03
2002.04.11
Падает скорость Insert на больших объемах


3-32683
Stratos
2002-03-21 09:27
2002.04.11
Interbase: явная транзакция


3-32660
TimPasha
2002-03-20 11:44
2002.04.11
Требуется разъяснение!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский