Форум программистов, компьютерный форум, киберфорум
Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/107: Рейтинг темы: голосов - 107, средняя оценка - 4.95
 Аватар для coderxx
469 / 183 / 16
Регистрация: 25.02.2012
Сообщений: 418
Записей в блоге: 2

FreeBasic. MyFbFramework + VisualFBEditor

14.07.2018, 20:36. Показов 23065. Ответов 158

Студворк — интернет-сервис помощи студентам
Начал новый фреймворк для FreeBasic: MyFbFramework
И редактор для него: VisualFBEditor

Файлы здесь:
https://www.cyberforum.ru/blog... g5346.html
https://github.com/XusinboyBekchanov/MyFbFramework

Скриншоты:

Демка:
PureBasic
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
'#Compile -ex "mff\xpmanifest.rc"
#Include Once "mff\Form.bi"
#Include Once "mff\CheckBox.bi"
#Include Once "mff\CommandButton.bi"
#Include Once "mff\HScrollBar.bi"
#Include Once "mff\ComboBoxEdit.bi"
#Include Once "mff\ListControl.bi"
#Include Once "mff\TextBox.bi"
 
Using My.Sys.Forms
 
'#Region "Form"
    Type Form1 Extends Form
        Declare Constructor
        
        Dim As CheckBox CheckBox1
        Dim As CommandButton CommandButton1
        Dim As HScrollBar HScrollBar1
        Dim As ComboBoxEdit ComboBoxEdit1
        Dim As ListControl ListControl1
        Dim As TextBox TextBox1
    End Type
    
    Constructor Form1
        ' Form1
        This.Name = "Form1"
        This.Text = "Form1"
        This.SetBounds 0, 0, 350, 300
        ' CheckBox1
        CheckBox1.Name = "CheckBox1"
        CheckBox1.Text = "CheckBox1"
        CheckBox1.SetBounds 60, 42, 150, 36
        CheckBox1.Parent = @This
        ' CommandButton1
        CommandButton1.Name = "CommandButton1"
        CommandButton1.Text = "CommandButton1"
        CommandButton1.SetBounds 102, 108, 132, 60
        CommandButton1.Parent = @This
        ' HScrollBar1
        HScrollBar1.Name = "HScrollBar1"
        HScrollBar1.Text = "HScrollBar1"
        HScrollBar1.SetBounds 150, 192, 174, 18
        HScrollBar1.Parent = @This
        ' ComboBoxEdit1
        ComboBoxEdit1.Name = "ComboBoxEdit1"
        ComboBoxEdit1.SetBounds 228, 18, 66, 21
        ComboBoxEdit1.Parent = @This
        ' ListControl1
        ListControl1.Name = "ListControl1"
        ListControl1.Text = "ListControl1"
        ListControl1.SetBounds 24, 174, 84, 72
        ListControl1.Parent = @This
        ' TextBox1
        TextBox1.Name = "TextBox1"
        TextBox1.Text = "TextBox1"
        TextBox1.SetBounds 246, 60, 84, 42
        TextBox1.Parent = @This
    End Constructor
    
    #IfnDef _NOT_AUTORUN_FORMS_
        Dim frm As Form1
        frm.Show
    
        App.Run
    #EndIf
'#End Region
Миниатюры
FreeBasic. MyFbFramework + VisualFBEditor   FreeBasic. MyFbFramework + VisualFBEditor   FreeBasic. MyFbFramework + VisualFBEditor  

Вложения
Тип файла: zip Form1.zip (195.1 Кб, 15 просмотров)
3
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.07.2018, 20:36
Ответы с готовыми решениями:

FreeBASIC
Заметил, что уже имеющиеся на форуме темы в разделах: - QBasic - Visual Basic - VBA - Pure Basic посещаются довольно часто –...

Графика FreeBasic
Приветствую всех cyber-форумчан!:) Несмотря на наличие графического треда в младшем разделе, создаю ещё одну тему конкретно для...

Осваиваю (ем) FreeBasic
Решил больше не тянуть, а приступить сегодня. Если тема будет актуальна - возможно модераторы раздела ее (тему) как-нибудь оформят. ...

158
 Аватар для coderxx
469 / 183 / 16
Регистрация: 25.02.2012
Сообщений: 418
Записей в блоге: 2
21.12.2018, 12:53  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ufopera Посмотреть сообщение
VisualFBEditor 1.0.2.1230 - Запустилась, но на третьем-же клике молча исчезла, после удаление контрола с формы.
Я сейчас пробовал удалить контрол с помощью раскрывающего списка, у меня тоже вылетел. Исправим.

Цитата Сообщение от ufopera Посмотреть сообщение
Почему нет сообщений о ошибке, неужели такие критические, что не успевает сработать обработчик (если он есть)?
В некоторых моментах обработчики ошибок, не работает, не знаю почему.

Цитата Сообщение от ufopera Посмотреть сообщение
IDE штука сложная, тут важно правильно спроектировать, добавлять в проект уже отлаженные блоки кода,
по возможности использовать уже готовые библиотеки (SciLexer например).
Это не вина EditControl'a, это проблема Designer'а, я максимально старался не использовать сторонние компоненты.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
21.12.2018, 12:58
Цитата Сообщение от vlisp Посмотреть сообщение
в фб нет заголовочных файлов, но есть включаемые
Вот цитата из педивикии:
В программировании заголовочный файл (англ. header file) или подключаемый файл — файл, содержимое которого автоматически добавляется препроцессором в исходный текст в том месте, где располагается некоторая директива ({$I file.inc} в Паскале, #include <file.h> в Си).
В документации по FreeBASIC https://www.freebasic.net/wiki... yPgInclude
#include inserts source code from another file at the point where the #include directive appears. This has the effect of compiling the source code from the include file as though it were part of the source file that includes it. Once the compiler has reached the end of the include file, the original source file continues to be compiled.

This is useful to remove code from a file and separate it into more files. It is useful to have a single file with declarations in a program formed by several modules. You may include files within an include file, although avoid including the original file into itself, this will not produce valid results. Typically, include files will have an extension of .bi and are mainly used for declaring subs/functions/variables of a library, but any valid source code may be present in an include file.
Через гуглопереводчик:

#include вставляет исходный код из другого файла в тот момент, когда появляется директива #include. Это приводит к компиляции исходного кода из файла включения, как если бы он был частью исходного файла, который его включает. Как только компилятор достигает конца файла включения, исходный файл продолжает компилироваться.

Это полезно для удаления кода из файла и разделения его на несколько файлов. Полезно иметь один файл с объявлениями в программе, образованной несколькими модулями. Вы можете включать файлы во включаемый файл, хотя избегайте включения исходного файла в себя, это не даст действительных результатов. Как правило, включаемые файлы имеют расширение .bi и в основном используются для объявления подпрограмм / функций / переменных библиотеки, но любой допустимый исходный код может присутствовать во включаемом файле.
Таким образом выясняется:
1. Заголовочный и подключаемый файл — одно и тоже.
2. Под это определение замечательно попадают все заголовочные файлы, идущие вместе с компилятором.

Цитата Сообщение от vlisp Посмотреть сообщение
Другими словами в фб нет разницы с каким расширением файл компилировать
Вы считаете, что если в компиляторе Си жёстко указано расширение «*.h» для заголовочного файла, а для FreeBASIC можно указать любое расширение, то это отменяет загловочность таких файлов? Например, файлы «*.bi» из стандартной поставки компилятора больше не заголовочные?

Заголовочность файла не может зависеть от его расширения.

Цитата Сообщение от vlisp Посмотреть сообщение
поэтому и придуман костыль set as main file
Не очень понятно, как связаны заголовочные файлы и «трактовать этот файл как главный». Если я создаю библиотеку с функциями, то там вообще нет главного файла.
0
 Аватар для coderxx
469 / 183 / 16
Регистрация: 25.02.2012
Сообщений: 418
Записей в блоге: 2
21.12.2018, 20:05  [ТС]
Обновил
Исправлен пункт меню Delete Control, ещё заполнение Intellisense
0
 Аватар для ufopera
2 / 2 / 3
Регистрация: 11.04.2014
Сообщений: 12
21.12.2018, 21:51
VisualFBEditor 1.0.2.1250

Нужно убрать\запретить автоматическое скрытие боковых панелей (мешает и раздражает).
Закрепить их тоже не получилось.

Попробуйте например, изменить любое свойства контрола из соответствующий панели(properties).
0
 Аватар для vlisp
1064 / 985 / 153
Регистрация: 10.08.2015
Сообщений: 5,365
22.12.2018, 01:05
Цитата Сообщение от Замабувараев Посмотреть сообщение
Вот цитата
ввиду ограничений языка с++ заголовочные файлы нельзя кидать куда попало, а в бейсике можно. К тому же в с++ хедеры работают в паре с исходниками, которые могут быть прекомпилированы в объектный файл, вбейские такого нет, там просто код одного файла вставляется в код другого
0
 Аватар для coderxx
469 / 183 / 16
Регистрация: 25.02.2012
Сообщений: 418
Записей в блоге: 2
22.12.2018, 08:11  [ТС]
Цитата Сообщение от vlisp Посмотреть сообщение
и пожалуйста, прикрути подсказки к кнопкам
К каким кнопкам говорите прикрутить подсказки? Сейчас сделал для кнопки Тооlbar'а (в редакторе тоже), и остальным контролам библиотеки или вы имеете ввиду другие кнопки редактора.

Цитата Сообщение от ufopera Посмотреть сообщение
Нужно убрать\запретить автоматическое скрытие боковых панелей (мешает и раздражает).
Закрепить их тоже не получилось.
Закрепить можно нажав два раза на вкладке, или сперва нажмите один раз, вкладка откроется, потом на вкладке нажмите два раза, вкладка закрепиться.

Цитата Сообщение от ufopera Посмотреть сообщение
Попробуйте например, изменить любое свойства контрола из соответствующий панели(properties).
Это исправил, ещё не обновил.
0
Эксперт по электронике
6583 / 3210 / 335
Регистрация: 28.10.2011
Сообщений: 12,531
Записей в блоге: 7
22.12.2018, 14:14
Цитата Сообщение от vlisp Посмотреть сообщение
ввиду ограничений языка с++ заголовочные файлы нельзя кидать куда попало, а в бейсике можно.
Поясните. Пока не совсем понятно что этим хотели сказать.

Цитата Сообщение от vlisp Посмотреть сообщение
К тому же в с++ хедеры работают в паре с исходниками, которые могут быть прекомпилированы в объектный файл
Си компилятор может собирать каждый исходный файл в отдельности и поэтому нужны заголовочные файлы чтобы сообщить компилятору о функциях, структурах, константах и т. д. из других исходных файлов.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
22.12.2018, 22:27
Цитата Сообщение от vlisp Посмотреть сообщение
ввиду ограничений языка с++ заголовочные файлы нельзя кидать куда попало, а в бейсике можно
И что, от этого в бейсике он перестаёт быть заголовочным?
Цитата Сообщение от vlisp Посмотреть сообщение
К тому же в с++ хедеры работают в паре с исходниками, которые могут быть прекомпилированы в объектный файл
Значит, если файл не скомпилировать — то он не заголовочный?
0
 Аватар для coderxx
469 / 183 / 16
Регистрация: 25.02.2012
Сообщений: 418
Записей в блоге: 2
23.12.2018, 08:25  [ТС]
Версия 1.0.2.1343
- Исправлен: Вырезать, Вставить в дизайнере.
- Исправлен: Подсказки контролов и тулбара.
- Исправлен: Скрытие панель свойств при начале ввода значений свойств (не закрепленном режиме).
- Добавлен: Опция компиляции GUI (раньше указывалось через '#Compile -s gui)
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
23.12.2018, 11:14
А что делают исполняемые файлы в исходном коде? Их там быть не должно.
Все скомпилированные файлы следует помещать в Release, это же не исходный код.
0
 Аватар для coderxx
469 / 183 / 16
Регистрация: 25.02.2012
Сообщений: 418
Записей в блоге: 2
23.12.2018, 11:23  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
А что делают исполняемые файлы в исходном коде? Их там быть не должно.
Все скомпилированные файлы следует помещать в Release, это же не исходный код.
Удалил файлов библиотеки.
0
 Аватар для vlisp
1064 / 985 / 153
Регистрация: 10.08.2015
Сообщений: 5,365
23.12.2018, 11:35
Цитата Сообщение от Замабувараев Посмотреть сообщение
Все скомпилированные файлы следует помещать в Release
Да подожди ты, тут до конфигураций сборок еще не дошло.
Похоже редактор не ждет завершения скомпилированного приложения
И у меня почему-то не работает обработчик кнопки на форме
PureBasic
1
2
3
4
Private Sub Form1.CommandButton1_ActiveControlChange(ByRef Sender As Control)
    Print "Hello, cosole"
    MsgBox ("Hello")
End Sub
0
 Аватар для coderxx
469 / 183 / 16
Регистрация: 25.02.2012
Сообщений: 418
Записей в блоге: 2
23.12.2018, 11:54  [ТС]
Цитата Сообщение от vlisp Посмотреть сообщение
Похоже редактор не ждет завершения скомпилированного приложения
Редактор ждет завершения, почему говорите не ждет?

Цитата Сообщение от vlisp Посмотреть сообщение
И у меня почему-то не работает обработчик кнопки на форме
Сейчас ActiveControlChange работает только в форме. Это вызывается когда активный элемент измениться.
Вы выберите другое событие, например Click.

Добавлено через 11 минут
Цитата Сообщение от coderxx Посмотреть сообщение
Сообщение от vlisp
Похоже редактор не ждет завершения скомпилированного приложения
Редактор ждет завершения, почему говорите не ждет?
Это в каком смысле не ждет: не ждет завершения компиляции или не ждет завершения запущенного приложения?
0
 Аватар для vlisp
1064 / 985 / 153
Регистрация: 10.08.2015
Сообщений: 5,365
23.12.2018, 13:48
Цитата Сообщение от coderxx Посмотреть сообщение
Вы выберите другое событие, например Click.
Я дважды кликнул на кнопку и мне редактор создал эту процедуру. Это баг или фича?

Добавлено через 47 секунд
Цитата Сообщение от coderxx Посмотреть сообщение
Это в каком смысле не ждет: не ждет завершения компиляции или не ждет завершения запущенного приложения?
не ждет завершения работы приложения, сразу пишет приложение завершено с кодом 0
0
 Аватар для coderxx
469 / 183 / 16
Регистрация: 25.02.2012
Сообщений: 418
Записей в блоге: 2
23.12.2018, 14:12  [ТС]
Цитата Сообщение от vlisp Посмотреть сообщение
Я дважды кликнул на кнопку и мне редактор создал эту процедуру. Это баг или фича?
Редактор создал первую событию по алфавиту. Ещё можно: сперва выбрать элемент, потом открыть раскрывающийся список и там выбрать нужную событию. Или на правом панеле Событий нажат два раза по нужному событию. ActiveControlChange сейчас работает только на формах, но ещё в будущим буду добавить к остальным контролам, это событие происходит, когда фокус у дочерних элементов этого контрола измениться.

Цитата Сообщение от vlisp Посмотреть сообщение
не ждет завершения работы приложения, сразу пишет приложение завершено с кодом 0
Да, сейчас обнаружил, это только в кнопках Run и Compile/Run (исправим).
0
 Аватар для vlisp
1064 / 985 / 153
Регистрация: 10.08.2015
Сообщений: 5,365
23.12.2018, 15:57
Цитата Сообщение от coderxx Посмотреть сообщение
Редактор создал первую событию по алфавиту.
Что стоит прописать создание правильного события по двойному клику на контрол
Пытался выбрать onclick для кнопки - редактор вылетел, перезагрузил редактор, все создалось...
0
 Аватар для coderxx
469 / 183 / 16
Регистрация: 25.02.2012
Сообщений: 418
Записей в блоге: 2
23.12.2018, 16:34  [ТС]
Цитата Сообщение от vlisp Посмотреть сообщение
Что стоит прописать создание правильного события по двойному клику на контрол
Тогда удалю события ActiveControlChange, все на месте встанет, для CommandButton - Click, для TextBox - Change, .. как в Visual Basic. ActiveControlChange переношу на форму.

Цитата Сообщение от vlisp Посмотреть сообщение
Пытался выбрать onclick для кнопки - редактор вылетел, перезагрузил редактор, все создалось...
Ещё не уловил.
0
Эксперт по электронике
6583 / 3210 / 335
Регистрация: 28.10.2011
Сообщений: 12,531
Записей в блоге: 7
23.12.2018, 16:43
Цитата Сообщение от coderxx Посмотреть сообщение
Ещё не уловил
Добавьте библиотеку обработки ошибок чтобы знать в какой строке исходника произошла ошибка. Типа такой. https://www.purebasic.com/docu... index.html
0
 Аватар для coderxx
469 / 183 / 16
Регистрация: 25.02.2012
Сообщений: 418
Записей в блоге: 2
23.12.2018, 16:59  [ТС]
Я тоже могу выследить ошибку с помощью gdb или нумерацией с помощью своей программы, но у меня ещё не вылетел.
0
Эксперт по электронике
6583 / 3210 / 335
Регистрация: 28.10.2011
Сообщений: 12,531
Записей в блоге: 7
23.12.2018, 17:33
Информация о номерах строк добавляется в релизный исполняемый файл и в случае ошибки, отображается окно с номером строки и файлом в котором она произошла и типом ошибки. Тогда сразу было понятно где искать ошибку.
Миниатюры
FreeBasic. MyFbFramework + VisualFBEditor  
Вложения
Тип файла: zip OnError.zip (4.6 Кб, 4 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.12.2018, 17:33
Помогаю со студенческими работами здесь

FreeBASIC и сети
Здравствуй, форум. Всё дело в том, что есть одни сетевые функции, и для этих функций Я решил написать обёртку. Чтобы не возиться созданием...

Немного о FreeBasic
Чаще всего при начальном использовании какого-то языка , люди стараются выбрать простую, неприхотливую среду. Для FreeBasic можно...

Задача на графику в FreeBASIC
Помогите с задача по графике в FreeBASIC Построить совокупность n равных отрезков, центры которых лежат в центре экрана, а концы - на...

FreeBasic круги на воде
Очень интересный код имитирующий распространение кругов на воде. Описание алгоритма тут Что меня удивило, обычно когда идет речь о...

Синтаксические особенности FreeBasic
По совету Stabud создаю тему, в которой будем обсуждать семантику и синтаксис диалекта FreeBasic. Вот на такую программу я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru