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

Вниз

Где находится функция прорисовки TCheckBox   Найти похожие ветки 

 
avi9526   (2011-08-06 18:40) [0]

Собственно, вопрос - где находится функция прорисовки TCheckBox ? (типа OnPaint, WMPaint и т.д.)
Не могу найти этого и для других компонентов на основе TWinControl (TButton)


 
Sapersky   (2011-08-06 19:03) [1]

TWinControl"ы сам Windows рисует.
С ручной отрисовкой - потомки TCustomControl/TGraphicControl.


 
~AQUARIUS~   (2011-08-06 20:54) [2]


> TWinControl"ы сам Windows рисует.

Только стандартные, к которым, впрочем, CheckBox и пренадлежит.
Это рисует саму "галочку", текст пририсуйте сами:
uses
 UxTheme, Themes;

procedure DrawCheckBox(ACanvas: TCanvas; ALeftTop: TPoint; AHotLight, APressed,
 AEnabled: Boolean; AState: TCheckBoxState);
var
 td: TThemedElementDetails;
 rc: TRect;
 tb: TThemedButton;
 fl: DWORD;
begin
 rc := Bounds(ALeftTop.X, ALeftTop.Y, 13, 13);
 if not ThemeServices.ThemesEnabled then
 begin
   fl := DFCS_BUTTONCHECK;
   if AEnabled then
   begin
     if APressed then fl := fl or DFCS_PUSHED;
     case AState of
       cbChecked: fl := fl or DFCS_CHECKED;
       cbGrayed:  fl := fl or DFCS_BUTTON3STATE or DFCS_CHECKED;
     end;
   end else fl := fl or DFCS_INACTIVE;
   DrawFrameControl(ACanvas.Handle, rc, DFC_BUTTON, fl);
 end else
 begin
   case AState of
   cbUnchecked: if AEnabled then
     begin
       if APressed then tb := tbCheckBoxUncheckedPressed else
       if AHotLight then tb := tbCheckBoxUncheckedHot
         else tb := tbCheckBoxUncheckedNormal;
     end else tb := tbCheckBoxUncheckedDisabled;
   cbChecked: if AEnabled then
     begin
       if APressed then tb := tbCheckBoxCheckedPressed else
       if AHotLight then tb := tbCheckBoxCheckedHot
         else tb := tbCheckBoxCheckedNormal;
     end else tb := tbCheckBoxCheckedDisabled;
   cbGrayed: if AEnabled then
     begin
       if APressed then tb := tbCheckBoxMixedPressed else
       if AHotLight then tb := tbCheckBoxMixedHot
         else tb := tbCheckBoxMixedNormal;
     end else tb := tbCheckBoxMixedDisabled;
   else Exit;
   end;
   td := ThemeServices.GetElementDetails(tb);
   ThemeServices.DrawElement(ACanvas.Handle, td, rc);
 end;
end;


 
DVM ©   (2011-08-06 23:31) [3]


> avi9526   (06.08.11 18:40) 


> где находится функция прорисовки TCheckBox ?

в commctrl.dll или в user32.dll в зависимости от версии вин задействованных тем



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

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

Наверх




Память: 0.47 MB
Время: 0.01 c
2-1312416987
Псарь
2011-08-04 04:16
2011.11.27
Архитектура в CAD-системе. Изображения.


15-1312261329
oldman
2011-08-02 09:02
2011.11.27
Вычисление значения функции разложением в ряд с точностью N


15-1312550454
DevilDevil
2011-08-05 17:20
2011.11.27
Описание формата XLSX


2-1312652888
Gu
2011-08-06 21:48
2011.11.27
Динамический массив


15-1312444465
OW
2011-08-04 11:54
2011.11.27
Почему Excel не дает открыть файлы с одинаковыми именами?