-
В приложении имеется две формы. На форме1 есть несколько полей одинакового назначения (для нескольких источников данных) с именами Source1,Source2,Source3...
Около этих полей есть кнопки, на которые посажена процедура, прописывающая в скрытом TLabel на второй форме индекс поля, около которого была кнопка нажата, и эту вторую форму визуализирующую. В ней вводятся данные, которые надо потом занести в поле, около которого была кнопка нажата. Из TLabel я беру его индекс и пытаюсь его получить:
targetField:=FindComponent('Field'+form2.hidenlabel.captoin) as TEdit;
Однако targetField после этого =nil. Предполагаю, что не находит. Почему? Пробовал использовать Application.FindComponent, но тоже безуспешно. (Это, кстати, то же, что и просто FindComponent?) Делал специальную переменную, где хранил вычисленное имя и проверял в отладчике - имя корректно, и на первой форме совершенно точное есть TEdit с таким именем. Что я не так делаю?
-
> Что я не так делаю?
1. Ищещь не то 2. Ищешь не там
-
В пределах одной формы поле находилось.
-
а ты хочешь чтоб твой файнд что-то находил и в моих формах?
-
function InputValue(aEdit : TEdit) begin with TForm2.Create(nil) do try бла бла бла; if ShowModal = mrOk then aEdit.Text := ValueEnteredInForm2; finally Free end end
-
> Shandrik © (16.08.17 12:47) [2] > > В пределах одной формы поле находилось.
FindComponent это не простая ( и тем более не волшебная) регулярная функция, а метод класса TCopmponent. Будучи вызван в методе некоей формы она и ищет сей компонент именно на этой форме.
-
странный архитектор.
имена контролов знает откуда взять, но зачем-то использует имена, хотя можно использовать ссылки. наверное это пионер-скаут, которому нравится искать то, что и так у него уже есть.
|