Главная страница
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.51 MB
Время: 0.012 c
1-86016
Igorek
2002-12-16 13:22
2002.12.26
Текст битмапным шрифтом вертикально


1-85954
iap
2002-12-15 15:11
2002.12.26
TListView


14-86120
iZEN
2002-12-05 15:33
2002.12.26
Как запустить индикатор клавиатурной раскладки в WinXP?


14-86136
Ежик
2002-12-05 16:27
2002.12.26
Встреча мастеров Delphi в Эстонии.


14-86135
Xfree
2002-12-06 09:54
2002.12.26
Тьрьма XXI века