Є деяка кількість динамічно створених компонентів Image, які можна переміщати по формі наступним кодом:
Питання: А як змінити позицію виділеного Image, за допомогою використання процедури:
Пробував зробити щось на зразок цього:
Але не вийшло, помилка: Incompatible types: 'TObject' and 'Class reference'
UPD: Ця проблема усунена, тепер виникла нова: процедура застосовується до останнього доданому Image. Підкажіть, будь ласка, як застосувати процедуру до Image по якому був здійснений клік? Пробував щось робити з Tag, але нічого не вийшло.
заданий 31 Січня '16 о 12:00
Вам в процедуру up потрібно передати створений вами динамічний об'єкт. тобто Image1. судячи по найменуванню методу.
У наведеному ж коді, ви намагаєтеся передати в цю процедуру клас. а не об'єкт. Ви напевно не дуже чітко розумієте різницю між класом і об'єктом, тому і допустили таку помилку. Об'єкт - екземпляр класу і ви можете створити кілька об'єктів одного і того ж класу.
Щоб навести порядок в голові і розкласти все по поличках, рекомендую вдумливо ознайомитися з заміткою: Delphi. Урок 18. Класи і об'єкти
Якщо ж говорити саме про компонентах, а не про якихось абстрактних класах, то їх прабатьком є клас TComponent, що є прямим нащадком класу TPersistent. Саме походять від TComponent класи є компонентами Delphi, в тому числі тими, що відображаються на палітрі компонент.
Тобто це звичайний клас. за винятком того, що він успадковується немає від TObject. а від TComponent. І з огляду на це обставини, не може бути "динамічно створеного компонента", як звучить у вашому запитанні. Все що створено - об'єкт.
В цілому як я і писав потрібно по onClick запам'ятовуємо елемент, по FormKeyUp переміщаємо його.
Для форми встановлюємо властивість KeyPreview = True. Для того щоб події натискання клавіш спершу пересилалися формі, а потім керованого компоненту.
Підключаємо модулі, якщо їх немає для кнопки, картинки і Generic списку.
Визначаємо тип TMoveDirection з напрямком руху:
Процедура переміщення Control'a з вказівкою напрямку
Подія ImageClickEvent яке відпрацьовує при натисканні мишкою
Мій алгоритм створення та побудови елементів. До речі img.Picture.Bitmap.LoadFromFile ( 'ball_blue.bmp'); служить для відображення картинки в TImage. Ніякого навантаження не несе.
Подія FormKeyUp. яке відпрацьовує при кліці будь-якою клавішею (Не забуваємо про KeyPreview = True для форми).
Створення і знищення списку з створеними об'єктами.
Код ні на що не претендує, проста реалізація завдання. Створюйте окремі класи, не використовуйте глобальні змінні.
Прийде час і я зроблю замітку на цю тему у себе в блозі