Главная страница
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
6-1246261879
Strate
2009-06-29 11:51
2011.11.27
Как определить, к какой подсети принадлежит определённый адрес?


2-1312799819
А
2011-08-08 14:36
2011.11.27
mysql zoesdb нет коннекта


15-1312287708
OW
2011-08-02 16:21
2011.11.27
Сеть рушится? Целый день ошибки


15-1312662593
Юрий
2011-08-07 00:29
2011.11.27
С днем рождения ! 7 августа 2011 воскресенье


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