Главная страница
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
15-1312230596
Юрий
2011-08-02 00:29
2011.11.27
С днем рождения ! 2 августа 2011 вторник


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


15-1311974952
Германн
2011-07-30 01:29
2011.11.27
TRegisry.


15-1312133491
SQLEXPRESS
2011-07-31 21:31
2011.11.27
Кто и почему делает бесплатный софт?


3-1265182852
Гость
2010-02-03 10:40
2011.11.27
Аудит триггером составной транзакции