:: MVP ::
|
|
:: RSS ::
|
|
|
В прошлый раз мы сделали несколько радио-кнопок, которые автоматически
объединялись в одну группу. Сейчас рассмотрим, как создавать несколько
независимых групп радио-кнопок.
Создадим две группы, по три радио-кнопки в каждой. Состояние кнопок в группе
будем отображать в поле "Static".
const
IDRBtn1 = 1;
IDRBtn2 = 2;
IDRBtn3 = 3;
IDRBtn4 = 4;
IDRBtn5 = 5;
IDRBtn6 = 6;
var
RBtn1: HWND;
RBtn2: HWND;
RBtn3: HWND;
RBtn4: HWND;
RBtn5: HWND;
RBtn6: HWND;
Static1: HWND;
Static2: HWND;
|
Чтобы создать независимые группы, радио-кнопки должны иметь стиль
BS_RADIOBUTTON, а их состояние нужно обрабатывать вручную.
RBtn1 := CreateWindowEx( 0, 'Button', 'Опция 1 (гр.1)',
WS_CHILD or WS_VISIBLE or BS_RADIOBUTTON,
10, 15, 90, 20, Wnd, IDRBtn1, hInstance, nil );
SendMessage( RBtn1, WM_SETFONT, GetStockObject( ANSI_VAR_FONT ), 0 );
{...}
RBtn4 := CreateWindowEx( 0, 'Button', 'Опция 1 (гр.2)',
WS_CHILD or WS_VISIBLE or BS_RADIOBUTTON,
10, 45, 90, 20, Wnd, IDRBtn4, hInstance, nil );
SendMessage( RBtn4, WM_SETFONT, GetStockObject( ANSI_VAR_FONT ), 0 );
{...}
|
Для изменения состояния радио-кнопок используется процедура CheckRadioButton.
Ей передаются следующие аргументы: Handle нашего окна, идентификаторы первой
и последней кнопок в группе, и идентификатор радио-кнопки, которую нужно
"включить".
function WindowProc( Wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM ): LRESULT; stdcall;
var
p: PChar;
n: integer;
begin
case Msg of
WM_DESTROY: begin
PostQuitMessage( 0 );
Result := 0;
Exit;
end;
WM_COMMAND: begin
n := GetWindowTextLength( lParam ) + 1;
GetMem( p, n );
GetWindowText( lParam, p, n );
if ( LoWord( wParam ) >= IDRBtn1 ) and ( LoWord( wParam ) <= IDRBtn3 ) then
begin
SetWindowText( Static1, p );
CheckRadioButton( Wnd, IDRBtn1, IDRBtn3, LoWord( wParam ) );
end;
if ( LoWord( wParam ) >= IDRBtn4 ) and ( LoWord( wParam ) <= IDRBtn6 ) then
begin
SetWindowText( Static2, p );
CheckRadioButton( Wnd, IDRBtn4, IDRBtn6, LoWord( wParam ) );
end;
FreeMem( p, n );
end;
else
Result := DefWindowProc( Wnd, Msg, wParam, lParam );
end;
end;
|
Как видите, все просто. Определяем, к какой группе относится радио-кнопка,
после чего "включаем" ее. На сегодня все, удачи в программировании.
.: Пример к данной статье :.
|
При использовании материала - ссылка на сайт обязательна
|
|