Главная страница
    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.45 MB
Время: 0.004 c
15-1310580284
Leon-Z
2011-07-13 22:04
2011.11.27
Любимая детская сказка.


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


15-1312057797
Юрий
2011-07-31 00:29
2011.11.27
С днем рождения ! 31 июля 2011 воскресенье


15-1312355735
OW
2011-08-03 11:15
2011.11.27
Ошибка Oracle Forms


15-1312562196
NailMan
2011-08-05 20:36
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский