Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.26;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.008 c
1-85964
wicked
2002-12-15 03:11
2002.12.26
наследование TGraphic


1-85889
Шурик Ш
2002-12-16 11:13
2002.12.26
Подскажите событие


3-85875
daimon
2002-12-08 18:11
2002.12.26
Тонкии клиент


3-85869
atmamont
2002-12-08 22:30
2002.12.26
dblookupcombo


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





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