Текущий архив: 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