[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Программирование под ОС / Pascal - Delphi /

Создание группы 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;

Как видите, все просто. Определяем, к какой группе относится радио-кнопка, после чего "включаем" ее. На сегодня все, удачи в программировании.




Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Программирование под ОС / Pascal - Delphi /

Работа со шрифтами на Win API
06-06-2010   

Сегодня поговорим о шрифтах, и о том, каким образом работать с ними на Win API. Нам потребуется переменная типа HFONT. Изменить стиль шрифта можно у любого компонента, я покажу это на примере кнопки... подробнее

Кол. просмотров: общее - 3599 сегодня - 1

Работа с таймером на Win API
06-06-2010   

Таймер - вещь в хозяйстве очень полезная. Если некое действие нужно повторять с определенной периодичностью, то таймер, это как раз то, что нужно... подробнее

Кол. просмотров: общее - 3593 сегодня - 2

Работа с мультимедийным таймером на Win API
06-06-2010   

Мы уже знакомы с системным таймером, сегодня познакомимся с мультимедийным, основное отличие которого, более высокая скорость (точность) работы... подробнее

Кол. просмотров: общее - 3691 сегодня - 1

Создание CheckBoxов средствами Win API
06-06-2010   

Сегодня наша программа научится работать с CheckBoxами. CheckBox можно представить как флаг, который можно установить или сбросить, и в зависимости от его состояния выполнять определенные действия... подробнее

Кол. просмотров: общее - 3823 сегодня - 2

Создание группы RadioButton средствами Win API
06-06-2010   

В прошлый раз мы сделали несколько радио-кнопок, которые автоматически объединялись в одну группу. Сейчас рассмотрим, как создавать несколько независимых групп радио-кнопок... подробнее

Кол. просмотров: общее - 3652 сегодня - 1



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects