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

FreeBasic. MyFbFramework + VisualFBEditor

14.07.2018, 20:36. Показов 24896. Ответов 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
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,413
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
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,012
Записей в блоге: 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
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,413
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
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,413
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
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,413
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
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,012
Записей в блоге: 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
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,012
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
сукцессия 6. Питон реализация энилоджиковской модели, картинка про Центральную часть будущей модели
anaschu 26.06.2026
Етить. ИИ мне на основе моего старого файла R создал вот эту вот хмерь на пайтоне. Это уже новая модель, модель сукцессии грибной. потоки фосфора, азота. Углерода. 5 видов организмов. Я даже. . .
Как замкнутый ядерный цикл решит проблему недостатки фосфора? Био миграция фосфора со дна океана
anaschu 26.06.2026
Биологический лифт: Концепция подъема фосфора со дна океана с помощью ЗЯТЦ Предлагаю на обсуждение альтернативу тяжелому промышленному бурению океанического дна. Вместо сложной инженерии мы можем. . .
сукцессия 5
anaschu 26.06.2026
ПЛАН РАЗРАБОТКИ математической модели сукцессии микоризных систем Переход AM → EcM (Endo + ErM) · Шумилов А. С. · ИФХиБПП РАН · Пущино · 2026 . . .
сукцессия 4
anaschu 25.06.2026
Более детализированный план разработки План доработки модели динамики микоризных симбиозов (EcM с гистерезисом) Цель: Реализовать логику переключения между эрикоидным (ErM) и эктомикоризным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru