Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
nil, 0, ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP) end endendapplication = FXApp.newmain = RadioButtonHandlerWindow.new(application)application.createmain.show(PLACEMENT_SCREEN)application.runГруппы переключателей — стандартное средство в графических приложениях, предназначенное для выбора одного из взаимно исключающих вариантов. В данном примере варианты представлены массивом из трех строк:
choices = [ "Good", "Better", "Best" ]В главное окно добавляется объект
FXGroupBoxFXGroupBoxЕсть несколько способов обеспечить ожидаемое поведение переключателей, но в приложениях FOX чаще всего для этой цели используют получатель данных — класс
FXDataTargetFXDataTargetПрограмма в листинге 12.11 — модифицированный вариант предыдущей, в ней демонстрируется применение получателей данных.
require 'fox16'include Foxclass RadioButtonHandlerWindow < FXMainWindow def initialize(app) # Сначала вызвать инициализатор базового класса. super(app, "Radio Button Handler", nil, nil, DECOR_TITLE | DECOR_CLOSE) choices = [ "Good", "Better", "Best" ] default_choice = 0 @choice = FXDataTarget.new{default_choice) group = FXGroupBox.new(self, "Radio Test Group", LAYOUT_SIDE_TOP | FRAME_GROOVE | LAYOUT_FILL_X) choices.each_with_index do |choice, index| FXRadioButton.new(group, choice, @choice, FXDataTarget::ID_OPTION+index, ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP) end endendapplication = FXApp.newmain = RadioButtonHandlerWindow.new(application)application.createmain.show(PLACEMENT_SCREEN)application.runВ этом примере
@choiceFXDataTargetchoicesПри конструировании каждого переключателя задается получатель данных, а идентификатор сообщения от переключателя делается равным
FXDataTarget::ID_OPTIONДля добавления в окно списка
FXListLIST_BROWSESELECTLIST_SINGLESELECT@list = FXList.new(self, nil, 0, LIST_BROWSESELECT | LAYOUT_FILL_X)@names = ["Chuck", "Sally", "Franklin", "Schroeder", "Woodstock", "Matz", "Lucy"]@names.each { |name| @list.appendItem(name) }Отметим, что вместо метода
appendItem@names.each { |name| @list << name }Весь пример целиком приведен в листинге 12.12. Сообщение обрабатывается в главном окне, в результате выводится выбранный элемент. Если был задан режим
LIST_SINGLE_SELECTrequire 'fox16'include Foxclass ListHandlerWindow < FXMainWindow def initialize(app) # Сначала вызвать инициализатор базового класса. super(app, "List Handler", nil, nil, DECOR_TITLE | DECOR_CLOSE) @list = FXList.new(self, nil, 0, LIST_BROWSESELECT | LAYOUT_FILL_X) @list.connect(SEL_COMMAND) do |sender, sel, pos|
