|
|
Ответов: 0
|
25-02-12 07:01
|
|
|
|
Ответов: 0
|
16-01-12 20:13
|
|
|
|
Ответов: 1
|
09-01-12 11:23
|
|
   Web - программирование
|
|
|
   Программирование под ОС
|
|
|
   Web - технологии
|
|
|
   Базы Данных
|
|
|
|
Возможно вас заинтересует
|
|
Создание группы RadioButton средствами Win API

В прошлый раз мы сделали несколько радио-кнопок, которые автоматически
объединялись в одну группу. Сейчас рассмотрим, как создавать несколько
независимых групп радио-кнопок.
Создадим две группы, по три радио-кнопки в каждой. Состояние кнопок в группе
будем отображать в поле "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;
|
Как видите, все просто. Определяем, к какой группе относится радио-кнопка,
после чего "включаем" ее. На сегодня все, удачи в программировании.
|
Сегодня поговорим о шрифтах, и о том, каким образом работать с ними на Win API. Нам потребуется переменная типа HFONT. Изменить стиль шрифта можно у любого компонента, я покажу это на примере кнопки... подробнее
|
Кол. просмотров: общее - 4938 сегодня - 1
|
|
Таймер - вещь в хозяйстве очень полезная. Если некое действие нужно повторять с определенной периодичностью, то таймер, это как раз то, что нужно... подробнее
|
Кол. просмотров: общее - 4963 сегодня - 0
|
|
Мы уже знакомы с системным таймером, сегодня познакомимся с мультимедийным, основное отличие которого, более высокая скорость (точность) работы... подробнее
|
Кол. просмотров: общее - 5111 сегодня - 2
|
|
Сегодня наша программа научится работать с CheckBoxами. CheckBox можно представить как флаг, который можно установить или сбросить, и в зависимости от его состояния выполнять определенные действия... подробнее
|
Кол. просмотров: общее - 5345 сегодня - 3
|
|
В прошлый раз мы сделали несколько радио-кнопок, которые автоматически объединялись в одну группу. Сейчас рассмотрим, как создавать несколько независимых групп радио-кнопок... подробнее
|
Кол. просмотров: общее - 4986 сегодня - 1
|
|
|
|