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

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

Как можно по имени формы получить переменную типа TForm? [D5, Win2k]


stelius ©   (2004-07-14 16:30:00) 

subj


stelius   (2004-07-16 16:49:00) [1]

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


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

Form2 := TForm2.Create(self);

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


VMcL   (2004-07-16 16:25:00) [3]

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

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


stelius   (2004-07-16 16:16:00) [4]

Со 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;


Anatoly Podgoretsky   (2004-07-14 20:25:00) [5]

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


Digitman   (2004-07-14 17:32:00) [6]


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


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

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

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


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

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


Digitman   (2004-07-14 17:12:00) [8]


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


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

Lists all the forms currently displayed in the application.

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

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


asp   (2004-07-14 16:59:00) [9]

Screen.Forms


Digitman   (2004-07-14 16:55:00) [10]


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


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

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


Anatoly Podgoretsky   (2004-07-14 16:49:00) [11]

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


stelius   (2004-07-14 16:46:00) [12]

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


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

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


Наверх

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