Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Стиль контрола mdvXLGrid


Rusya ©   (2007-05-30 09:41:00) 

Как изменить стиль отображения контрола mdvXLGrid? Хотелось бы, чтобы границы контрола отображались как в ХР-стиле обычного ListView (тонкая синеватая рамка, и стиль bsNone). Можно ли это сделать?


Danger   (2007-05-30 18:50:00) [1]


> Кода это не добавит, но позволяет по быстрому включать темы.

В смысле, позволит быстро перерисовывать по примеру Richedit другие контролы.


Danger   (2007-05-30 18:42:00) [2]


> mdw ©   (30.05.07 16:11) [4]
> Ну бордер убрать HasBorder:= False;А все остальное, берете
> исходник, находите метод Paint и рисуете с учетом тем. Ничего
> сложного там нет, просто функции рисования поменять. Потом
> присылаете, выкладываем на сайте, народ спасибо скажет еще.
>  :)

Ну например, Rusyaможешь сделать так: использовать уже готовую отрисовку, сделанную Кладовым для Richedit. Для этого в KOLmdvXLGrid.pas в функции NewmdvXLGridдобавить ниже вызова Result.AttachProc(WndProcmdvXLGrid);аттач к своей процедуре отрисовки:
   
....
Result.AttachProc(WndProcmdvXLGrid);
{$IFDEF RICHEDIT_XPBORDER}
Result.AttachProc( WndProc_RichEditXPBorder );
{$ENDIF}
....

Т.к. WndProc_RichEditXPBorder, DrawThemeBackground,   PThemedElementDetails, TThemedElementDetails не объявлены в интерфейсной части KOL.pas, копируем их оттуда в KOLmdvXLGrid.pas, несколько выше NewmdvXLGrid:
{$IFDEF RICHEDIT_XPBORDER}
type
 TThemedElement = (
   teButton,
   teClock,
  ........................
       ReleaseDC(Self_.Handle, DC);
     //end;
   end;
 end;
end;
{$ENDIF RICHEDIT_XPBORDER}

Я сам так делал, не было времени делать специализированную отрисовку, нужно было сделать по-быстрому. По крайней мере, рамка контрола теперь будет, как вам и нужно, если добавить в опции проекта RICHEDIT_XPBORDER.

To Vladimir Kladov:Может, стоит объявить WndProc_RichEditXPBorder, DrawThemeBackground и по крайней мере типы TThemedElement/РThemedElement, TThemedEdit в интерфейсной части KOL.pas? Кода это не добавит, но позволяет по быстрому включать темы.


mdw   (2007-05-30 16:11:00) [3]

Ну бордер убрать HasBorder:= False;
А все остальное, берете исходник, находите метод Paint и рисуете с учетом тем. Ничего сложного там нет, просто функции рисования поменять. Потом присылаете, выкладываем на сайте, народ спасибо скажет еще. :)


Dimaxx   (2007-05-30 15:09:00) [4]

Listview рисует ОСь, а mdvXLGrid нарисован самостоятельно. Чтобы он понимал темы нуна ручками править отрисовку.


Rusya   (2007-05-30 14:26:00) [5]


> А  ХР-стиль обычного ListView это как?

В программе используются обычный Listview и mdvXLGrid. Под ХР у listview'a с манифестом отображается бордер тонкой синей рамкой, контрол стилем как бы bsNone (нормальный, не выпуклый и не вогнутый). mdvXLGrid всегда отображается Lowered, и манифест не цепляет. Хочу, чтобы он отображался примено так как listview под ХР отображается :) Чтобы все единым стилем было.


mdw   (2007-05-30 13:22:00) [6]

А  ХР-стиль обычного ListView это как? Если подразумеваются схемы то какая из них обычная? А если отрисовка с использованием схем, то реализуйте, в KOL.pas можно посмотреть как это делается, разобраться можно достаточно быстро, там все просто.


Наверх

Титульная страница Поиск, карта сайта Написать письмо