Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Basic для платформы Android - Basic4Android - Basic4Android

Войти
Регистрация
Восстановить пароль

Показать сообщение отдельно
Pro_grammer
Модератор
5934 / 2095 / 401
Регистрация: 24.04.2011
Сообщений: 3,569
Записей в блоге: 10
24.04.2014, 19:34  [ТС]
Дополним нашу программу возможностью сохранять текст в файл, загружать ранее сохранённый текст и удалять текстовые файлы.
Для работы нам понадобится библиотека Dialogs. Она содержит набор стандартных диалогов в котором есть выбор файлов. В основном окне проекта справа есть вкладка, где по умолчанию показаны все модули и процедуры нашего проекта. Правая нижняя вкладка называется Libs. Открываем её, вам представится полный список доступных библиотек и ода из них, а именно Core уже отмечена галочкой. Найдите в списке Dialogs и отметьте галочкой. Если такой библиотеки нет, то см. http://www.cyberforum.ru/basic/threa...ml#post6062619, я там подсказал, как искать.

Далее объявляем все нужные переменные в Globals. Переменные будут доступны из всех процедур нашей Активности (Аctivity)
Для доступности переменных из всех модулей ( если будут таковые), их надо объявлять в процедуре Process_Globals



Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
    Dim EditText1 As EditText
    Dim fd As FileDialog
    fd.FastScroll = True
    fd.KeyboardPopUp = False
    fd.FilePath = File.DirRootExternal 'Корневая папка SD карты
    fd.FileFilter = ".txt" ' Фильтр, несколько типов через запятую ".jpg,.png" 
End Sub
Внимательно смотрите на код, если нет красных символов, то значит всё сделали правильно.
DirRootExternal - Корневая папка SD карты, доступна как для чтения, так и для записи любым приложениям.
DirAssets - Собственная папка программы, внутри .apk архива. Доступна только для чтения и только вашей программой. В неё мы поместили иконки при работе с дизайнером ( помните - папка Files?).

В виду того, что наша программа будет работать с картой памяти необходимо проверить при запуске её доступность. По аналогии с VB6, где есть процедура Form_Load() здесь есть процедура Activity_Create(FirstTime As Boolean)
В неё и вставим код проверки
Visual Basic
1
2
3
4
If File.ExternalWritable = False Then
        Msgbox("Нет доступа к записи на карту памяти.", "MyNotepad") ' Упс! надо выходить из программы
    Activity.Finish      'Прекращаем работу программы 
End If
Внимание! Проверте в вашем эмулятре, есть ли поддержка SD карты? Иначе программа не запустится!

Тут же добавляем в программу пункты меню
Visual Basic
1
2
3
4
   Activity.AddMenuItem3("Загрузить файл","mnuOpen",LoadBitmap(File.DirAssets,"1398157499_folder-open.png"),True) ' Adds menu 
    Activity.AddMenuItem3("Сохранить файл","mnuSave",LoadBitmap(File.DirAssets,"1398157588_save.png"),True) ' Adds menu 
    Activity.AddMenuItem3("Удалить файл ","mnuDel",LoadBitmap(File.DirAssets,"1398157685_file_delete.png"),True) ' Adds menu 
    Activity.AddMenuItem3("Новый/Очистить текст ","mnuNew",LoadBitmap(File.DirAssets,"1398157679_file_add.png"),True) ' Adds menu
Уже можно запустить код на выполнение и проверить, как отображается меню в эмуляторе.

Basic для платформы Android - Basic4Android

У вас может быть совсем по-другому, в зависимости от версии Андроид и размеров. Если меню не умещается целиком, возможно отображение только части рисунков, а остальное в виде текста.

Далее дописываем процедуры, которые обрабатывают действия, при выборе пунктов Меню
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Sub SaveStringExample
    Dim EText As String
    DateTime.DateFormat = "ddMMyyHHmmss"
    now = DateTime.now
    dt = DateTime.Date(now) ' файл вида 210414200150
 
    EText = EditText1.Text
         File.WriteString(File.DirRootExternal, dt & "_MyN.txt",EText)
      ToastMessageShow("Сохранён файл - " & dt & "_MyN.txt", False)
End Sub
Sub ReadStringExample
    Dim EText As String
    ret = fd.Show("Посмотреть заметку", "Отменить", "Нет", "Да", Null)  
    If ret = -2 Then
 
      EText = File.ReadString(File.DirRootExternal,fd.ChosenName)
      EditText1.Text = EText
    Else
    ToastMessageShow("Загрузка " & fd.ChosenName & " отменена!", False) 
    End If
    
    
End Sub
 
Sub mnuOpen_Click
   ReadStringExample
End Sub
 
Sub mnuSave_Click
   SaveStringExample
End Sub
Sub mnuNew_Click
  EditText1.Text =""
End Sub
 
 
Sub mnuDel_Click
    
    ret = fd.Show( "Удалить файл", "Отменить", "Нет","Да", Null)    
    If ret = -2 Then
             If  File.Delete(File.DirRootExternal,fd.ChosenName) Then 
                   ToastMessageShow("Удаление" & fd.ChosenName & " успешно!", False)    
             End If
     
    Else
    ToastMessageShow( "Удаление" & fd.ChosenName & " отменено!", False) 
    End If
End Sub
Код процедур простой, кто пишет программы на Basic тому разобраться не сложно. Поясню принцип сохранения файла. Процедура SaveStringExample
Генерирует имя файла из текущей даты и времени вида 210414200150_MyN.txt _MyN это как визитная карточка нашей программы. Преимущество этого подхода в быстром сохранении файла – нет надобности набирать имя файла в ручную.

Примечание! Переменные now,dt,ret в коде светятся «красным». Формально это ошибка, мы их не задекларировали при помощи DIM. Но т.к. мы сразу после использования им присвоили значения, то они ошибку при компиляции не вызывают и так делать допустимо.

Для настройки различных параметров работы и совместимости в виде планшета и телефона есть на основной вкладке Дизайнера форм кнопка Add Variant. Добавляем 480х320, т.е планшетный вариант и растягиваем EditText1 на всю ширину экрана.

Вот и весь код. Можно компилировать, собирать в режиме Релиз и пользоваться.
Готовый код не даю, пусть будет стимул вам для самостоятельного повторения.


Ну вот, Блокнот написали. теперь очередь за Paint. Ждите, в следующем уроке будем делать подобие Виндовской Рисовалки.
4
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru