Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как корректно обратиться к динамическому компоненту по имени, взятому из String строки


loony-pants

Вопрос

Думаю. вопрос покажется некоторым довольно смешным, но я уже устал искать, в чём моя ошибка, и что я ввожу не так.

 

Есть Код, динамически создающий на форме TIMAGE. Изображение создаётся корректно, всё отлично, при этом в ListView создаётся строка с именем данного TImage (Это сделано для того, чтобы при выборе в ListView строки нужного  TImage включалась функция перемещения изображения). Зашёл в тупик я в следующем:

 

Когда я кликаю по TListView, я пытаюсь активировать следующую функцию для обработчика OnItemClick, но она не работает, а очень нужно мне, чтобы имя задавалось из ListView линии (ну на худой конец я могу этот item перевести в другой string, но это ничего не изменит):

 

TImage(ListView2.Selected.Text).OnMouseDown:=MyIMGMouseDown;

 

Ошибка по любому в красной области, т.к. я обращаюсь к TImage как к String

 

но я также пробовал обращение типа(тоже не вышло): 

var

FindImage := FindComponent(ListView2.Selected.Text);

begin

TImage(FindImage).OnMouseDown:=MyIMGMouseDown;

 

Прошу вас, уважаемые... Подскажите правильную форму обращения, иначе я сойду с ума )))))

 

 

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
но я также пробовал обращение типа(тоже не вышло): 

var

FindImage := FindComponent(ListView2.Selected.Text);

begin

TImage(FindImage).OnMouseDown:=MyIMGMouseDown;

Для корректного обращения необходимо привести результат FindComponent к TImage с помощью ключевого слова as.

Пример:

CoordX:=(Form1.FindComponent(ListView1.Selected.Text) as TImage).Position.X;
Ссылка на комментарий
  • 0

 

но я также пробовал обращение типа(тоже не вышло): 

var

FindImage := FindComponent(ListView2.Selected.Text);

begin

TImage(FindImage).OnMouseDown:=MyIMGMouseDown;

Для корректного обращения необходимо привести результат FindComponent к TImage с помощью ключевого слова as.

Пример:

CoordX:=(Form1.FindComponent(ListView1.Selected.Text) as TImage).Position.X;

Всё верно 

FindImage:=(ColorBox1.FindComponent (ListView2.Selected.Text) as TImage); /// ColorBox1 у меня является Owner

Ох и намаялся я... Ещё один момент: в var нужно прописать FindImage:TComponent   ...

Спасибо, всё решено )

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...