![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как можно по имени формы получить переменную типа 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
Только форма в этот момент должна быть создана