![]() |
|
|
![]()
|
|
| Sharkfire |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 30.11.2006 Где: Одесса Репутация: 2 Всего: 2 |
Столкнулся с тем что, надо временно скрыть от пользователя некоторые элементы списка (TListView), однако удалять их из памяти методом Delete нельзя, их нужно просто НЕ ОТРИСОВЫВАТЬ.
Необходимых свойств или метотодов для этого не в TListView и TListItem я не нашёл. Хочу модифицировать эти компоненты и классы, и добавить в них просто одно свойство Hide. Подскажите как добраться до самого тела, где необходимо изменить компонент (учитывать свойство Hide при отрисовке или можно как то проще) ??? Это сообщение отредактировал(а) Sharkfire - 29.6.2007, 20:50 |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Вопрос конечно интересный.
ИМХО У ListView нет такого свойства или функции, чтобы на время скрывать, поэтому будем писать ручками. Для этого можешь создать массив, который будет хранить рсположение элемента и его текст. А далее, сначало сохраняешь данные, а потом удаляешь (или очищаешь Caption). Потом для восстановления проходишь по всем координата и восстанавливаешь заголовки (или вставляешь элементы).
Жми CTRL и левую клавишу мыши на классе компонента и будет тебя и тело и все остальное. Только изменять компонент долго будешь легче просто функцию сделать. -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Sharkfire |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 30.11.2006 Где: Одесса Репутация: 2 Всего: 2 |
Идея такая была сразу...!!!
(я не хотел засорять вопрос что бы не путать людей поэтому не написал, а щас придётся) Проблема в том что у меня есть класс TContact, в нём есть поле, Item (класса TListItem), он создаёться в конструкторе класса, и если его удалить с помощью Delete исчезает на всегда И ИЗ СПИСКА С ИЗ ОБЪЕКТА Contact[i-ый] (что приводит к ошибке), меня это не устраивает. Выхода 2: 1) "НОРМАЛЬНЫЙ" - переписать компонент что бы было свойство Hide 2) "КРИВОРУКИЙ" - писать спец метод для восстановления Item в памяти после использования Delete, впринцыпе вся инфа для восстановелния имееться в других полях TContact. Какие ещё будут предложения? |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Последний пост запутал окончательно... Единственное, что могу посоветовать (кроме сохранения данных) изменить ширину столбца, в котором хранится "секретная" информация. Если сделать ее равной -1, то и видно ничего не будет. Имеено -1 иначе можно будет растянуть колонку (тогда придется ставить запрет на изменение ее ширины)
Это сообщение отредактировал(а) Klin - 29.6.2007, 16:25 -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Программно точно не получится вот линк такой вопрос был.
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Sharkfire |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 30.11.2006 Где: Одесса Репутация: 2 Всего: 2 |
Спасибо, проблему решил:
|
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Вообще при решении таких задач в ListView предусмотрено использование виртуального листа и события OnData. Тогда и TListItem не придется создавать, удалять. Его вообще создавать не придется
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |