|
HTML-Интерфейс для программы, написанной на FoxPro
|
|||
---|---|---|---|
#18+
Кто чего скажет по поводу следующего проекта с использованием 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2010, 15:33 |
|
HTML-Интерфейс для программы, написанной на FoxPro
|
|||
---|---|---|---|
#18+
maple4, пока не могу оценить, насколько эта вещь ценная, хочу отметить другое. Среди программеров не встречал подобного энтузиазма и профессионализма, потому приветствую любые разработки от Maple4 и прошу не останавливаться на достигнутом. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2010, 15:47 |
|
HTML-Интерфейс для программы, написанной на FoxPro
|
|||
---|---|---|---|
#18+
Добавлю по программе... По сути это некий 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. Обратите внимание - Ваш результат тут же отображается в десятке рекордов. На заработанные деньги можно купить чего-нибудь в магазине (ссылка "к Магазину"), форма открывается, но товаров пока не подвезли :) . ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2010, 11:39 |
|
HTML-Интерфейс для программы, написанной на FoxPro
|
|||
---|---|---|---|
#18+
maple4 Хотелось бы узнать ваше мнение о проекте HTMLayout . Возможно проще прикрутить его к фоксу, чем создавать собственный велосипед. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2010, 21:15 |
|
HTML-Интерфейс для программы, написанной на FoxPro
|
|||
---|---|---|---|
#18+
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> ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2010, 10:47 |
|
HTML-Интерфейс для программы, написанной на FoxPro
|
|||
---|---|---|---|
#18+
Довольно много чего поменял в тестовом проекте 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 или скомпилировать его из проекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2010, 15:01 |
|
HTML-Интерфейс для программы, написанной на FoxPro
|
|||
---|---|---|---|
#18+
maple4, Как говорил когда-то один преподаватель - непонятно, но здорово ! Не могу пока понять, куда это можно применить для практических задач. Может у кого-нибудь есть свежие идеи ? И насколько трудоемка разработка и отладка такого интерфейса по сравнению с обычными формами? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2010, 17:06 |
|
HTML-Интерфейс для программы, написанной на FoxPro
|
|||
---|---|---|---|
#18+
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). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2010, 10:21 |
|
|
start [/forum/search_topic.php?author=retard2&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 448ms |
total: | 596ms |
0 / 0 |