* * *    
Главная » Статьи » Код PB

Просмотров: 2495 | Дата: 08.05.2024 | Коментарии (0)

Текстовый редактор




Code
; Эта процедура загружает текст из файла в редактор  
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  

; Открываем невидимое окно  
If OpenWindow(0, 200, 200, 550, 400,"Текстовый редактор",#PB_Window_MinimizeGadget |#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered | #PB_Window_Invisible | #PB_Window_SizeGadget)  
  If CreateGadgetList(WindowID(0))  
  EditorGadget(1,2,30,548,360) ; Создаём редактор  
  SetGadgetFont(1,LoadFont(0,"Arial",10) ) ; Устанавливаем шрифт "Arial" с размером 10  
  ; Создаём меню  
  If CreateMenu(0,WindowID(0))  
  ; Создаём новый заголовок меню  
  MenuTitle("Файл")  
  ; Создаём пункты меню  
  MenuItem(0,"Открыть")  
  MenuItem(1,"Сохранить")  
  ; Разделитель между меню  
  MenuBar()  
  MenuItem(2,"Выход")  
  ; Создаём новый заголовок меню  
  MenuTitle("Справка")  
  MenuItem(3,"О программе")  
  EndIf  
   
  ; Создаём панель инструментов  
  If CreateToolBar(1, WindowID(0) )  
  ; Добавляем две кнопки, дублирующие пункты "Открыть" и "Сохранить" меню  
  ToolBarStandardButton(0,#PB_ToolBarIcon_Open)  
  ToolBarStandardButton(1,#PB_ToolBarIcon_Save)  
  ; Добавляем всплывающие подсказки к кнопкам  
  ToolBarToolTip(1, 0, "Открыть")  
  ToolBarToolTip(1, 1, "Сохранить")  
  EndIf  
   
  ; Создаём всплывающее (контекстное) меню  
  If CreatePopupMenu(1)  
  ; Добавляем пункты меню, дублирующие основное меню.  
  MenuItem(0, "Открыть файл")  
  MenuItem(1,"Сохранить файл")  
  EndIf  

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)-4,WindowHeight(0)-52)  
  EndIf  
   
  If Event=516 ; Условие будет выполнено при щелчке правой кнопкой мыши  
  DisplayPopupMenu(1, WindowID(0)) ; Отображаем контекстное меню  
  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  
  Exit=1 ; Записываем в переменную "Exit" число 1. Это прервёт цикл и программа закроется  
  ; Событие в пункте "О программе" меню  
  Case 3  
  If IsWindow(1)<>0 ; Проверяем, существует ли окно с идентификатором 1  
  SetActiveWindow(1) ; Если окно существует, отображаем его  
  Else ; Если окна нет, создаём его  
  If OpenWindow(1,0,0,200,80,"О программе",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)  
  If CreateGadgetList(WindowID(1) )  
  TextGadget(2,40,10,150,15,"Текстовый редактор")  
  ButtonGadget(3,50,40,80,25,"Ok")  
  EndIf  
  EndIf  
  EndIf  
  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=3 ; При щелчке по экранной кнопке "Ok", закрываем окно  
  CloseWindow(1)  
  EndIf  
  EndIf  
   
  Until Exit=1 ; Прерываем главный цикл если в переменной "Exit" число 1  
   
  EndIf  
EndIf  
End










Сайт посвящён языку программирования PureBasic — коммерческий компилятор языка программирования, использующего синтаксис BASIC. Предназначен для создания кроссплатформенных приложений для AmigaOS, Linux, Microsoft Windows, Windows NT и Mac OS X. Разработан компанией Fantaisie Software.