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

Вниз

Как можно по имени формы получить переменную типа TForm?   Найти похожие ветки 

 
stelius ©   (2004-07-14 16:30) [0]

subj


 
Гаврила ©   (2004-07-14 16:33) [1]

У Application, как и у любого компонента, есть список.
См. FindComponent
Только форма в этот момент должна быть создана


 
stelius ©   (2004-07-14 16:46) [2]

она создана, только Application.FindComponent возвращает nil


 
Anatoly Podgoretsky ©   (2004-07-14 16:49) [3]

Значит неправильно ищешь, ищи в Screen


 
Digitman ©   (2004-07-14 16:55) [4]


> она создана, только Application.FindComponent возвращает
> nil


владелец-то кто у этой формы ? Application ? если иначе, то разумеется Application.FindComponent вернет тебе nil - этот метод осуществляет поиск в списке объектов, которые были созданы с о ссылкой на объект-владелец Application

а вот список Screen.Forms[] хранит ссылки на все существующие формы приложения (без учета владельца), но имеющие в момент обращения к списку св-во Visible = True


 
asp ©   (2004-07-14 16:59) [5]

Screen.Forms


 
Digitman ©   (2004-07-14 17:12) [6]


> asp ©   (14.07.04 16:59) [5]


цитирую справку :

Lists all the forms currently displayed in the application.

а вдруг автор создал форму, но она НЕ displayed в момент поиска ?

очередной кукиш получит он в этом случае с этим скрином ...


 
HSolo ©   (2004-07-14 17:20) [7]

>очередной кукиш получит он в этом случае с этим скрином
Не получит :) Увы, справка в данном случае вводит в заблуждение. Screen.Forms содержит созданные формы, не обязательно видимые. Проверено.


 
Digitman ©   (2004-07-14 17:32) [8]


> HSolo ©   (14.07.04 17:20) [7]


посмотрел в исх.текст

действительно, вводит в заблуждение

либо в справке ляп (д.б. currently existing) либо в исх.тексте реализовано не так как описано в справке


 
Anatoly Podgoretsky ©   (2004-07-14 20:25) [9]

Еще ЮЗ удивлялся.
Ошибка в справке до сих пор не исправлена.


 
stelius ©   (2004-07-16 16:16) [10]

Со Screen тоже не получается, nil и все тут, вот код:
procedure TForm1.Button1Click(Sender: TObject);
var
 c     : TComponent;
begin
 Form2 := TForm2.Create(self);
 Form2.Show;
 Form1.SetFocus;
 c := Screen.FindComponent("Form2");
 if c = nil then ShowMessage("nil")
 else ShowMessage("not nil")
 Form2.Free;
end;


 
VMcL ©   (2004-07-16 16:25) [11]

>>stelius ©  (16.07.04 16:16) [10]

При чем к "Screen" FindComponent? Screen не является владельцем формы. Цикл for по Screen.Forms[] и всё тут.


 
Инопланетянин   (2004-07-16 16:27) [12]

Form2 := TForm2.Create(self);

посмотри, какое у нее в этот момент имя
ShowMessage(Form2.name)


 
stelius ©   (2004-07-16 16:49) [13]

2 VMcL ©   (16.07.04 16:25) [11]
thnx
2 Инопланетянин   (16.07.04 16:27) [12]
строка
c := Screen.FindComponent(Form2.Name);
дает тот же результ



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

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

Наверх




Память: 0.47 MB
Время: 0.041 c
1-1089989869
Jim^sz
2004-07-16 18:57
2004.08.01
Ошибка Type в DLL


4-1087908311
вразлет
2004-06-22 16:45
2004.08.01
COM-port


1-1090248783
serg128
2004-07-19 18:53
2004.08.01
как в TTreeView получить родительский узел?


1-1090386273
lightix
2004-07-21 09:04
2004.08.01
Переопределение клавиши TAB


1-1089474717
SeDOy
2004-07-10 19:51
2004.08.01
Управление mdi-окнами





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