Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
12.3.4. Текстовые поля
FOX располагает полезными средствами для ввода текста. В следующем примере демонстрируется применение класса
FXTextFieldTEXTFIELD_PASSWDTEXTFIELD_REALTEXTFIELD_INTEGERsimple = FXTextField.new(main, 20, nil, 0, JUSTIFY_RIGHT|FRAME_SUNKEN| FRAME_THICK|LAYOUT_SIDE_TOP)simple.text = "Simple Text Field"passwd = FXTextField.new(main, 20, nil, 0, JUSTIFY_RIGHT|TEXTFIELD_PASSWD| FRAME_SUNKEN|FRAME_THICK| LAYOUT_SIDE_TOP)passwd.text = "Password"real = FXTextField.new(main, 20, nil, 0, TEXTFIELD_REAL|FRAME_SUNKEN| FRAME_THICK|LAYOUT_SIDE_TOP| LAYOUT_FIX_HEIGHT, 0, 0, 0, 30)real.text = "1.0E+3"int = FXTextField.new(main, 20, nil, 0, TEXTFIELD_INTEGER| FRAME_SUNKEN|FRAME_THICK| LAYOUT_SIDE_TOP|LAYOUT_FIX_HEIGHT, 0, 0, 0, 30)int.text = "1000"Ниже показан простой способ ввода текста с помощью диалогового окна. В зависимости от выбранного метода можно будет вводить любой текст, только действительные или только целые числа.
puts FXInputDialog.getString("initial text", self, "Диалог для ввода текст", "Введите текст:", nil)puts FXInputDialog.getInteger(1200, self, "Диалог для ввода целого числа", "Введите целое число:", nil)puts FXInputDialog.getReal(1.03е7, self, "Диалог для ввода числа в научной нотации", "Введите действительное число:", nil)Для экономии места мы не станем приводить полный текст приложения. Но, конечно, перед выводом диалогового окна необходимо выполнить обычную инициализацию.
12.3.5. Прочие виджеты
В следующем примере демонстрируется использование меню и полос меню в приложениях. Отметим, что объекты
FXMenuCommandrequire 'fox16'include Foxapplication = FXApp.newmain = FXMainWindow.new(application, "Simple Menu")menubar = FXMenuBar.new(main, LAYOUT_SIDE_TOP | LAYOUT_FILL_X)filemenu = FXMenuPane.new(main)quit_cmd = FXMenuCommand.new(filemenu, "&QuittCtl-Q")quit_cmd.connect(SEL_COMMAND) { application.exit }FXMenuTitie.new(menubar, "&File", nil, filemenu)application.createmain.show(PLACEMENT_SCREEN)application.runЗдесь и
FXMenuBarFXMenuPaneFXMainWindowLAYOUT_SIDE_TOPLAYOUT_FILL_X"&QuittCtl-Q"В классе
FXTopWindowFXMenuCommand.new(filemenu, "&IcontCtl-I") do |cmd|cmd.connect(SEL_COMMAND) { main.minimize } endНа этом примере мы видим еще один прием, полезный при конструировании команды меню. Если вам не нужна ссылка на виджет, представляющий команду меню, то можно просто присоединить блок к вызову
FXMenuCommand.newВ листинге 12.10 демонстрируются переключатели.
require 'fox16'include Foxclass RadioButtonHandlerWindow < FXMainWindow def initialize(app) # Invoke base class initialize first super(app, "Radio Button Handler", nil, nil, DECOR_TITLE | DECOR_CLOSE) choices = [ "Good", "Better", "Best" ] group = FXGroupBox.new(self, "Radio Test Group", LAYOUT_SIDE_TOP | FRAME_GROOVE | LAYOUT_FILL_X) choices.each do |choice| FXRadioButton.new(group, choice,
