Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

обращение к объекту модальной формы [D5]


Страницы:   1 2

de2 ©   (2002-12-16 14:59:00) 

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


neXt   (2002-12-16 16:24:00) [1]

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


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

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


neXt   (2002-12-16 16:02:00) [3]

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

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

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


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

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


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

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


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

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


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


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

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

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


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

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


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


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


Modal и мешает


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


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

Во бред.

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


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

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


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

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

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


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

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


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

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

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

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

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


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

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


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


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

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

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


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


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


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


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

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

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


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

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


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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо