Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Контейнер визуальных объектов, поведение объектов 
:(
    Опции темы
jsa
Дата 9.12.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: 1
Всего: 20



Hi All

есть тут у меня задачка одна:

хочу создать некий контейнер визуальных объектов - область с воможность прокрутки(пока нужно по горизонтали), объекты внутри области - панели с неким расширенным набором свойств
сейчас взял за основу TScrollBox, в котором создаются динамически несколько объектов TPanel 
на данном моменте интересует вопросы:
1 как сделать обработку кликов - т.е. кликнул по какой-то панели - она стала активной - каким либо образом перекрасилась
2 как выводить текст на панели( если ширина заранее не известна) что бы (возможно длинный) текст переносился автоматот на на другие строки по пробелам, или просто часть текста обрезалась и подставлялись 3 точки
3 если я изменю ширину одной панели - как сказать остальным что бы они подвинулись

ЗЫЖ 
буду признателен за лыбые ссылки, коментарии, идеи


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
Alexeis
Дата 9.12.2008, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Bose
Дата 9.12.2008, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(jsa @  9.12.2008,  11:39 Найти цитируемый пост)
1 как сделать обработку кликов - т.е. кликнул по какой-то панели - она стала активной - каким либо образом перекрасилась

присваивать создаваемым панелям обработчик OnClick. Например такой:
Код

procedure MyComponent._OnPanelClick(Sender: TObject);
begin
  (Sender as TPanel).Color :=  RGB( random(255),random(255),random(255));
end;


Цитата(jsa @  9.12.2008,  11:39 Найти цитируемый пост)
2 как выводить текст на панели( если ширина заранее не известна) что бы (возможно длинный) текст переносился автоматот на на другие строки по пробелам, или просто часть текста обрезалась и подставлялись 3 точки

Для вывода текста в своём формате, сделать наследника(или class helper сойдёт?), в котором будет перекрыт метод protected метод Paint. И соответственно рисовать там текст со своими параметрами. Я сейчас не помню, но то ли у процедуры DrawText, то ли у TextOut, то ли у TextOutRect была возможность рисовать текст с переносами, либо укорачивать длинный текст многоточием.

Цитата(jsa @  9.12.2008,  11:39 Найти цитируемый пост)
3 если я изменю ширину одной панели - как сказать остальным что бы они подвинулись

Смотря как ты изменяешь ширину. Если ширина панели меняется сама по себе, и твой компонент-контейнер об этом не знает, то надо уведомлять компонент-контейнер, и пусть он уже настраивает ширину других панелей. В этом случае присвоить панелям обработчик OnResize, аналогично первому.
PM MAIL WWW Skype   Вверх
jsa
Дата 10.12.2008, 06:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: 1
Всего: 20



Bose, 
Цитата(Bose @  9.12.2008,  21:00 Найти цитируемый пост)
или class helper сойдёт

не понял про class helper


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
Bose
Дата 10.12.2008, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(jsa @  10.12.2008,  06:24 Найти цитируемый пост)

не понял про class helper

class helper позволяет добавить к классу новые метода без написания наследника. но это в общем и неважно. Наверняка у тебя не просто TPanel используются, а определён свой наследник.
PM MAIL WWW Skype   Вверх
jsa
Дата 11.12.2008, 06:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: 1
Всего: 20



Цитата(Bose @  11.12.2008,  03:38 Найти цитируемый пост)
Наверняка у тебя не просто TPanel используются, а определён свой наследник

ага, так и есть


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1156 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.