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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шеврон CategoryPanel 
:(
    Опции темы
Galus
Дата 5.5.2011, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Такая ситуация: есть CategoryPanelGroup на которой расположено штук пять панелей CategoryPanel. Стандартные картинки заголовка панели заменены на 3 своих, соответственно 2 это индикатор свёрнуто/развёрнуто и одна заменяет и то и другой если в панели был осуществлен выбор параметров (каждая панель отвечает за список параметров, который используется далее при формировании SQL запроса). Параметр выбран - на заголовке панели рисуется зелёная галочка, типа индикатора.
Проблема в том что перерисовка заголовка панели происходит только если непосредственно с ним что то сделать: свернуть/развернуть панель, кликнуть, навести мышку, установить фокус, сменить свойство caption. Но всё это не годится. Кто нибудь в курсе как корректно заставить перерисоваться заголовок панели?
PM MAIL   Вверх
volvo877
Дата 5.5.2011, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

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



Получи доступ к TCustomCategoryPanel.DrawHeader (или через Fake-класс, или через Interceptor-класс), и вызывай этот метод для перерисовки заголовка.
PM MAIL   Вверх
Galus
Дата 11.5.2011, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А можно поподробнее?
Насколько я понял речь идёт о наследовании, создании своего класса с разблокированием защищёного метода. Сталкивался с этим пока всего один раз.
PM MAIL   Вверх
volvo877
Дата 11.5.2011, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

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



Fake-класс:

Код
type tfake = class(TCategoryPanel);

// Ну, и вызов DrawHeader ...
procedure TForm1.Button1Click(Sender: TObject);
begin
   CategoryPanel2.ExpandedImageIndex := 1;
   TFake(CategoryPanel2).DrawHeader;
end;

, заголовок перерисовался...

Interceptor-класс:

Код
type
   // Перед описанием класса формы...
   TCategoryPanel = class(ExtCtrls.TCategoryPanel)
   public
      procedure UpdateHeader;
   end;

   TForm1 = class(TForm)
   // ...

// В Implementation
procedure TCategoryPanel.UpdateHeader;
begin
   inherited;
end;
Метод DrawHeader опять к твоим услугам, вызывай, где нужно...

Это сообщение отредактировал(а) volvo877 - 11.5.2011, 23:36
PM MAIL   Вверх
Galus
Дата 24.5.2011, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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

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

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


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

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


 




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


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

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