powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / HTML-Интерфейс для программы, написанной на FoxPro
8 сообщений из 8, страница 1 из 1
HTML-Интерфейс для программы, написанной на FoxPro
    #36997449
maple4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто чего скажет по поводу следующего проекта с использованием web-контрола?
Генератор Интерфейса 1.0.0
Для чего?
Формирование HTML-Интерфейса для программы, написанной на FoxPro .
Зачем?
Без сложных ухищрений FoxPro создает только "стандартный" интерфейс, который в настоящий момент выглядит несколько аскетично.
Программа может предоставить интерфейс "как-бы" в стиле web - без установки каких-либо допополнительных сервисов (например IIS или сервера Апач :) ).

Что дает web-интерфейс?
Естественно (ради этого все и задумывалось), гораздо большие возможности по графическому оформлению.
Используя Javascript, можно добиться таких спецэффектов, что дух захватывает - плавающие разделы, напоминания, часы, календари и т.д. - все зависит от знания этого самого javascript.
Простое размещение видео (+ роликов с youtube), флеш-анимации, файлов мультимедиа непосредственно на форме - еще один плюс web-интерфейса.

Где еще можно применить данную разработку?
Программа подходит для создания пошаговых игр (и все это - средствами FoxPro).
Или, например, "электронных" книг с реакцией на действия пользователя (по сути - получается все та же пошаговая игра :).
Или, еще вариант - загрузчиков/инсталляторов с CD/DVD-ROM.
И вот еще...
Применяя javascript ВМЕСТЕ с FoxPro (при обработке может использоваться код FoxPro, а не только javascript - представьте, какие открываются горизонты), можно создавать код, срабатывающий по какому-либо событию (например, после нажатия кнопки, или в момент времени) и не требующий переформирования всей страницы.

Прямая ссылка на zip-архив (~ 450 кб, исходники + 7za.exe)
http://www.maple4.ru/a_downloads_for_maple4_ru/m4gi.zip
...
Рейтинг: 0 / 0
HTML-Интерфейс для программы, написанной на FoxPro
    #36997492
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maple4, пока не могу оценить, насколько эта вещь ценная, хочу отметить другое. Среди программеров не встречал подобного энтузиазма и профессионализма, потому приветствую любые разработки от Maple4 и прошу не останавливаться на достигнутом.
...
Рейтинг: 0 / 0
HTML-Интерфейс для программы, написанной на FoxPro
    #37001521
maple4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю по программе...
По сути это некий FrameWork для формирования интерфейса, отличного от того, что может дать FoxPro.
Меню, панели, плавающие блоки и разделы, анимация, flash и видео и т.д., в общем - все то, что можно увидеть в Интернет-е, можно с успехом применить и в данной разработке.
Получается как бы сайт (все формы основаны на HTML-страницах), но под управлением FoxPro.

Отсюда вывод - необходимы некоторые знания HTML.
Ну и некоторые понятия о ASP или PHP - принципы работы программы с ними несколько схож (да что там говорить, с них слизан).

Например, размещение даты на странице:
Текущие дата: <b><fp>&datetime()</fp></b>

То же, с кодом:
Текущие дата: <fp>local ii
ii=date()
return ii</fp>

Переход к странице, находящейся в рабочем каталоге
<a href="<action>return '/m4gi_gl_form.html?session=_vbrtdgd&uroven=1'</action>">I уровень</a>
или
<a href="<action>&'/m4gi_gl_form.html?session=_vbrtdgd&uroven=1'</action>">I уровень</a>

Закрытие формы ссылкой
<a href="<action>this_form.close</action>">Закрыть окно</a>

Задание реакции в форме - с открытием другой gi-формы:
<form name="test_form_name" id="test_form_id" method="post" action="<action>return '/2x2/m4gi_2x2_start.html'</action>" onsubmit="return false;">
<br><b>Name?</b>
<br><input type="text" name="fio" id="text_id" value="" /><br/>
<br><textarea name="textarea_notes" id="textarea_id" cols="20" rows="5" ></textarea><br/>
</form>
<br>
<input type="button" value="Отправить" onclick="document.forms['test_form_name'].submit();">
и т.д.

В архиве находится файл readme.txt с полным описанием принципов работы.
А в каталоге main и 2x2 - HTML-формы проекта.

Zip-архив:
http://www.maple4.ru/a_downloads_for_maple4_ru/m4gi.zip

Краткое описание примера:
Запустите m4gi.exe
1. Авторизация.
Естественно, впервые запуская программу, нужно добавить пользователя.

Для чего нужно нажать на ссылку внизу:
Перейти к добавлению нового пользователя

После чего откроется форма добавления - нужно будет ввести желаемое имя и пароль (пароль - ДВА раза, один и тот же).
Далее - Добавить и войти, после чего откроется окно со списком приложений.
При входе в программу во второй раз - можно просто ввести логин и пароль.

2. Выбор приложения.
На экране - список установленных приложений, из которых рабочее - пока только 2x2 - "Проверка на знание таблицы умножения"
Кликнув по ссылке, Вы сделаете его активным (тут же отобразится поле со скроллингом описания приложения и список рекордов именно по этому приложению. В дальнейшем, при успешном выполнении задания, здесь будут отображено десять последних рекордов).
Кликая еще раз по той же ссылке - "Проверка на знание таблицы умножения" - Вы запустите приложение 2x2, и откроется выбор уровня.

3. Выбор уровня.
Окно выбора уровня сложности с описанием принципов поощрения и наказания.
Основные очки даются за правильность решения, дополнительные - за скорость, и случайные - за правильность выполнения ВСЕГО задания.
Кликнув по I, II или III - запустите задание 1, 2 или 3 уровня.

4. Окно задания.
В зависимости от уровня, будет последовательно показано 5,10 или 15 случайных комбинаций произведений из таблицы умножения.
Введя ответ по каждой строке ( и нажав кнопку "Ответить"), на экране появится окно со сводкой о выполненном задании.

5. Результат за игру.
Здесь будет показано, сколько очков и денег было дано за правильное выполнение, или наоборот - сколько Черных меток за НЕПРАВИЛЬНОЕ выполнение.
Нажав на кнопку "Закрыть" - появится окно выполненного задания.

6. Окно выполненного задания.
Здесь будет отображен список произведений с ответами и ПРАВИЛЬНЫМИ ответами, для того, что бы понять, где была совершена ошибка (если, была).
Отсюда можно попытаться выполнить задание более высокого уровня или перейти на начальную страницу "Выбор приложения".

7. Обратите внимание - Ваш результат тут же отображается в десятке рекордов.
На заработанные деньги можно купить чего-нибудь в магазине (ссылка "к Магазину"), форма открывается, но товаров пока не подвезли :) .
...
Рейтинг: 0 / 0
HTML-Интерфейс для программы, написанной на FoxPro
    #37005507
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maple4

Хотелось бы узнать ваше мнение о проекте HTMLayout . Возможно проще прикрутить его к фоксу, чем создавать собственный велосипед.
...
Рейтинг: 0 / 0
HTML-Интерфейс для программы, написанной на FoxPro
    #37006346
maple4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dag,

Эх, этож сколько ж проектов заглохло только потому, что они объявлялись велосипедами... (я не про свои проекты, в общем)

В HTMLayout, как мне кажется, упор делается на манипуляции с DOM-элементами (и стилями CSS).
Меню, панели, блоки и т.д.- стандартные блоки - Которые надо предварительно разместить в HTML-файле.
Управление - WTL/MFC/Win32 C#, .NET
----------------

В m4gi - создается html-страница (а еще лучше - сразу offline-минисайт, какими инструментами - не скажу, а то будет уже самореклама ), а потом в гиперссылках (<a href="">) задается реакция, код которой (обычный код Visual FoxPro) можно разместить непосредственно в HTML-странице.

Простейший пример - в ссылке задаются значения public-переменным:
<a href="<action>
_m4gi_type_app='2x2'
_m4gi_type_lg=1
</action>">Присвоить значения переменным 'по умолчанию'</a>
После обработки клика по данной ссылке, текущая страница будет переформирована с уже с новыми значениями (соответственно, ее вид может из-за этого кардинально измениться).

В примере, m4gi_start.html, задание значения переменной _m4gi_type определяет вид окна - авторизация или добавление нового пользователя.
В m4gi - большая гибкость. Одно то, что применяется код FoxPro (без компиляций, сборок и т.д., т.е. на лету), считаю огромным плюсом (скорее, это плюс самого foxpro :) . FoxPro forever ).

Для примера работы "велосипеда":
Код страницы авторизации (не используются стили - пример СПЕЦИАЛЬНО создавался на голом HTML).

автор<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
<title>Страница Интерфейса</title>
<META HTTP-EQUIV="Keywords" CONTENT="Генератор Интерфейса">
<META name="Author" content="Igor Croschin">
<META name=keywords content="">
<META name=description content="maple4.ru">

<script type="text/javascript">
var htmlapp = null;
</script>

<!--m4giproperties <load>
* данный код срабатывает перед формированием страницы
* обычно тут размещается код, результат которого требуется для построения страницы:
* открытие/создание таблиц, инициализация данных и т.д.

this_form.caption="Кто тут?" && задание заголовка формы
IF VARTYPE(_m4gi_name)<>"C" && переменная - имя пользователя
PUBLIC _m4gi_name
_m4gi_name="" && ""-никто не выбран, иначе - будет проставлено в поле имени
ENDIF

IF VARTYPE(_m4gi_type)<>"N" && авторизация или добавление
PUBLIC _m4gi_type
_m4gi_type=0 && 0-предполагается авторизация; 1-предполагается добавление
ENDIF

if not used("_m4gi_korzina") && таблица корзины
select 0
create cursor _m4gi_korzina (id_ n(15),name_ c(50),id_predmet n(15))
endif

if not used("_m4gi_magazin") && таблица товаров магазина
local ims
ims = m4gi_file_path_default("\_m4gi_magazin.dbf")
if m4gi_file(ims)
select 0
use (ims)
else
select 0
create table (ims) (id_predmet n(15),kratkoe c(200), polnoe m, cena n(15), img_ c(200))
use (ims)
endif

endif

if not used("_m4gi_trofei") && таблица принадлежащих пользователю товаров
ims = m4gi_file_path_default("\_m4gi_trofei.dbf")
if m4gi_file(ims)
select 0
use (ims)
else
select 0
create table (ims) (id_ n(15),id_predmet n(15),date_ t)
use (ims)
endif

endif

select * from _m4gi_magazin into cursor _m4gi_magazin_temp order by cena

IF USED("_m4gi_names")
SELECT _m4gi_names
USE
ENDIF

IF m4gi_file_default("_m4gi_names.dbf") && таблица пользователей
SELECT 0
USE (m4gi_file_path_default("_m4gi_names.dbf"))
ELSE
SELECT 0
CREATE TABLE m4gi_file_path_default("_m4gi_names.dbf") (id_ N(15), name_ c(50), pwd_ c(20), money_ n(15))
ENDIF

</load>

<init>
* данный код срабатывает ПОСЛЕ формирования страницы
* здесь удобно объявлять таймеры или обновлять страницу с помощью innerHTML

THIS_FORM.AddObject("_timer1","cmoitimer")
local stro
TEXT TO stro TEXTMERGE NOSHOW
if left(this_form.caption,3)=="Кто" && срабатывание только на этой форме
local jj,zz
jj=ttoc(datetime())
this_form.caption="Кто тут? ("+jj+")"
m4gi_set_inner(this_form,"timestr",jj) && установка значения по id=timestr
else
this_form._timer1.enabled=.f. && таймер работает только при .t.
endif
ENDTEXT
this_form._timer1.textproc=stro
this_form._timer1.post=post
this_form._timer1.this_form=this_form
this_form._timer1.interval=100

</init>
-->

</HEAD>

<body oncontextmenu="return false">

<br>
<SCRIPT LANGUAGE="JavaScript" SRC="fly.js">
</script>
<p align=right>Текущие Дата/время: <b id="timestr"><fp>&datetime()</fp></b></p>
<br>
<form name="main_form" id="main_form_id1" method="post" action="<action>return m4gi_exec('/prg_m4gi_avtoriz.prg',post,this_form)</action>" onsubmit="return false;">

<fp>
LOCAL stro
stro=""
DO CASE
CASE _m4gi_type=0 && в зависимости от значения, будет сформирована форма авторизации или добавления
TEXT TO stro TEXTMERGE NOSHOW
Необходимо авторизоваться (что-бы понять, а кто, собственно, здесь находится).<br><br>
<br>Введите имя: <input type="text" name="text_name" id="text_id1" value="<<_m4gi_name>>" />
<br>Введите пароль: <input type="password" name="text_pwd" id="text_id2" value="" />
ENDTEXT

CASE _m4gi_type=1
TEXT TO stro TEXTMERGE NOSHOW
Добавление нового пользователя.<br><br>
<br>Введите имя: <input type="text" name="text_name" id="text_id3" value="<<_m4gi_name>>" />
<br>Отнеситесь к этому внимательно! Восстановление пароля "невозможно"!<br><br>Введите пароль: <input type="password" name="text_pwd1" id="text_id4" value="" />
<br>Введите пароль еще раз (для проверки): <input type="password" name="text_pwd2" id="text_id5" value="" />
ENDTEXT
ENDCASE
return stro

</fp>
</form>
<input type="button" value="<fp>&iif(_m4gi_type=0,"Войти","Добавить и войти")</fp>" onclick="document.forms['main_form'].submit();">
<fp>&iif(_m4gi_type=0,[<p align=right><i><font size=-1><a href="<action>_m4gi_type=1{{_m4gi_name=''</action>">Перейти к добавлению нового пользователя</a></font></i></p>],;
[<p align=right><i><font size=-2><br><br><a href="<action>_m4gi_type=0{{_m4gi_name=''</action>">Отказаться от добавления нового пользователя</a></font></i></p>])</fp>

<br>
<a onclick="<scriptaction>
wait window "Добрый день! Сегодня "+dtoc(datetime()) nowait
</scriptaction>" href="javascript:void(0)">Кликните! Пример вывода в окне Wait приветствия с текущей датой</a>

</body>
</html>
...
Рейтинг: 0 / 0
HTML-Интерфейс для программы, написанной на FoxPro
    #37034021
maple4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Довольно много чего поменял в тестовом проекте m4GI

1. Теперь тестовый проект (gi-формы) использует стили. Соответственно,
и вид - совершенно другой.
Обратите внимание - для игры 2x2 используется свой собственный,
особенный стиль.

2. Появилась возможность добавлять текстовые многострочные сообщения,
причем текст редактируется в WYSIWYG-режиме (т.е. например,
как во FrontPage. Или Word-e).
Есть кнопки управления начертанием шрифта, управления цветом и фоном,
видом нумерованного списка. Остальные - не рассматривал, но,
при необходимости, можно добавить нужные кнопки с нужной реакцией
(поиск в google по "execCommand").
Ну, значит, такой вот простенький WYSIWYG-редактор :)
Код - смесь JavaScript, FoxPro (в конструкции , отвечающей за
реакцию при добавлении сообщения. Обратите внимание - при попытке
добавить пустое сообщение "вылезет" окно с предупреждением) и
языка разметки HTML.

3. Добавил страницу отображения всех сообщений с возможностью
листания (по 10 сообщений на страницу).
Реализуется кодом FoxPro (в конструкциях ...) и языком разметки
HTML (сначала выводится навигатор по страницам, потом - список
сообщений на страницу в HTML-таблице)

4. Добавил страницу с отображением курсов валют на текущее число
(cbr.ru) и событий за число в истории (wikipedia.org)
По сути - грабберы, т.е. нет никаких xml-файлов (хотя, например,
для cbr.ru такой файл, скорее всего, есть).



Дистрибутив:
http://www.maple4.ru/a_downloads_for_maple4_ru/m4gi.zip ~650 Кб.
Дистрибутив содержит prg-файлы и формы. Для запуска требуется
установленный FoxPro 9!
Рекомендую ИЗ ОКНА FoxPro запустить готовый m4gi.exe или
скомпилировать его из проекта.
...
Рейтинг: 0 / 0
HTML-Интерфейс для программы, написанной на FoxPro
    #37034354
Sea_Cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maple4,
Как говорил когда-то один преподаватель - непонятно, но здорово !
Не могу пока понять, куда это можно применить для практических задач. Может у кого-нибудь есть свежие идеи ?
И насколько трудоемка разработка и отладка такого интерфейса по сравнению с обычными формами?
...
Рейтинг: 0 / 0
HTML-Интерфейс для программы, написанной на FoxPro
    #37036611
maple4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sea_Cat,

Насчет трудоемкости.

Для начала предлагаю сделать только ОДНУ начальную форму для УЖЕ существующей, основной программы.
В форме можно разместить приветствие, контакты, видео (или - код видео на youtube) и т.д.
И главное - не забыть про ссылку для для запуска основной программы (иначе, остальное теряет смысл :) ).
Для gi-формы (в Init) МОЖНО убрать заголовок, кнопки свернуть и развернуть, в общем все, что может навести о мысли, что используется web-контрол:
this_form.titlebar=0
this_form.minbutton=.f.
this_form.maxbutton=.f.
this_form.controlbox=.f.
this_form.WindowState=2
(правда, в этом случае не забудьте разместить на форме кнопку для ее закрытия - с кодом this_form.close)

После того, как пример будет работать, можно сделать НЕСКОЛЬКО страниц, сформированных в один мини-сайт с разделами - приветствием, контактами, видео и т.д.

Следующий шаг - попробовать реализовать часть функциональности основной программы в gi-формах.
Можно в существующем мини-сайте вывести, например, справочники для просмотра (это могут быть таблицы, курсоры баз данных).
Чуть разобравшись - рядом, на каждой строке - сформировать ссылку для запуска FoxPro-формы(!) для редактирования этой строки (обычно, все справочники имеют некоторый id, по нему и определяется, ЧТО должно редактироваться).
Ну и, совсем НЕОБЯЗАТЕЛЬНЫЙ и НЕНУЖНЫЙ шаг - отказаться вообще от форм FoxPro.
Ведь основная идея - не в отказе от форм FoxPro, а в расширении функциональности программы. Почему же не добиться этого, комбинируя различные способы программирования?

Поля ввода, таблицы, html-формы, ссылки и т.д. - все создается языком разметки HTML.
Естественно, разработка "несколько" отличается.
Надо немного знать о PHP или ASP - параметры формам передаются, в основном, ссылками (как вариант - глобальными переменными).

Как сделал я:
1. Сделал несколько форм на чистом HTML - без применения стилей (мне так было проще).
2. Сделал off-сайт со всеми страницами (ну да, дальше пошла реклама - сделал это своей же разработкой - Maple4 Site Creator-ом).
Почему? Разделы и меню строятся автоматически + возможность применения FoxPro для автоматизации.
3. Разместил в теле страниц код HTML из пункта 1 (или - разместил код для автоматической загрузки данных из пункта 1).
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / HTML-Интерфейс для программы, написанной на FoxPro
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]