Форум: "Начинающим";
Текущий архив: 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