Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доделать TListView или TListItem, ... добавить одно свойство... 
V
    Опции темы
Sharkfire
  Дата 29.6.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Столкнулся с тем что, надо временно скрыть от пользователя некоторые элементы списка (TListView), однако удалять их из памяти методом Delete нельзя, их нужно просто НЕ ОТРИСОВЫВАТЬ.  smile 

Необходимых свойств или метотодов для этого не в TListView и TListItem я не нашёл.  smile 

Хочу модифицировать эти компоненты и классы, и добавить в них просто одно свойство Hide.

Подскажите как добраться до самого тела, где необходимо изменить компонент (учитывать свойство Hide при отрисовке или можно как то проще) ???  smile 

Это сообщение отредактировал(а) Sharkfire - 29.6.2007, 20:50
PM MAIL ICQ   Вверх
Klin
Дата 29.6.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Вопрос конечно интересный.
ИМХО У ListView нет такого свойства или функции, чтобы на время скрывать, поэтому будем писать ручками. Для этого можешь создать массив, который будет хранить рсположение элемента и его текст. А далее, сначало сохраняешь данные, а потом удаляешь (или очищаешь Caption). Потом для восстановления проходишь по всем координата и восстанавливаешь заголовки (или вставляешь элементы).


Цитата(Sharkfire @  29.6.2007,  14:56 Найти цитируемый пост)
Подскажите как добраться до самого тела, где необходимо изменить компонент

Жми CTRL и левую клавишу мыши на классе компонента и будет тебя и тело и все остальное. Только изменять компонент долго будешь легче просто функцию сделать.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Sharkfire
Дата 29.6.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Идея такая была сразу...!!!
(я не хотел засорять вопрос что бы не путать людей поэтому не написал, а щас придётся)

Проблема в том что у меня есть класс TContact, в нём есть поле, Item (класса TListItem), 
он создаёться в конструкторе класса, и если его удалить с помощью Delete исчезает на всегда И ИЗ СПИСКА С ИЗ ОБЪЕКТА Contact[i-ый] (что приводит к ошибке), меня это не устраивает.

Выхода 2: 
1) "НОРМАЛЬНЫЙ" - переписать компонент что бы было свойство Hide 
2) "КРИВОРУКИЙ"   - писать спец метод для восстановления Item в памяти после использования Delete, впринцыпе вся инфа для восстановелния имееться в других полях TContact.

Какие ещё будут предложения? 
PM MAIL ICQ   Вверх
Klin
Дата 29.6.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Последний пост запутал окончательно... Единственное, что могу посоветовать (кроме сохранения данных) изменить ширину столбца, в котором хранится "секретная" информация. Если сделать ее равной -1, то и видно ничего не будет. Имеено -1 иначе можно будет растянуть колонку (тогда придется ставить запрет на изменение ее ширины)

Это сообщение отредактировал(а) Klin - 29.6.2007, 16:25


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Klin
Дата 29.6.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Программно точно не получится вот линк такой вопрос был.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Sharkfire
Дата 29.6.2007, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо, проблему решил:
Код

2) "КРИВОРУКИЙ"   - писать спец метод для восстановления Item в памяти после использования Delete, впринцыпе вся инфа для восстановелния имееться в других полях TContact.

PM MAIL ICQ   Вверх
Vyacheslav
Дата 2.7.2007, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Вообще при решении таких задач в ListView предусмотрено использование виртуального листа и события OnData. Тогда и TListItem не придется создавать, удалять. Его вообще создавать не придется smile


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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