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

Вниз

обращение к объекту модальной формы   Найти похожие ветки 

 
de2   (2002-12-16 14:59) [0]

почему если запускаю форму модально (TForm1.Create(application).ShowModal;) к ней нельзя обращаться например так Form1.Query1.Open даже из нее самой, а можно только Query1.Open?
как обратиться к объекту с модальной формы из другой формы?


 
Skier   (2002-12-16 15:02) [1]

>de2
Да потому что...
Что у тебя при таком коде будет в переменной Form1 ?!
Поразмысли ?


 
Calm   (2002-12-16 15:03) [2]

Да ничего там не будет :))


 
de2   (2002-12-16 15:05) [3]

т.е. получается что обратиться к объекту с модальной формы из другой формы нельзя?


 
Reindeer Moss Eater   (2002-12-16 15:05) [4]

Неа. Там будет указатель. Указывающий на ничего :))


 
Reindeer Moss Eater   (2002-12-16 15:06) [5]

т.е. получается что обратиться к объекту с модальной формы из другой формы нельзя?

Как раз можно.


 
Lord Warlock   (2002-12-16 15:08) [6]


> т.е. получается что обратиться к объекту с модальной формы
> из другой формы нельзя?
>
> Как раз можно.


После того, как ее закрыть


 
Calm   (2002-12-16 15:08) [7]


> de2 (16.12.02 15:05)
> т.е. получается что обратиться к объекту с модальной формы
> из другой формы нельзя?

Т.е. не надо терять указатели на объекты.
Нужно делать
Form1:=TForm1.Create(application);
Form1.ShowModal;

Если уж очень хочется красивого кода, то
Form1:=TForm1.Create(application).ShowModal;
Но в любом случае сначало нужно инициализировать Form1, прежде чем к ней обращаться.


 
Reindeer Moss Eater   (2002-12-16 15:09) [8]

>После того, как ее закрыть
А до закрытия кто мне помешает сделать это?


 
KSergey   (2002-12-16 15:10) [9]

> de2 (16.12.02 15:05)
> т.е. получается что обратиться к объекту с модальной формы
> из другой формы нельзя?

В общем случае - можно.
В вашем - немного напрягшись.

Я понимаю, что общественность не поддержит и, вообще-то, Skier (16.12.02 15:02) прав, но
Кратенько: чтобы можно было обратиться по Form1.Query1, в Form1 должна быть ссылка на эту самую форму. Сама по себе она там появиться не может, верно? Ее туда надо запихнуть, логично?

Мастера, блин! Кончайте прикалываться над народом! ;)


 
KSergey   (2002-12-16 15:11) [10]

Во как плотненько легло ;) на 2 сек. я опоздал... ;)


 
KSergey   (2002-12-16 15:13) [11]

> Calm © (16.12.02 15:08)
> Form1:=TForm1.Create(application).ShowModal;

Ой, а ShowModal разве ссылку на форму возвращает? ;) Аккуратнее с красивым кодом ;)


 
Lord Warlock   (2002-12-16 15:14) [12]


> >После того, как ее закрыть
> А до закрытия кто мне помешает сделать это?


Modal и мешает


 
Skier   (2002-12-16 15:14) [13]

Form1:=TForm1.Create(application).ShowModal;
ОЙ-ОЙ-ОЙ ! Видимо шутка. :)))


 
FreeLancer   (2002-12-16 15:14) [14]


> Если уж очень хочется красивого кода, то
> Form1:=TForm1.Create(application).ShowModal;

Во бред.

Application.CreateForm(TForm1, Form1);
... или
Form1 := TForm1.Create(Self);
Form1 := TForm1.Create(Application);


 
Юрий Федоров   (2002-12-16 15:15) [15]

Интересная логика :
(TForm1.Create(application).ShowModal;) - нельзя обратиться к Form1, а например
(TForm1.Create(application).Show;) можно? Не очень понятно, почему автор ветки грешит именно на модальность показа :):):)


 
Calm   (2002-12-16 15:15) [16]


> > Form1:=TForm1.Create(application).ShowModal;
>
> Ой, а ShowModal разве ссылку на форму возвращает? ;) Аккуратнее
> с красивым кодом ;)

А разве не получится? Ссылку возвращает TForm1.Create(application). Одновременно присваиваем это значение Form1 и вызываем у этого объекта его метод.
Сейчас я проверю, по-моему должно получиться.

А с красивым кодом, действиетельно, нужно быть аккуратным. Лучше надежнее, чем красивее...


 
Reindeer Moss Eater   (2002-12-16 15:16) [17]

Добрый совет и без прикола:
В модулях модальных форм удаляй в интерфейсной части декларацию переменной экземпляра формы (var Form1:TForm)
Исчезнет соблазн использовать неиницизированные ссылки


 
Anatoly Podgoretsky   (2002-12-16 15:16) [18]

Calm © (16.12.02 15:08)
Ты бы проверл послений код в компиляторе


 
Calm   (2002-12-16 15:17) [19]

Загнался я. Нельзя так делать.


 
neXt   (2002-12-16 16:02) [20]

есть ещё способ написать тоже самое красиво и ошибок легко наляпать - это with:

with TForm1.Create(Application) do
begin
Query1.Open;
ShowModal;
Free;
end;

Это для любителей красоты и острых ощущений.


 
Reindeer Moss Eater   (2002-12-16 16:12) [21]

Любители настоящей красоты никогда не делают модули взаимозависимыми.
Иными словами из модуля формы TForm1 не обращаются к Form2.Query1


 
neXt   (2002-12-16 16:24) [22]

согласен, хотя я и не любитель красоты, просто в этом топике пример привели, я и припечатал, для полноты...



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

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

Наверх




Память: 0.49 MB
Время: 0.007 c
1-85972
Анатолий
2002-12-15 19:05
2002.12.26
Обмен данными между двумя приложениями


14-86132
vopros
2002-12-05 16:25
2002.12.26
Пишите какой-то бред


1-85884
Anatoly P
2002-12-16 19:46
2002.12.26
TDateTime и datetimepicker


4-86229
Cosmic
2002-11-10 16:49
2002.12.26
Как в консоли сделать таймер?


14-86180
Ketmar
2002-12-06 19:20
2002.12.26
а давайте меня в мастера примем?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский