Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.09;
Скачать: CL | DM;

Вниз

Стиль контрола mdvXLGrid   Найти похожие ветки 

 
Rusya   (2007-05-30 09:41) [0]

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


 
mdw ©   (2007-05-30 13:22) [1]

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


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


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

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


 
Dimaxx ©   (2007-05-30 15:09) [3]

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


 
mdw ©   (2007-05-30 16:11) [4]

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


 
Danger ©   (2007-05-30 18:42) [5]


> 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? Кода это не добавит, но позволяет по быстрому включать темы.


 
Danger ©   (2007-05-30 18:50) [6]


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

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



Страницы: 1 вся ветка

Текущий архив: 2007.12.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
15-1194337973
Evanescence
2007-11-06 11:32
2007.12.09
Кажется, я убил вирус :)


15-1194700737
Kostafey
2007-11-10 16:18
2007.12.09
С днем рождения ! 10 ноября


2-1195204511
Pro100
2007-11-16 12:15
2007.12.09
Дробная часть


15-1194857454
Voluntarist
2007-11-12 11:50
2007.12.09
Борьба со злом


15-1194027609
Черный Шаман
2007-11-02 21:20
2007.12.09
Мы ведем работы по созданию искусственного интеллекта