Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.11.27;
Скачать: [xml.tar.bz2];

Вниз

Где находится функция прорисовки 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
15-1312057797
Юрий
2011-07-31 00:29
2011.11.27
С днем рождения ! 31 июля 2011 воскресенье


2-1312707821
Gu
2011-08-07 13:03
2011.11.27
dcu


15-1311578284
Студент
2011-07-25 11:18
2011.11.27
Жизненные нравоучения.


15-1311963926
Petr V. Abramov
2011-07-29 22:25
2011.11.27
Oracle 11 R1


15-1311711837
tesseract
2011-07-27 00:23
2011.11.27
Чтиво на отпуск.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский