if((ACol==2)&&(ARow==2))
{
TRect r = Rect;
r.left+=2;
r.top += Rect.Height()/2 - 6;
r.right = r.left + 12;
r.bottom = r.top + 12;
DrawFrameControl(StringGrid1->Canvas->Handle, &r, DFC_BUTTON, DFCS_BUTTONRADIO|DFCS_CHECKED);
StringGrid1->Canvas->TextOut(r.right+2, r.top-2, "checked");
}
TStringGrid
Подскажите, пожалуйста, как можно встраивать CheckBox в определенные ячейки StringGrid?
Рисовать в OnDrawCell...
А если при щелчке на ячеке показывать поверх нее CheckBox, тока размеры подобрать?
Код:
Код:
if((ACol==2)&&(ARow==2))
{
TRect r = Rect;
r.left+=2;
r.top += Rect.Height()/2 - 6;
r.right = r.left + 12;
r.bottom = r.top + 12;
DrawFrameControl(StringGrid1->Canvas->Handle, &r, DFC_BUTTON, DFCS_BUTTONRADIO|DFCS_CHECKED);
StringGrid1->Canvas->TextOut(r.right+2, r.top-2, "checked");
}
{
TRect r = Rect;
r.left+=2;
r.top += Rect.Height()/2 - 6;
r.right = r.left + 12;
r.bottom = r.top + 12;
DrawFrameControl(StringGrid1->Canvas->Handle, &r, DFC_BUTTON, DFCS_BUTTONRADIO|DFCS_CHECKED);
StringGrid1->Canvas->TextOut(r.right+2, r.top-2, "checked");
}
Откуда 12?
Такой ф-ии GetSystemMetrics(SM_CXMENUCHECK); мы не знаем?
Такой ф-ии GetSystemMetrics(SM_CXMENUCHECK); мы не знаем?[/QUOTE]12 возможно мы взяли с потолка. Уже не помню. Роли не играет, в том коде главное DrawFrameControl, DFC_BUTTON, DFCS_BUTTONRADIO и DFCS_CHECKED.
Ф-ию GetSystemMetrics(*) мы знаем, даже вызывали пару раз, в основном с параметрами SM_CXSIZE/SM_CYSIZE.
На счет SM_CXMENUCHECK.
При стандартных настройках GetSystemMetrics(SM_CXMENUCHECK) = [color=red]13[/color], ширина/высота radiobutton = [color=red]12[/color].
Если установить в настройках Windows размер шрифта: Крупный шрифт(125%), тогда GetSystemMetrics(SM_CXMENUCHECK) = [color=red]17[/color], ширина/высота radiobutton = [color=red]12[/color].
Если установить в настройках Windows размер шрифта: 150%, тогда GetSystemMetrics(SM_CXMENUCHECK) = [color=red]21[/color], ширина/высота radiobutton = [color=red]12[/color].
Или же я не понял твой вопрос? Ты просто хотел узнать, знаю ли я GetSystemMetrics(SM_CXMENUCHECK)?
Ф-ию GetSystemMetrics(*) мы знаем, даже вызывали пару раз, в основном с параметрами SM_CXSIZE/SM_CXSIZE.
На счет SM_CXMENUCHECK.
При стандартных настройках GetSystemMetrics(SM_CXMENUCHECK) = 13, ширина/высота radiobutton = 12.
Если установить в настройках Windows размер шрифта: Крупный шрифт(125%), тогда GetSystemMetrics(SM_CXMENUCHECK) = 17, ширина/высота radiobutton = 12.
Если установить в настройках Windows размер шрифта: 150%, тогда GetSystemMetrics(SM_CXMENUCHECK) = 21, ширина/высота radiobutton = 12.
Или же я не понял твой вопрос? Ты просто хотел узнать, знаю ли я GetSystemMetrics(SM_CXMENUCHECK)?[/QUOTE]
Все понял правильно. Метрики лучше спрашивать у системы, чтобы не гадать 17 или 12.
GetSystemMetrics(SM_CXMENUCHECK) = [color=red]13[/color], ширина/высота radiobutton = [color=red]12[/color].
GetSystemMetrics(SM_CXMENUCHECK) = [color=red]17[/color], ширина/высота radiobutton = [color=red]12[/color].
GetSystemMetrics(SM_CXMENUCHECK) = [color=red]21[/color], ширина/высота radiobutton = [color=red]12[/color].
Можешь объяснить как из значения GetSystemMetrics(SM_CXMENUCHECK) определить размер radiobutton? :)
GetSystemMetrics(SM_CXMENUCHECK) = [color=red]17[/color], ширина/высота radiobutton = [color=red]12[/color].
GetSystemMetrics(SM_CXMENUCHECK) = [color=red]21[/color], ширина/высота radiobutton = [color=red]12[/color].
Можешь объяснить как из значения GetSystemMetrics(SM_CXMENUCHECK) определить размер radiobutton? :)[/QUOTE]
Ладно. Убедил, проверять не буду. На этот раз ты супер-пупер программист:)