On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 13.12.10 18:13. Заголовок: Переход от xhabour консольной программы к gui-интерфейсу?


Прошу помощи. Успешно перевел достаточно большой проект из Клиппера в консольный xharbour.(3 мгб текста,1800 процедур). Пользовался замечательной методикой по HBMAKE от Верченко Андрея("Перенос проекта с Clipper на xHarbour"). Теперь собрался с силами переделать мои 207 окошек и всяких tbrowse на GUI-интерфейс, но обнаружил провал в методике. Какие нулевые шаги необходимо сделать? Неужели бросать все приятные наработки с hbmake и писать для компиляции грандиозный бат.файл из среды Григория Филатова. (Да, HBmake сильно расслабляет - никаких проблем ни с какими библиотеками - пишешь и пишешь в клиппере свои дела).
Несколько смущающих меня аспектов GUI (хочется побрюзжать по стариковски, 25 лет в Клиппере дают себя знать):
Если переходить на minigui, то будут ли работать функции из CT2(манипуляции с файлами и обработка строковых данных). и вообще там компилятор Harbour, а не xHarbour.
А фиксация размера окошек в пикселях просто повергает в панику - у пользователя отнимают возможность легким телодвижением изменить размеры шрифта и окна - под свои препочтения. Я понимаю, что теперь на экран можно втиснуть не 25, а скажем, 80 строк. но одновременнно надо выдавать каждому пользователю по микроскопу. А изменять размеры шрифта в главном меню - это целая тема на форуме. Все, брюзжания закончил.
Очень надеюсь на ответ Верченко Андрея.



Спасибо: 0 
Цитата Ответить
Ответов - 57 , стр: 1 2 3 All [только новые]





Пост N: 28
Зарегистрирован: 03.01.10
ссылка на сообщение  Отправлено: 21.12.10 12:26. Заголовок: картинка


ссылка на картинку gtwvt здесь. прошу прощение за задержку http://clip2net.com/s/Gcw7<\/u><\/a>

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1604
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.12.10 15:00. Заголовок: Zakrzevky пишет: сс..


Zakrzevky пишет:

 цитата:
ссылка на картинку gtwvt здесь.


Увидел. Спасибо.

А можно посмотреть исходный текст или пример по:
Сделал процедуру начальной установки экрана, настраиваемую посредством конфигурационного файла почти для любого типа монитора методом тыка , путем задания параметов моды экрана и(или) выбора терминального шрифта.Сделал попутно настройку палитры.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 29
Зарегистрирован: 03.01.10
ссылка на сообщение  Отправлено: 25.12.10 01:17. Заголовок: код


все настройки в mem-файле в виде строковых переменных, которые я методом тыка выставляю
через определенную внешнюю прогу настройки, потом запускаем приложение и смотрим что получилось на экране (параметры колонки строки отображаются в титуле оосновного окна gtwvt


головной модуль
.......
// Загрузка файла конфигурации для install
restore from config additive

// Настройка экрана

SETMODE(250,80) // чтоб "передернуть" экран причем нереальным размером, по другому жо..
DispScreen(@x,@y) // растяжка максимально экрана для gtwvt
IF x=0.AND.y=0 // x y параметры SETMODE ( беру из mem напр K_SCR="100,33")
SETMODE(250,80)
// в заголовке рисую что получилось X / Y b и для отладкиэкрана методом тыка хорошо
ELSE
SETMODE(x,y)
ENDIF
SETCOLOR("12/0") // так для понта
CLEAR SCREEN
// в заголовке рисую что получилось X / Y b и для отладкиэкрана методом тыка хорошо
hb_gtInfo(HB_GTI_WINTITLE, HB_OEMTOANSI( ARM_NAME +" Терминал ")+;
HB_OEMTOANSI( "- Клиент ")+;
AllTrim(Str(MaxCol()))+"/"+Alltrim(Str(Maxrow())))
..........................
// окно для терминала gtwvt
Procedure DispScreen(x,y)
LOCAL h,w,n
LOCAL cFontName := "Terminal" // рекомендую Lucida Console особенно в HB2.1
// K_SCR уже описал K_FONT типа того K_FONT="Lucida Console,22,11"
// в настройке можно комбинировать задавать только размер экрана или фонта или и того и другого
// лучше получается когда K_SCR не задаем а комбинируе только с фонтом 22,10 18.9 и т. п.
Memvar K_SCR,K_FONT // из config.mem
K_SCR := ALLTRIM(K_SCR)
IF !(Left(K_FONT,1) $ "0123456789") проверка на цифру
IF (n := AT(",",K_FONT)) >0
cFontName := Left(K_FONT,n-1)
K_FONT := Substr(K_FONT,n+1)
ENDIF
ENDIF

n := AT(",",K_SCR)

IF n =0
x := 250 ; y := 80
ELSE
x := VAL(Left(K_SCR,n-1))
y:= VAL(Substr(K_SCR,n+1))
ENDIF
K_FONT := ALLTRIM(K_FONT)

n := AT(",",K_FONT)

IF n =0
h := 0 ; w := 0
ELSE
h := VAL(Left(K_FONT,n-1))
w := VAL(Substr(K_FONT,n+1))
ENDIF


IF !EMPTY(K_SCR)
hb_gtInfo( HB_GTI_SCREENWIDTH, hb_gtInfo( HB_GTI_DESKTOPWIDTH ) )
hb_gtInfo( HB_GTI_SCREENHEIGHT, hb_gtInfo( HB_GTI_DESKTOPHEIGHT ) - 50 )
ENDIF

hb_gtInfo( HB_GTI_CODEPAGE, 255 )
hb_gtInfo(HB_GTI_FONTNAME,cFontName)
IF w > 0
hb_gtInfo(HB_GTI_FONTWIDTH,w)
ENDIF

IF h > 0
hb_gtInfo(HB_GTI_FONTSIZE, h)
ENDIF

IF Upper(cFontName) != "TERMINAL"
hb_gtInfo( HB_GTI_FONTQUALITY,HB_GTI_FONTQ_HIGH)
hb_gtInfo( HB_GTI_FONTWEIGHT,3)
ENDIF

IF !EMPTY(K_SCR)
hb_gtInfo( HB_GTI_SCREENWIDTH, hb_gtInfo( HB_GTI_DESKTOPWIDTH ) )
hb_gtInfo( HB_GTI_SCREENHEIGHT, hb_gtInfo( HB_GTI_DESKTOPHEIGHT ) - 50 )
ENDIF

//Vpalette()
Hb_GtInfo( HB_GTI_PALETTE, 6, RGB( 20, 60, 70 ) )
Hb_GtInfo( HB_GTI_PALETTE, 5, RGB( 120, 120, 120 ) )
//Hb_GtInfo( HB_GTI_PALETTE, 6, 21586 )


hb_gtInfo(HB_GTI_WINTITLE, HB_OEMTOANSI( ARM_NAME ) )
hb_gtInfo( HB_GTI_ICONFILE, ARM_ICON )
hb_gtInfo(HB_GTI_WINTITLE, HB_OEMTOANSI( ARM_NAME ) )
Return

// раньше это работало Clipper но на этом я не акцентирую внимание
Function Vpalette()
Local i
IF TYPE("VPalette")=="C"
FOR i:=0 to 15
IF i*6+1>LEN(VPalette) .OR.;
SUBSTR(VPalette,i*6+1,6)==" "
//VgaPalette(i)

ELSE
Hb_GtInfo( HB_GTI_PALETTE, i, RGB( VAL(SUBSTR(VPalette,i*6+1,2)),;
VAL(SUBSTR(VPalette,i*6+3,2)),;
VAL(SUBSTR(VPalette,i*6+5,2))))
/*
//VgaPalette(;
i,;
VAL(SUBSTR(VPalette,i*6+1,2)),;
VAL(SUBSTR(VPalette,i*6+3,2)),;
VAL(SUBSTR(VPalette,i*6+5,2));
) */
ENDIF
NEXT i
// Hb_GtInfo( HB_GTI_PALETTE, 6, RGB( 20, 60, 70 ) )
//Hb_GtInfo( HB_GTI_PALETTE, 5, RGB( 120, 120, 120 ) )

ENDIF
RETURN NIL



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 180
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 26.12.10 21:30. Заголовок: ММК пишет: Отправл..


ММК пишет:

 цитата:
Отправлено: 14.12.10 13:25. Заголовок: inik296 пишет: Т.е...
Может так?


1. Вас не затруднит ответить - на каком инструменте реализовано?
2. Если на (x)Harbour + lib, то поделиться исходными текстами,

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1906
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.12.10 23:48. Заголовок: AndreyZh пишет: 1. ..


AndreyZh пишет:

 цитата:
1. Вас не затруднит ответить - на каком инструменте реализовано?


Xharbour + FiveWin

AndreyZh пишет:

 цитата:
2. Если на (x)Harbour + lib, то поделиться исходными текстами,


Примеры есть в Samples (Fivewin) , сам только начал это дело изучать ;) На самом деле не так
все сложно , конечно порой возникают вопросы но они решаемы . По началу будет сложно.....
Я уже начал потихонечку переводить WVT задачку на FW , красота получается (если надо могу пару тройку
скринов для сравнения выложить).



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1605
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.12.10 01:40. Заголовок: Dima пишет: красота..


Dima пишет:

 цитата:
красота получается (если надо могу пару тройку
скринов для сравнения выложить).



Хотелось бы посмотреть !


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 181
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 27.12.10 09:07. Заголовок: Dima пишет: Xharbou..


Dima пишет:

 цитата:
Xharbour + FiveWin....Примеры есть в Samples (Fivewin) , сам только начал это дело изучать ;) На самом деле не так
все сложно , конечно порой возникают вопросы но они решаемы . По началу будет сложно.....
Я уже начал потихонечку переводить WVT задачку на FW , красота получается (если надо могу пару тройку
скринов для сравнения выложить).


Доброе утро! Кто может - ответьте пожалуйста на ряд вопросов:

1. FW - платная библиотека, но как понимать "без денег" на некоторые библиотеки? Какие у них ограничения? Какие ограничения по использованию?
2. Как бы просто подключаются *.lib, т.е. нет "рисовалки формочек"?
3. Может быть есть документ типа "быстрый старт"?

Кроме того по xHarbour было "обвинение" в глючности среды разработки и графического интерфейса... Нельзя ли чуть подробнее по данной теме - вариант то же привлекательный, ведь поучиться можно на демо-поставке, а если покупать, то довольно недорого?

Заранее спасибо!

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 74
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 27.12.10 10:04. Заголовок: Здравствуйте! 1. Как..


Здравствуйте!
1. Как уже говорил Pasha, fwh 6.12 (версия декабря 2006 г.) ПОЛНОСТЬЮ бесплатна. Никаких ограничений
2. «Рисовалки формочек» - каждому «на вкус и цвет». Начиная со старенького Borland Resource Workshop, до любого софта, кот. редактирует *.rc или *.dll.
3. В fwh конечно доки есть, но все-таки для быстрого старта и создана куча маленьких примеров в дире SAMPLES с демонстрацией множества возможностей. А вообще для самого начала – на сайте FWH http://www.fivetechsoft.com/english/fwh.html<\/u><\/a> как инсталировать и настраивать батники для сборки.

По поводу глючности xHarbour, - кто без грешков? Я работаю уже лет 7 (именно xHb+FWH) Прямо уж особой глючности не видел…



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 22
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 27.12.10 10:13. Заголовок: AndreyZh пишет: 1. ..


AndreyZh пишет:

 цитата:
1. Вас не затруднит ответить - на каком инструменте реализовано?
2. Если на (x)Harbour + lib, то поделиться исходными текстами,


Да , это FWH + xHarbour.
Поделиться можно , только это "картинка" одна из множества достаточно есмкой задачи "кадровый учет".
Есть и друе задачи ( картинки).....
А Вам что нужно?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 23
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 27.12.10 10:38. Заголовок: AndreyZh пишет: 2. ..


AndreyZh пишет:

 цитата:
2. Как бы просто подключаются *.lib, т.е. нет "рисовалки формочек"?
3. Может быть есть документ типа "быстрый старт"?


Ну Сергей Игорьевич на все вопросы ответил.. :)) Можно только добавить , что неоднократно появляются
среды разработки , но тихонько отмирают..( а не очень нужны ) .Кто-то еще UEStudio использует или http://hbide.vouch.info/<\/u><\/a> , вариантов много .
Стартовать легко :) Для ускорения ( да и потом ) можно заглядывать вот сюда -
http://wiki.fivetechsoft.com/doku.php<\/u><\/a>
При наличии необходимого минимума первые "окошки" появятся через пару минут

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 182
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 27.12.10 10:57. Заголовок: Loach пишет: 2. «Ри..


Loach пишет:

 цитата:
2. «Рисовалки формочек» - каждому «на вкус и цвет». Начиная со старенького Borland Resource Workshop, до любого софта, кот. редактирует *.rc или *.dll.


То есть, в отличии от Visual xHarbour инструмента нет?


 цитата:
3. В fwh конечно доки есть, но все-таки для быстрого старта и создана куча маленьких примеров в дире SAMPLES с демонстрацией множества возможностей. А вообще для самого начала – на сайте FWH http://www.fivetechsoft.com/english/fwh.html<\/u><\/a> как инсталировать и настраивать батники для сборки.


Где взять "sample" - в скачанном варианте "без денег" их не увидел?


 цитата:
По поводу глючности xHarbour, - кто без грешков? Я работаю уже лет 7 (именно xHb+FWH) Прямо уж особой глючности не видел…


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

Но замечание было по среде Visual xHarbour и очень бы хотелось узнать некоторые "глюки" до начала пользования, а не воевать с ними, когда их "находят" пользователи.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 183
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 27.12.10 11:01. Заголовок: ММК пишет: Да , это..


ММК пишет:

 цитата:
Да , это FWH + xHarbour. Поделиться можно , только это "картинка" одна из множества достаточно есмкой задачи "кадровый учет".
Есть и друе задачи ( картинки)..... А Вам что нужно?


Спасибо! Если не сложно любой "законченный" пример с батниками, имеющий грид с подчинённой таблицей, типа список работников -> подчинённый список приказов по работнику. ИЛИ вообще любое "окошко" с *.bat и комментрированным исходником.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1907
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.12.10 11:17. Заголовок: AndreyZh пишет: ИЛ..


AndreyZh пишет:

 цитата:
ИЛИ вообще любое "окошко" с *.bat и комментрированным исходником.



 
#include "FiveWin.ch"
// комментарии вроде не нужны
function Main()
local oWnd
DEFINE WINDOW oWnd FROM 0, 0 TO 300, 400 PIXEL ;
TITLE "Hello"
ACTIVATE WINDOW oWnd MAXIMIZED
return nil


Батник
 
@ECHO OFF
CLS
if A%1 == A GOTO :SINTAX
if NOT EXIST %1.prg GOTO :NOEXIST

ECHO Compiling...

if "%FWDIR%" == "" set FWDIR=d:\h\fw
if "%XHDIR%" == "" set XHDIR=d:\h\x
if "%2" == "/b" set GT=gtwin
if not "%2" == "/b" set GT=gtgui

set hdir=%XHDIR%
set hdirl=%hdir%\lib
set bcdir=c:\bcc55
set fwh=%FWDIR%

%hdir%\bin\harbour %1 /n /i%fwh%\include;%hdir%\include /w /p %2 %3 > comp.log
IF ERRORLEVEL 1 GOTO COMPILEERRORS
@type comp.log

echo -O2 -e%1.exe -I%hdir%\include -I%bcdir%\include %1.c > b32.bc
%bcdir%\bin\bcc32 -M -c -v @b32.bc
:ENDCOMPILE

IF EXIST %1.rc %bcdir%\bin\brc32 -r %1
echo %bcdir%\lib\c0w32.obj + > b32.bc
echo %1.obj, + >> b32.bc
echo %1.exe, + >> b32.bc
echo %1.map, + >> b32.bc
rem echo %fwh%\lib\SButtonx.LIB + >> b32.bc

echo %fwh%\lib\Fivehx.lib %fwh%\lib\FiveHC.lib + >> b32.bc
echo %hdirl%\rtl.lib + >> b32.bc
echo %hdirl%\vm.lib + >> b32.bc
echo %hdirl%\%GT%.lib + >> b32.bc
echo %hdirl%\lang.lib + >> b32.bc
echo %hdirl%\macro.lib + >> b32.bc
echo %hdirl%\rdd.lib + >> b32.bc
echo %hdirl%\dbfntx.lib + >> b32.bc
echo %hdirl%\dbfcdx.lib + >> b32.bc
echo %hdirl%\dbffpt.lib + >> b32.bc
echo %hdirl%\ct.lib + >> b32.bc
echo %hdirl%\hbsix.lib + >> b32.bc
echo %hdirl%\debug.lib + >> b32.bc
echo %hdirl%\common.lib + >> b32.bc
echo %hdirl%\pp.lib + >> b32.bc
echo %hdirl%\pcrepos.lib + >> b32.bc
echo %hdirl%\codepage.lib + >> b32.bc
echo %hdirl%\rddads.lib + >> b32.bc
echo %hdirl%\ace32.lib + >> b32.bc

rem Uncomment these two lines to use Advantage RDD
rem echo %hdir%\lib\rddads.lib + >> b32.bc
rem echo %hdir%\lib\Ace32.lib + >> b32.bc

echo %bcdir%\lib\cw32.lib + >> b32.bc
echo %bcdir%\lib\import32.lib + >> b32.bc
echo %bcdir%\lib\uuid.lib + >> b32.bc
echo %bcdir%\lib\psdk\odbc32.lib + >> b32.bc
echo %bcdir%\lib\psdk\rasapi32.lib + >> b32.bc
echo %bcdir%\lib\psdk\nddeapi.lib + >> b32.bc
echo %bcdir%\lib\psdk\msimg32.lib + >> b32.bc
echo %bcdir%\lib\psdk\iphlpapi.lib, >> b32.bc

IF EXIST %1.res echo %1.res >> b32.bc

rem uncomment this line to use the debugger and comment the following one
if %GT% == gtwin %bcdir%\bin\ilink32 -Gn -Tpe -s -v @b32.bc
IF ERRORLEVEL 1 GOTO LINKERROR
if %GT% == gtgui %bcdir%\bin\ilink32 -Gn -aa -Tpe -s -v @b32.bc
IF ERRORLEVEL 1 GOTO LINKERROR
ECHO * Application successfully built *
%1
GOTO EXIT
ECHO

rem delete temporary files


:COMPILEERRORS
@type comp.log
ECHO * Compile errors *
GOTO EXIT

:LINKERROR
ECHO * Linking errors *
GOTO EXIT

:SINTAX
ECHO SYNTAX: Build [Program] {-- No especifiques la extensiвn PRG
ECHO {-- Don't specify .PRG extension
GOTO EXIT

:NOEXIST
ECHO The specified PRG %1 does not exist

:EXIT
@del %1.c
@del %1.res
@del %1.obj
@del *.ppo
@del %1.map
@del %1.tds



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 75
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 27.12.10 11:24. Заголовок: AndreyZh пишет: Т..


AndreyZh пишет:

 цитата:

То есть, в отличии от Visual xHarbour инструмента нет?


Совершенно верно! Встроенного инструмента нет.


 цитата:

Где взять "sample" - в скачанном варианте "без денег" их не увидел?


Извиняйте! Значит Линарес все-таки обрезал "свободный" вариант. В всех стандартных поставках примеры и исходники языка есть... :(


 цитата:

Но замечание было по среде Visual xHarbour и очень бы хотелось узнать некоторые "глюки" до начала пользования, а не воевать с ними, когда их "находят" пользователи.


В КАЖДОЙ версии Fwh есть баги. Их выявляют и правят в следующей версии или делают апдейт текущей.
В основном этому посвящен форум http://forums.fivetechsupport.com/viewforum.php?f=3&sid=eaa7189f32ed10f5feec4c090d94b001<\/u><\/a>
А пример описания новой версии с исправленными багами:
http://forums.fivetechsupport.com/viewtopic.php?f=16&t=20466<\/u><\/a>


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1737
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 27.12.10 11:37. Заголовок: AndreyZh пишет: Где..


AndreyZh пишет:

 цитата:
Где взять "sample" - в скачанном варианте "без денег" их не увидел?



Как это нет ? Я правда смотрел fwh612 давно, больше года назад, но тогда там были папки manual и sample.

Кстати, не забывайте, что библиотеку fiveh/fivehx желательно пересобрать используемым компилятором [x]harbour, поскольку в той, что есть в поставке, может использоваться другая версия пи-кода

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 185
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 27.12.10 11:51. Заголовок: Всем спасибо! Но хот..


Всем спасибо! Но хотелось пример сложнее "Hello World" и по xHarbour более подробных объяснений:

Andrey пишет:

 цитата:
Переходить на Visual xHarbour не советую. Я пробовал, глючный дизайнер, поддержка только на английском и даже не ответили, 3-раза писал.



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 24
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 27.12.10 12:49. Заголовок: Loach пишет: Соверш..


Loach пишет:

 цитата:
Совершенно верно! Встроенного инструмента нет.


Как говорят в Бобруйске - и да и нет .. Есть даже тот который постовляется , вот только т.к. большинству он не надо, то его и не шибко развивают...

[img src=http://pics.qip.ru/201ncLA.jpg
<img src="http://pics.qip.ru/201ncLA.jpg" />


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 76
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 27.12.10 12:53. Заголовок: AndreyZh пишет: и п..


AndreyZh пишет:

 цитата:
и по xHarbour более подробных объяснений:

Andrey пишет:
цитата:
Переходить на Visual xHarbour не советую. Я пробовал, глючный дизайнер, поддержка только на английском и даже не ответили, 3-раза писал.



Может я не понял вопроса, но причем тут Visual xHarbour? Visual xHarbour - это отдельный продукт, создаваемый разработчиками коммерческого xHb. Хороших отзывов о нем я лично нигде не видел.
А Fwh - это Гуй для (x)Harbour как бесплатного, так и коммерческого.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 25
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 27.12.10 12:59. Заголовок: AndreyZh пишет: Все..


AndreyZh пишет:

 цитата:
Всем спасибо! Но хотелось пример сложнее "Hello World" и по xHarbour более подробных объяснений:


Самый простой и , наверное , информативный пройтись по форуму. Там и тексты и картинки...

Ну вот Вам примерчик посложнее ( с картинкой :) ) . Попутно здесь можно увидеть , как в исходник вставляются сишные модули ( при необходимости)
Извините, не знаю как делать скрытый текст поэтому все подряд....
#include "FIVEWIN.ch"
#include 'xbrowse.ch'

REQUEST DBFCDX

function main()
local oWnd, hBmp

define window oWnd menu Menu()

activate window oWnd on paint( CircleGradient( hDC, { 0, 0, oWnd:nHeight, oWnd:nWidth } , nRGB( 255, 0, 0 ), nRGB( 0, 0, 255 ) ) )//

return nil

//----------------------------------------------------------------------------//

Function Menu()
local oMenu

menu oMenu

menuitem "Test1" action Test( )
menuitem "Test2" action Test( 180, 180 )
menuitem "Test3" action Test2()

endmenu

return oMenu

//----------------------------------------------------------------------------//

function Test( nOffX, nOffY )
local oDlg
local oBrushDlg := TBrush():New()
local oGrp

default nOffX := 0, nOffY := 0

DeleteObject( oBrushDlg:hBrush )
oBrushDlg:hBrush = CircleGradient( 0, { 0, 0, 400, 400 } , nRGB( 254, 154, 128 ), nRGB( 181, 61, 29 ), nOffX, nOffY, 1 )

define dialog oDlg title "Circle Gradient - Brushes" size 400,400 BRUSH oBrushDlg

@ 0, 1 GROUP oGrp TO 4, 21.5 PROMPT "Test" transparent

activate dialog oDlg centered


return nil

function test2()

local oWnd, oBrw
local hBmp := CircleGradient( 0, { 0, 0, 400, 400 } , nRGB( 212, 219, 237 ), nRGB( 132, 179, 249 ), -190, -190, 2 )

USE CUSTOMER SHARED

DEFINE WINDOW oWnd TITLE 'XBrowse Circle Gradient BackGrounds'

@ 0, 0 XBROWSE oBrw OF oWnd ;
ALIAS 'CUSTOMER' AUTOCOLS ;
CELL LINES ;
COLOR CLR_WHITE, CLR_BLUE


SET MESSAGE OF oWnd TO FWVERSION 2007

oBrw:SetBackGround( hBmp, BCK_STRETCH )
DeleteObject( hBmp )
oBrw:CreateFromCode()
oWnd:oClient := oBrw

ACTIVATE WINDOW oWnd


return nil

#pragma BEGINDUMP

#include <hbapi.h>
#include <windows.h>
#include <math.h>

#define PI 3.14159265
#define BRUSH 1
#define BITMAP 2
#ifdef __XHARBOUR__
int hb_parvni( int iParam, int iIndex );
#endif

HGDIOBJ CircleGradient( HDC hDC, RECT * rect, COLORREF startColor, COLORREF endColor, INT iOffSetX, INT iOffSetY, int iOutPut );

HGDIOBJ CircleGradient( HDC hDC, RECT * rect, COLORREF startColor, COLORREF endColor, INT iOffSetX, INT iOffSetY, int iOutPut )
{
int i, j;
float fRadio;
HBITMAP hBitmap;
HBITMAP hOldBitmap;
HBRUSH hBrush;
HDC hMemDC;

// Calculate image size
int width;
int height;
int isize;
double radius, diameterx, diametery;
char *m_Data;
int icenterx, icentery;

diameterx = ( rect->right - rect->left);
diametery = ( rect->bottom - rect->top);
icentery = diametery * 0.5 ;
icenterx = diameterx * 0.5 ;
width = rect->right - rect->left;
height = rect->bottom - rect->top;
radius = sqrt( pow( icenterx, 2 ) + pow( icentery, 2 ) ) ;
isize = height * width * 4;
// Create data buffer
m_Data = hb_xgrab( isize );

// Create gradient
for ( i = 0; i < height; i++ )
{
for ( j = 0; j < width; j++ )
{
LONG lRed, lBlue, lGreen;
fRadio = sqrt( pow( ( j - icenterx - iOffSetX ), 2 ) + ( pow( ( i - icentery - iOffSetY ), 2 ) ) ) / radius * 100.0;
if ( fRadio > 0.0 )
{
if( fRadio > 100.0 )
{
lRed = GetBValue( endColor );
lGreen = GetGValue( endColor );
lBlue = GetRValue( endColor );
}else
{
lRed = GetBValue( startColor ) + ( fRadio * 0.01 * ( GetBValue( endColor ) - GetBValue( startColor ) ) );
lGreen = GetGValue( startColor ) + ( fRadio * 0.01 * ( GetGValue( endColor ) - GetGValue( startColor ) ) );
lBlue = GetRValue( startColor ) + ( fRadio * 0.01 * ( GetRValue( endColor ) - GetRValue( startColor ) ) );
}

}
else
{
lRed = GetBValue( startColor );
lGreen = GetGValue( startColor );
lBlue = GetRValue( startColor );
}

m_Data[ i * width * 4 + j * 4 ] = lRed;
m_Data[ i * width * 4 + j * 4 + 1] = lGreen;
m_Data[ i * width * 4 + j * 4 + 2] = lBlue;
}
}

hBitmap = CreateBitmap( width, height, 1, 32, m_Data );
// Free memory
SelectObject( hMemDC, hOldBitmap );
DeleteDC(hMemDC);

hb_xfree( m_Data );

if( iOutPut == BRUSH )
{
hBrush = CreatePatternBrush( hBitmap );
DeleteObject( hBitmap );
return hBrush;
}
else if( iOutPut == BITMAP ) return hBitmap;
else if( hDC != 0 )
{
hBrush = CreatePatternBrush( hBitmap );
FillRect( hDC, rect, hBrush );
DeleteObject( hBrush );
}
DeleteObject( hBitmap );
return 0;
}
HB_FUNC( CIRCLEGRADIENT ) // hDC, { nTop, nLeft, nBottom, nRight },
// startColor, endColor, nOffserX,
// nOffserY, lBrush --> hBitmap / hBrush ( GDI OBJECT )
{
RECT rct;
INT iOffX = 0, iOffY = 0;
INT iOutPut = 3;

rct.top = hb_parvni( 2, 1 );
rct.left = hb_parvni( 2, 2 );
rct.bottom = hb_parvni( 2, 3 );
rct.right = hb_parvni( 2, 4 );

if( hb_pcount() > 4 )
iOffX = hb_parni( 5 );
if( hb_pcount() > 5 )
iOffY = hb_parni( 6 );
if( hb_pcount() > 6 )
iOutPut = hb_parni( 7 );
hb_retnl( ( LONG ) CircleGradient( ( HDC ) hb_parnl( 1 ),
&rct,
( COLORREF ) hb_parnl( 3 ),
( COLORREF ) hb_parnl( 4 ),
iOffX,
iOffY,
iOutPut ) );
}
#pragma ENDDUMP




Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 187
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 27.12.10 14:18. Заголовок: ММК пишет: Ну вот В..


ММК пишет:

 цитата:
Ну вот Вам примерчик посложнее ( с картинкой :) ) . Попутно здесь можно увидеть , как в исходник вставляются сишные модули ( при необходимости)



Огромнейшее спасибо! Скачал код и батник (выше) - обязательно "покручу" по наличию свободного времени... Для "старта" думаю вполне достаточно.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 57 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 7
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет