Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2011, 19:03   #1
Shturmer
 
Регистрация: 08.07.2009
Сообщений: 7
По умолчанию Изображения и подписи к ним

Доброго времени суток!
Не знаю как лучше поступить в ситуации - На форме может одновременно находится до 70 картинок. Если кликаем мышкой на картинку надо чтобы менялось значение в label или edit (неважно) под этой картинкой. Правая - уменьшаем значение. Левая - увеличиваем.
Собна вопрос. Сделать еще 70 label помимо 70 img и написать по 70 обработчиков нажатия мышиных кнопок, для каждого image? или есть какое-нить более изящное решение? МОжно ли объекту Timage "дописать" свойство caption, которое бы располагалось под картинкой? и если можно, то как? Я чета совершенно не знаю как писать свои компоненты, до этого довольствовался стандартными только.
Тогда бы можно было бы обойтись двумся обработчиками =)
Гугление по различным сочетаниям слов caption, image, изображение, подпись и пр, не дало результатов.
Спасибо за ответы.
Shturmer вне форума Ответить с цитированием
Старый 20.01.2011, 19:18   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Несколько вариантов.
1. Создать свой компонент. Суть его будет сводиться к тому, что он будет подобно панели хранить TImage и TLabel, позиционировать их, подгонять размеры под нужную область и т.д. и т.п.
2. Можно создать TFrame, кинуть на него TImage и TLabel, написать нужные обработчики. Потом нужно будет на форме создавать не отдельно TImage и TLabel, а уже скомпонованный TFrame
3. Создаём TImage, TLabel как обычно, но все TLabel записываем в массив, а всем TImage в свойство Tag прописываем индекс TLabel в этом самом массиве.
Вешаем на все картинки один обработчик, в нём будет параметр Sender (он будет указывать на тот TImage, по которому нажмут). Обработчик в итоге будет выглядеть примерно так:
Код:
var
  label_index: integer;
begin
  label_index := TImage(Sender).Tag;
  if (...)
    then labels[label_index].Caption := 'Уменьшить'
    else labels[label_index].Caption := 'Увеличить';
end;
Вариант 3 собственно можно всяко разно реализовать, на сколько фантазии хватит. Можно и без массива обойтись, а назвать все TImage по типу image1, image2,... а все TLabel: label_image1, label_image2,... ну и потом ориентироваться по свойству Name контролов.
pu4koff вне форума Ответить с цитированием
Старый 21.01.2011, 14:52   #3
Shturmer
 
Регистрация: 08.07.2009
Сообщений: 7
По умолчанию

Спасибо. Пока воспользовался советом с фреймами. Пока вроде корректно. Но т.к. работа только начата, то возможно еще придется что-то менять.
Shturmer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Куплю место у вас в подписи Liafors Фриланс 5 18.02.2010 17:21
Добавление подписи в сообщение Outlook Unreal Blonde Microsoft Office Excel 4 12.10.2009 11:58
Подписи данных для графика. Garrison Microsoft Office Excel 12 18.08.2009 12:35
Подписи в CHART cowboy Общие вопросы Delphi 2 14.08.2009 14:21
Подписи в Tchart. Superman Компоненты Delphi 0 23.07.2009 21:40