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

Вниз

Screen.Forms - может кто поправит, если не прав?   Найти похожие ветки 

 
Silver_   (2003-12-10 14:56) [0]

ShowMessage(Screen.Forms[ 3].Name);
ShowMessage(Screen.Forms[ 3].Name);
Screen.Forms[ 3].Show;
ShowMessage(Screen.Forms[ 3].Name);
Screen.Forms[ 3].Show;
ShowMessage(Screen.Forms[ 3].Name);


и что мы видим

MyForm_3
MyForm_3
MyForm_4
MyForm_5

я не понял ведь четко задал 3, а после ...Show 3-тьа форма уже совсем не 3-тьа
че за атрабла.
Допустим надо найти форму, показать потом чет там делать
for i := 0 to Screen.FormCount - 1 do
if Screen.Forms[i] is TMyForm then
begin
Screen.Forms[i].Show;
Screen.Forms[i]....

{Фиг пройдет, потому как буду обращатся уже к другой форме
Здрась-те но ведь I не изменился}
end;


 
Erik   (2003-12-10 15:18) [1]

А указатель на форму в лом скопировать?
MyForm := Screen.Forms[i];
MyForm.та ля ля;
М вобще это нехороший метод перебора форм. Лучше послать message приложению а формы пусть ловят.


 
Silver_   (2003-12-10 15:19) [2]

Не понял на засыпку получился или как :)


 
Silver_   (2003-12-10 16:48) [3]

Да, но у меня ситуация несколько иная.
Надо проверить на наличие формы, если нет создать и дальше работать с неи. Просто чет не выходило и когда разбирался обнаружил... то что выше описал. Вот в недоумении и "настучал" :) тута на борландов. А заодно решил выяснить вдруг это не борланды а руки.
Аказывается всетаки борланды, к сожалению :( .


 
cdadmitriy   (2003-12-10 16:54) [4]

Screen.Forms[I] это z - порядок для form and


 
TUser   (2003-12-10 17:20) [5]

Если надо проверить, существует ли форма - юзай FindWindow.


 
Юрий Зотов   (2003-12-10 17:57) [6]

Смотрим справку и видим:
Lists all the forms currently displayed in the application.

То есть, это список не ВСЕХ форм, а только ВИДИМЫХ в данный момент. Поэтому, естественно, Show приводит к его изменению.

А вот список Components в Application при показе форм не меняется.


 
HSolo   (2003-12-10 18:29) [7]

> Юрий Зотов © (10.12.03 17:57) [6]
> это список не ВСЕХ форм, а только ВИДИМЫХ в данный момент

Это так в D6/D7 или под WinXP? Я почему спрашиваю: у меня (D5, Win95/98/2000) хотя в справке и присутствует эта фраза, но на самом деле Screen.Forms содержит список СОЗДАННЫХ форм - не обязательно видимых. Или я что-то не так понимаю?


 
Юрий Зотов   (2003-12-10 19:23) [8]

> HSolo © (10.12.03 18:29) [7]

Если верить справке, то это так во всех Delphi. Во всяком случае, Windows здесь наверняка ни при чем (уже хотя бы потому, что Windows вообще ни о каких Screen и формах VCL не имеет ни малейшего понятия).

Если Вы проверяли и уверены в том, что проверили правильно - значит, в справке ошибка (или, как минимум, неточность). Сам я этого не проверял, но если судить по теме этой ветки, то в справке все написано верно.


 
Anatoly Podgoretsky   (2003-12-10 19:45) [9]

Это известная ошибка справки, неисправленая до сих пор (не знаю как в Д7), но если посмотреть выше, то
What forms and data modules have been instantiated by the application.

Все созданые формы, наследники от TForms, для наследников от TCustomForms соответствующее свойство CustomForms


 
HSolo   (2003-12-11 09:13) [10]

>Юрий Зотов © (10.12.03 19:23) [8]
>Anatoly Podgoretsky © (10.12.03 19:45) [9]

Большое спасибо. Просто я давно пользуюсь Screen.Forms для поиска именно созданных форм и, в частности, для определения того, есть ли что показать пользователю или это "что-то" надо сперва создать. Все работает, как я и ожидаю.

Для полноты картины - еще одна выдержка из справки (D5):

"Understanding TApplication, TScreen, and TForm":
TScreen is used at runtime to keep track of forms and data modules that have been loaded as well as system specific information such as screen resolution and what fonts are available for display.

Похоже, справка противоречит сама себе :(

>Erik © (10.12.03 15:18) [1]
>это нехороший метод перебора форм
Чем именно?


 
Erik   (2003-12-11 17:29) [11]

Я бы сохранял на них указатели в масиве и сделал менеджер форм. Также неплохо переписать конструкторы для получения интерфейсов. Тогда подсчет сылок и уничножение форм будет автоматическим.



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

Форум: "Основная";
Текущий архив: 2003.12.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.009 c
1-75263
Димон
2003-12-10 10:42
2003.12.23
Сортировка в ListView


7-75420
volser
2003-10-16 23:37
2003.12.23
Опрос модема


1-75167
loki128
2003-12-09 15:41
2003.12.23
try .. finally


7-75440
Woolen
2003-10-20 13:27
2003.12.23
Celeron 2 ГГц и Hyper-Threading


4-75458
mio
2003-10-28 18:12
2003.12.23
Разделение





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