Global Shirina = 60
Procedure Spravka1 () ; окно "подсчет слов"
String.s="п.49 Количество слов, объявляемых в служебном заголовке телеграммы, служит "+
" для контроля правильности передачи и приёма слов в телеграммах на "+
"Примеры: 15-го - 1 слово "+
" 50-летием - 1 слово "
If IsWindow(2)<>0 ; Проверяем, существует ли окно с идентификатором 1
SetActiveWindow(2) ; Если окно существует, отображаем его
Else ; Если окна нет, создаём его
If LoadFont(2, "Courier New", 10,#PB_Font_Bold)
SetGadgetFont(#PB_Default, FontID(2))
OpenWindow(2, 0, 0, 655, 400, "Руководство по СЭС на телеграфных станциях узлов связи МО СССР гласит:", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(2, 0, 0, 645, 395)
StringGadget(2, 5, 5, 645, 395, String,#PB_String_ReadOnly|#ES_AUTOVSCROLL|#WS_VSCROLL|#ESB_DISABLE_LEFT|#ESB_DISABLE_RIGHT|#ES_MULTILINE)
SendMessage_(GadgetID(2),#EM_SETTARGETDEVICE, #Null, 0)
Repeat :
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
CloseWindow(2)
EndIf
EndProcedure
Procedure LoadFile(Gadget,FileName.s) ;загружает текст из файла
Text.s="" ; Очищаем строковую переменную
If ReadFile(1,FileName) ; Открываем файл
Size=Lof(1) ; Узнаём размер файла
If Size>0
Text=Space(Size) ; Заполняем переменную числом пробелов, равным размеру файла
ReadData(1,@Text,Size) ; Читаем данные из файла в строковую переменную "Text"
EndIf
SetGadgetText(Gadget,Text) ; Помещаем данные из переменной "Text" в редактор
CloseFile(1) ; Закрываем файл
Else
MessageRequester("Ошибка","Не удалось открыть файл!")
EndIf
EndProcedure
Procedure SaveFile(Gadget,FileName.s);сохраняет текст в файле
If CreateFile(2,FileName) ; Создаём пустой файл
Text.s=GetGadgetText(Gadget) ; Считываем данные из редактора в строковую переменную "Text"
WriteString(2,Text) ; и сохраняем их как одну большую строку
CloseFile(2) ; Закрываем файл
Else
MessageRequester("Ошибка","Не удалось сохранить файл!")
EndIf
EndProcedure
Procedure Menu1(); Создаём меню
If CreateMenu(0,WindowID(0))
; Создаём новый заголовок меню
;MenuTitle("Файл")
; Создаём пункты меню
MenuItem(0,"Открыть")
MenuItem(1,"Сохранить")
MenuItem(2,"Заменить")
MenuItem(3,"Выровнять")
MenuItem(4,"Шаблон")
; Создаём новый заголовок меню
MenuTitle("Справка")
MenuItem(5,"Подсчет слов")
MenuBar()
MenuItem(6,"Настройка порта")
MenuItem(7,"Схема подключения")
MenuBar()
MenuItem(8,"О программе")
;создаём кнопки
ButtonGadget(9, 5, 5, 130, 20, "пуншировать");:DisableGadget(9,1)
GadgetToolTip(9, "отправляет текст на телеграфный аппарат")
ButtonGadget(10, 135, 5, 50, 20, "пауза");:DisableGadget(10,1)
GadgetToolTip(10, "приостанавливает отправку текста на телеграфный аппарат")
ButtonGadget(11, 185, 5, 50, 20, "сброс");:DisableGadget(11,1)
GadgetToolTip(11, "отменяет пуншировку")
EndIf
EndProcedure
Procedure TrackBar1(Shirina)
If TrackBarGadget(23, 1, 27, 767, 20, 1, 69, #PB_TrackBar_Ticks)
SetGadgetState(23, Shirina)
TextGadget (22, 770, 25, 50, 20, StrU(Shirina), #PB_Text_Center)
SetGadgetFont(22, LoadFont(0, "Courier New", 14)) ; Устанавливаем шрифт "Courier New" с размером 14
EndIf
EndProcedure
Procedure OKHO1()
If IsWindow(1)<>0 ; Проверяем, существует ли окно с идентификатором 1
SetActiveWindow(1) ; Если окно существует, отображаем его
Else ; Если окна нет, создаём его
If OpenWindow(1,0,0,200,120,"О программе",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
;If CreateGadgetList(WindowID(1) )
TextGadget(2,70,10,150,15," ver. 24.3 ")
TextGadget(3,70,35,150,15,"08.12.2015 г.")
ButtonGadget(4,60,70,80,25,"Ok")
EndIf
EndIf
EndProcedure
;*********************************************************************
; Открываем невидимое окно
If OpenWindow(0,0,0,825,630,"Редактор текста и пуншировщик", #PB_Window_SystemMenu |#PB_Window_ScreenCentered | #PB_Window_Invisible)
EditorGadget(1,2,50,55,16) ; Создаём редактор
;SetGadgetFont(1,LoadFont(0,"Arial",10) ) ; Устанавливаем шрифт "Arial" с размером 10
SetGadgetFont(1,LoadFont(0,"Courier New", 14))
Menu1()
TrackBar1(Shirina)
HideWindow(0,0) ; Разрешаем отображение невидимого окна
SmartWindowRefresh(0, 1) ; Эта функция уменьшает мерцания окна при изменении его размеров
;**********************************************************************
Repeat ; Начало главного цикла
Event=WaitWindowEvent(); Узнаём текущее событие в программе
Menu=EventMenu() ; Получаем идентификатор активного пункта меню
Gadget=EventGadget() ; Узнаём в каком гаджете произошло событие
Window=EventWindow() ; Узнаём идентификатор активного окна
If window=0 ; Обработка событий от окна с идентификатором 0
If Event=#PB_Event_SizeWindow ; Условие будет выполнено при изменении размера окна
; Изменяем размер редактора
ResizeGadget(1, #PB_Ignore , #PB_Ignore , WindowWidth(0)-60,WindowHeight(0)-52)
EndIf
If Event=516 ; Условие будет выполнено при щелчке ПРАВОЙ кнопкой мыши
DisplayPopupMenu(1, WindowID(0)) ; Отображаем контекстное меню
EndIf
If Event = #PB_Event_Gadget And Gadget = 23; если движуха в отображаении позиции выравнивания
Shirina = GetGadgetState(23) ; Узнаем текущую позицию курсора
Shirina1.s = StrU(GetGadgetState(23))
TextGadget (22, 770, 25, 50, 20,Shirina1.s , #PB_Text_Center);печатаем цифру позиции ОШИБКУ ВЫДАЁТ В ЭТОМ МЕСТЕ SetActiveWindow(0)
SetGadgetFont(22, LoadFont(0, "Courier New", 14))
EndIf
If Event=#PB_Event_Menu ; Условие будет выполнено, если произойдёт событие в меню
Select Menu ; Запоминаем идентификатор меню для последующего сравнения в операторах Case
; Событие в пункте "Открыть" меню
Case 0
; Отображаем окно выбора открываемого файла
File.s=OpenFileRequester("Открыть файл", "", "*.txt|*.txt|All Files|*.*", 0)
If File<>"" ; Условие будет выполнено, если в строковой переменной "File" будет какой-либо текст
LoadFile(1,File) ; Вызываем процедуру, открывающую файл
EndIf
; Событие в пункте "Сохранить" меню
Case 1
; Отображаем окно выбора сохраняемого файла
File.s=SaveFileRequester("Сохранение файла", "", "*.txt|*.txt;|All Files|*.*", 0)
If File<>""
If GetExtensionPart(File)="" ; Условие будет выполнено при отсутствии расширения у файла
File=File+".txt" ; Добавляем расширение
EndIf
SaveFile(1,File) ; Сохраняем файл
EndIf
Case 2: OKHO1()
Case 3: OKHO1()
Case 4: OKHO1()
Case 5 :Spravka1 () ; окно "подсчет слов"
Case 6: Exit=1
Case 7: Exit=1
Case 8: OKHO1() ;окно о программе
; Событие в пункте "Выход" меню
Case 9
Exit=1 ; Записываем в переменную "Exit" число 1. Это прервёт цикл и программа закроется
; Событие в пункте "О программе" меню
EndSelect ; Этот оператор завершает операцию выбора, начатую оператором Select
EndIf
If Event=#PB_Event_CloseWindow ; При попытке закрыть главное окно, записываем в переменную "Exit" число 1
Exit=1
EndIf
EndIf
If window=1 ; Обработка событий от окна с идентификатором 1 (окно "О программе")
If Event=#PB_Event_CloseWindow ; Закрываем окно
CloseWindow(1)
EndIf
If Event=#PB_Event_Gadget And Gadget=4 ; При щелчке по экранной кнопке "Ok", закрываем окно
CloseWindow(1)
EndIf
EndIf
Until Exit=1 ; Прерываем главный цикл если в переменной "Exit" число 1
;EndIf
EndIf
End