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




Пост N: 699
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)


Начало темы находится здесь, а теперь

АНОНС * АНОНС * АНОНС * АНОНС * АНОНС

Готовится к опубликованию новая сборка №48, которая выйдет в конце недели.
Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне

Кратко, что нового:

- исправление обнаруженных ошибок и неточностей кода;
- новый класс HEADERIMAGE для Grid и Browse;
- свойство Address в Hyperlink может теперь открывать папку или файл на диске;
- добавлен NOTABSTOP класс для Browse;
- поддержка пользовательских компонентов (заимствована из оффициального релиза);
- расширения и исправления в библиотеках TsBrowse и PropGrid;
- обновлены сборки Харбор и HMGS-IDE;
- новые и обновленные старые примеры (как обычно ).




--
Улыбайся - завтра будет хуже!
Спасибо: 5 
ПрофильЦитата Ответить
Ответов - 285 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]





Пост N: 2207
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.02.19 22:26. Заголовок: PPS опять 504 Gatewa..


PPS
опять 504 Gateway Time-out, но передача прошла.

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



Пост N: 2208
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 06:26. Заголовок: gfilatov2002 Привел..


gfilatov2002
Привел в соответствие свойства классов.
В примере поправил StatusBar https://my-files.ru/n8l6pu

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



Пост N: 193
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 09.02.19 13:03. Заголовок: GetBox WindowType Panel


Давно борюсь с ситуацией, когда у GetBox не работает вызов VALID в окне PANEL.
Вышел на h_getbox.prg строка 528:
IF _IsChildOfActiveWindow( hWnd ) .AND. !readonly .AND. lAllowEdit
Если я закоментирую вызов функции _IsChildOfActiveWindow -> то VALID отрабатывает!
IF /*_IsChildOfActiveWindow( hWnd ) .AND.*/ !readonly .AND. lAllowEdit

Я не совсем понимаю, что эта функция делает, но функция присутствует в h_window.prg и
вызывается только один раз и только для GetBox.

Для показа этой ситуации можно в примере MiniGUI\SAMPLES\BASIC\CONTAINERS\Panel\demo1.prg
в строке 50 вместо TEXTBOX изменить DEFINE TEXTBOX TEXT_1 на:
120,10 GETBOX GET_1 VALUE 'GetBox' VALID {|| MsgYesNo('GetValid: '+Win_2.Get_1.Value)}

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



Пост N: 2210
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 17:27. Заголовок: krutoff пишет Если я..


krutoff пишет
 цитата:
Если я закоментирую вызов функции _IsChildOfActiveWindow


Есть такая блокировка работы GetBox, возможно оправданная.
К примеру имеем не менее 3-х окон MdiChild и ввод в GetBox на одном из окон, после Enter focus улетает на др. окна.
Используйте TEXTBOX с такой конструкцией
 
DEFINE TEXTBOX TEXT_1
ROW 120
COL 10
VALUE 'Test'
ON CHANGE {|| This.Cargo := .T. }
ON LOSTFOCUS {|| Valid1() }
ON ENTER {|| _PushKey(VK_TAB) }
END TEXTBOX
This.TEXT_1.Cargo := .F. // no change
...
STAT FUNC Valid1()

If This.Cargo // change textbox
If 'get' $ This.Value
MsgBox('Error value '+ This.Value, 'ERROR')
This.SetFocus
Else
This.Cargo := .F.
EndIf
EndIf

RETURN Nil


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



Пост N: 2212
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 17:58. Заголовок: PS c GetBox-сами про..


PS
c GetBox-сами проверку valid надо проделывать на кнопке OK, пробежав по всем и переключая фокус на Getbox с ошибкой

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




Пост N: 1430
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.02.19 20:20. Заголовок: SergKis пишет: В пр..


SergKis пишет:

 цитата:
В примере поправил StatusBar


При попытке скачать этот пример получаю

 цитата:
502 Bad Gateway


Можно повторно выложить этот архив

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



Пост N: 2213
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 20:40. Заголовок: gfilatov2002 Тут ht..


gfilatov2002
Тут https://transfiles.ru/bf6j5

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




Пост N: 1431
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.02.19 21:12. Заголовок: SergKis пишет: Тут ..


SergKis пишет:

 цитата:
Тут


Спасибо!
С этими изменениями пример у меня отработал нормально, надписи в статусбаре не искажаются

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




Пост N: 1432
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.02.19 21:17. Заголовок: SergKis пишет: Мысл..


SergKis пишет:

 цитата:
Мысли вслух. Если вынести oDlu2Pixel(...) и класс TDlu2Pix за скобки


SergKis пишет:

 цитата:
Используется среда контрола в ON INIT


Не уверен, что требуются такие изменения во всех контролах

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



Пост N: 2214
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 21:19. Заголовок: gfilatov2002 Обрати..


gfilatov2002
Обратите внимание на
 
DEFINE GETBOX Text_2c // Alternate Syntax
...
END GETBOX ON INIT {|| :Y += This.Height + :GapsHeight }
// ON INIT {|og,ow,oc| ow:Y += oc:Height + ow:GapsHeight }
// :Y += This.Text_2c.Height + :GapsHeight // !!! это использовать, убрав выше
...

Пробовал "Мысли в слух". Для сборки надо убрать ON INIT, открыв строку приращения координаты

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




Пост N: 1433
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.02.19 21:29. Заголовок: SergKis пишет: Для ..


SergKis пишет:

 цитата:
Для сборки надо убрать ON INIT


Благодарю за напоминание
Да, конечно, я это сделал - иначе бы пример не запустился

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



Пост N: 2215
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 22:01. Заголовок: gfilatov2002 пишет Н..


gfilatov2002 пишет
 цитата:
Не уверен, что требуются такие изменения во всех контролах


В своей версии 2.07 сделал контролы, перечисленные выше + в TsBrowse сделал
 
#xcommand DEFINE TBROWSE <name> OBJ <obrw> ;
...
[ ON INIT> <bInit> ] ;
...
[ <.lAutoCol.> ], [ \{<aColSel>\} ], ;
<{bInit}>
);;
with object <obrw>
...
#command END TBRW [ ON INIT> <bInit> ] ;
=>;
_EndTBrowse( <{bInit}> );;
end with
...
Поменял объявление и вызов
Local oc, ow := oDlu2Pixel()
...
Do_ControlEventProcedure ( bInit, k, ow, oc )
...
Для GetBox добавил
[ <GotFocusSelect: GOTFOCUSSELECT> ] ;
...
..., <.GotFocusSelect.>, <{bInit}> )
...
FUNCTION _DefineGetBox ( ControlName, ParentFormName, x, y, w, h, Value, ;
...
If HB_ISCHAR( cPicture ) .and. ! Empty(cPicture) .and. '@K ' $ cPicture
GotFocusSelect := .T.
EndIf

If ! Empty( GotFocusSelect ) .and. Empty( uGotFocus )
If ValType( Value ) == "C"
_HMG_aControlGotFocusProcedure[k] := {|| SendMessage( _HMG_aControlHandles[k], EM_SETSEL, 0, If( Empty(Value), -1, Len(Trim(Value))) ) }
ElseIf ValType( Value ) $ "ND"
_HMG_aControlGotFocusProcedure[k] := {|| SendMessage( _HMG_aControlHandles[k], EM_SETSEL, 0, -1 ) }
EndIf
EndIf

IF _HMG_lOOPEnabled
Eval ( _HMG_bOnControlInit, k, mVar )
ow := _WindowObj ( ParentFormHandle )
oc := _ControlObj( ControlHandle )
ENDIF

Do_ControlEventProcedure ( bInit, k, oGet, ow, oc )

RETURN oGet

Получилось
1.
без SET OOP ON делаем (можем)
WITH OBJECT App.Object
с SET OOP ON делаем
WITH OBJECT ThisWindow.Object
работаем в одинаковых переменных
2.
С использованием ON INIT практически все команды между _Define...(...) уходят в них и работа с This... обезличенно.
Возможна упрощенная автоматизация, убрав лишнее в блоки кода (не надо делать как в demo.ch из примера)
При работе с сообщениями удобнее устанавливать eventы на контролы.
3.
Старый стиль написания остается
Попробовал пока немного на GetBox

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



Пост N: 2216
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 22:06. Заголовок: PS *----------------..


PS
 
*-----------------------------------------------------------------------------*
FUNCTION _EndTBrowse( bInit )
*-----------------------------------------------------------------------------*
LOCAL i, oBrw
LOCAL oc, ow := oDlu2Pixel()

IF _HMG_BeginTBrowseActive
i := AScan ( _HMG_aControlHandles, _HMG_ActiveTBrowseHandle )
IF i > 0
oBrw := _HMG_aControlIds[ i ]

IF _HMG_lOOPEnabled
ow := _WindowObj ( _HMG_aControlParenthandles[ i ] )
oc := _ControlObj( _HMG_aControlHandles [ i ] )
ENDIF

Do_ControlEventProcedure ( bInit, i, oBrw, ow, oc )

oBrw:lRePaint := .T.
oBrw:Display()
_HMG_ActiveTBrowseName := ""
_HMG_ActiveTBrowseHandle := 0
_HMG_BeginTBrowseActive := .F.
ENDIF
ENDIF

RETURN NIL


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



Пост N: 2217
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 22:34. Заголовок: В продолжении пример..


В продолжении примера, промежутков между контролами (GapsWidth, GapsHeight), оказалось удобным при Resize окон.
В задаче окно разделено на 2-е части:
- контролы Label, Getbox слева вертикально в плотном заполнении, 2 pixel в Normalize + кнопка Save
- справа Tbrowse 60% окна. При Resize с ним ясно все.
По контролам
- персчитываю новое значение по вертикали GapsHeight, GapsWidth не меняю, т.е. левый X tsb тот же
- меняю Y у контролов
Текст из задачи как есть (кому интересно) Скрытый текст


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



Пост N: 2218
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.02.19 11:26. Заголовок: gfilatov2002 Попроб..


gfilatov2002
Попробовал Tsb с on init ( пример Tsb_addRecord ) Скрытый текст

Был не прав с EndTbrowse сделал так Скрытый текст


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




Пост N: 1434
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.02.19 20:55. Заголовок: SergKis пишет: Полу..


SergKis пишет:

 цитата:
Получилось
1.
без SET OOP ON делаем (можем)
WITH OBJECT App.Object
с SET OOP ON делаем
WITH OBJECT ThisWindow.Object
работаем в одинаковых переменных


Это очень интересно.

Можно получить пример 1 для GetBox App_OopGetBox без установки SET OOP ON
и для сравнения пример 3 App_OopGetBox3 с SET OOP ON

SergKis пишет:

 цитата:
2.
С использованием ON INIT практически все команды между _Define...(...) уходят в них и работа с This... обезличенно.
Возможна упрощенная автоматизация, убрав лишнее в блоки кода (не надо делать как в demo.ch из примера)


Очень хорошо

SergKis пишет:

 цитата:
3.
Старый стиль написания остается


Отлично

SergKis пишет:

 цитата:
Попробовал Tsb с on init


Спасибо!
У меня такой пример тоже сработал (см. ниже)
Скрытый текст


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



Пост N: 2221
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.02.19 05:06. Заголовок: gfilatov2002 Пример..


gfilatov2002
Пример для SET OOP ON\OFF https://TransFiles.ru/wyxjd
Если SET OOP ON -> убираем коменты у строк
 
WITH OBJECT App.Object
//------------------------------------------ for SET OOP ON
// WITH OBJECT This.Object
// :O:BColorGet := :AO:BColorGet // (App.Object):O:BColorGet
// :O:FColorGet := :AO:FColorGet // (App.Object):O:FColorGet
// :O:FColor1 := :AO:FColor1 // (App.Object):O:FColor1
// :O:FColor2 := :AO:FColor2 // (App.Object):O:FColor2
//------------------------------------------
ставим коментарий у
WITH OBJECT App.Object
собран пример в режиме SET OOP OFF

Небольшая правка
CLASS TDlu2Pix
... заменить
METHOD Event( Key, p1, p2, p3 ) INLINE iif( HB_ISBLOCK( p1 ), ;
::oEvent:Set( Key, p1 ), ;
( p2 := hb_defaultValue(p2, ::oParam:Get( Key)), ;
::oEvent:Do ( Key, p1, p2, p3 ) ) )
...
CLASS TWndData
...
METHOD GetGaps( aGaps, oWnd ) INLINE ::oApp:GetGaps( aGaps, oWnd )

METHOD W ( nKfc ) INLINE ::oApp:W ( nKfc )
...


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



Пост N: 2223
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.02.19 05:54. Заголовок: gfilatov2002 В App_..


gfilatov2002
В App_OopGetbox2 правка
 
:Event( 1, {|| HMG_Alert("MessageBox Info", , "Information", ICON_INFORMATION) } )

:Event( 2, {|oa,ky,np,cp| ShellExecute( , 'open', App.ExeName, cp, , np ), ;
ReleaseAllWindows() } )

:Event( 3, {|oa,ky,np,xp| _LogFile(.T., oa, ky, np, xp, oa:ClassName) } )


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




Пост N: 1435
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 11.02.19 10:35. Заголовок: SergKis пишет: собр..


SergKis пишет:

 цитата:
собран пример в режиме SET OOP OFF


Благодарю за скорую помощь


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



Пост N: 2224
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.02.19 11:31. Заголовок: gfilatov2002 В прим..


gfilatov2002
В пример 3 правка
 
@ :Y, :X GETBOX Text_2b WIDTH :O:nDefLen HEIGHT :H1 ;
...
ON CHANGE (App.Object):Send(This.Cargo, 300) ; //{|| TONE(300)};
...
@ :Y, :X BUTTONEX OButton_4 WIDTH :O:nDefLen HEIGHT :H1 * 2 ;
...
ACTION ( (App.Object):Send(This.Cargo[1], 800), ; // TONE(800)
(App.Object):Post(This.Cargo[2]) ) ;


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

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