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




Пост 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 
ПрофильЦитата Ответить
Ответов - 167 , стр: 1 2 3 4 5 6 7 8 9 All [только новые]





Пост N: 2697
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.07.19 11:23. Заголовок: PS Ведь все фонты по..


PS
Ведь все фонты по DEFINE FONT ... цепляются к _FORMNAME_ 'Main' и там живут

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



Пост N: 2698
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.07.19 11:38. Заголовок: PPS Если фонтов нет ..


PPS
Если фонтов нет в списке DEFINE FONT ..., работают С ф-ии _SetFont(...), _SetFontHandle(...), а они не используют базу. По мне, команды удаления фонтов в _EraseControl() не нужны.

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



Пост N: 2699
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.07.19 11:44. Заголовок: SergKis пишет По мне..


SergKis пишет
 цитата:
По мне, команды удаления фонтов в _EraseControl() не нужны


Уточню, если они находятся в секции 'Main' - удалять не нужно.

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




Пост N: 1541
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.07.19 12:03. Заголовок: SergKis пишет: Заче..


SergKis пишет:

 цитата:
Зачем удалять фонт, созданный (сохранен в базе _HMG_aControlType == 'FONT') по DEFINE FONT ... ?


Поправил этот фрагмент кода с учетом Вашего предложения:

 цитата:
 
*-----------------------------------------------------------------------------*
FUNCTION _EraseControl ( i, p )
*-----------------------------------------------------------------------------*
LOCAL hWnd
LOCAL mVar
LOCAL t, x

x := _HMG_aControlFontHandle [ i ]

IF ISNUMERIC ( x ) .AND. !Empty ( x ) .AND. AScan( _HMG_aControlHandles, x ) == 0
DeleteObject ( x )
ENDIF

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

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




Пост N: 1542
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.07.19 10:43. Заголовок: Всем кому это интересно


Подготовил 2-й релиз-кандидат для новой сборки 19.08 со следующим списком изменений:
Скрытый текст

Хотя эта сборка работает стабильно, выпуск финальной версии отложен по финансовым причинам

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



Пост N: 2701
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.08.19 11:28. Заголовок: gfilatov2002 Может ..


gfilatov2002
Может добавить для фонта
 
PROCEDURE _DefineFont( FontName, fName, fSize, bold, italic, underline, strikeout, nAngle, default, charset )
...
_HMG_aControlWidth [k] := GetTextWidth ( 0, 'B', FontHandle )
_HMG_aControlHeight [k] := GetTextHeight( 0, 'B', FontHandle )
...
FUNCTION GetFontParam( FontHandle )
...
aFontAttr := { _HMG_DefaultFontName, _HMG_DefaultFontSize, .F., .F., .F., .F., 0, 0, 0 }
...
iif( Len( _HMG_aControlFontAttributes[ i ] ) == 5, _HMG_aControlFontAttributes[ i, FONT_ATTR_ANGLE ], 0 ), ;
_HMG_aControlWidth [ i ], _HMG_aControlHeight [ i ] }

ENDIF
...
И псевдо функции
FUNC GetFontWidth( FontName, nLen )
RETUNR GetFontParam( GetFontHandle( FontName ) )[8] * nLen
FUNC GetFontHeight( FontName )
RETUNR GetFontParam( GetFontHandle( FontName ) )[9]


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



Пост N: 2702
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.08.19 11:44. Заголовок: PS Может покороче на..


PS
Может покороче назвать FontWidth(...), FontHeight(...) ?

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




Пост N: 1545
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 01.08.19 12:18. Заголовок: SergKis пишет: доб..


SergKis пишет:

 цитата:
добавить для фонта


Добавил конечно, но оставил названия псевдо-функций с Get (так понятнее).
Благодарю за помощь

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



Пост N: 2706
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.08.19 09:22. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение добавить
 
*-----------------------------------------------------------------------------*
PROCEDURE _PopEventInfo( n )
*-----------------------------------------------------------------------------*
LOCAL l

IF ( l := Len ( _HMG_aEventInfo ) ) > 0

DEFAULT n := 0

IF n > 0 .and. n <= l; l := n
ENDIF

_HMG_ThisFormIndex := _HMG_aEventInfo [l] [1]
_HMG_ThisEventType := _HMG_aEventInfo [l] [2]
_HMG_ThisType := _HMG_aEventInfo [l] [3]
_HMG_ThisIndex := _HMG_aEventInfo [l] [4]
_HMG_ThisFormName := _HMG_aEventInfo [l] [5]
_HMG_ThisControlName := _HMG_aEventInfo [l] [6]

IF n == 0

ASize ( _HMG_aEventInfo , l - 1 )
ENDIF


ELSE
...

Тогда в блоке кода на окно, контрол можно ставить среду This запомненную ранее, к примеру, на TIMER другого окна
ACTION {|| _PopEventInfo( Len( _HMG_aEventInfo ) - 1 ), ... }

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




Пост N: 1546
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.08.19 10:30. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предложение добавить

Добавил, хотя эта коррекция является опасным хаком, на мой взгляд

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



Пост N: 2707
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.08.19 10:55. Заголовок: gfilatov2002 пишет Д..


gfilatov2002 пишет
 цитата:
Добавил, хотя эта коррекция является опасным хаком, на мой взгляд


Большой опасности нет (не удаляем из стека, применяя n), на мой взгляд, но понимать, что происходит, конечно надо.
Вариантов больше получается, к примеру
1
define window ... (сохраняет среду), если сделать
_PushEventInfo
...
end window (восстановит среду, но останется доп. установка)
action window ...
_PopEventInfo() (окончательно восстановит среду до работы окна)
This среда будет стоять для окна (в блоках контролов среда ставится\восстанавливается для тек. окна)
2
В Timer (к примеру, на Main окне) поставив This среду по n (который можно определить по разному) можно анализировать ThisWindow.Name и даже This.Name, что бы проделывать разные операции в зависимости от имен. Завершение блока кода Timer восстановит из последнего элемента _HMG_aEventInfo, т.е. то что было при входе.

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




Пост N: 1547
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.08.19 11:01. Заголовок: SergKis пишет: пони..


SergKis пишет:

 цитата:
понимать, что происходит, конечно надо


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

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



Пост N: 2709
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.08.19 10:03. Заголовок: gfilatov2002 Поправ..


gfilatov2002
Поправил LoadFields() для работы с др. alias Скрытый текст

Пример для проверки https://TransFiles.ru/1z51g

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



Пост N: 2710
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.08.19 11:06. Заголовок: PS Для работы с MEMI..


PS
Для работы с MEMIO (пропустил, не доделал), надо
 
REQUEST DBFCDX, DBFFPT, DBFNTX, HB_MEMIO

*-----------------------------------------------------------------------------*
FUNCTION Main( cPath )
*-----------------------------------------------------------------------------*
LOCAL nY, nX, nW, nH, hSpl, oBrw
LOCAL cWnd := 'wMain', cAlias, aStru
LOCAL cOut := 'OUT'
LOCAL cTmp := 'mem:out'

...

и Compile.bat
call ..\..\..\batch\compile.bat demo /l hbmemio %1 %2 %3 %4 %5 %6 %7 %8 %9

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



Пост N: 2711
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.08.19 13:47. Заголовок: PPS Если сделать изм..


PPS
Если сделать изменения, то можно менять поля в dbf из которого выборка
 
:LoadFields(.F., aColSel, cOut, aNamSel)

aColSel := {"FIRST" , "LAST" , "STATE" , "AGE" , "ZIP", "MARRIED" }

:LoadFields(.T., aColSel, cAls)

FOR nI := 1 TO Len( aColSel )
:GetColumn(aColSel[ nI ]):bPrevEdit := {|| (cAls)->( RLock() ) }
IF 'MARR' $ aColSel[ nI ]
:GetColumn(aColSel[ nI ]):bPostEdit := {|| (cAls)->MARRIED := ! (cAls)->MARRIED, ;
(cAls)->( dbUnLock() ) }
ELSE
:GetColumn(aColSel[ nI ]):bPostEdit := {|| (cAls)->( dbUnLock() ) }
ENDIF
NEXT

AEval(:aColumns, {|oc,nc| oc:lEmptyValToChar := .T., ;
oc:lFixLite := .T. })


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




Пост N: 1548
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.08.19 18:55. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Поправил LoadFields() для работы с др. alias


Принято с благодарностью

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



Пост N: 2712
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.08.19 10:17. Заголовок: gfilatov2002 Андрей..


gfilatov2002
Андрей сказал, что у меня в примере простая карточка, без вызова справочника.
Исправил пример, добавив имитацию вызова справочников у 2х GetBox кнопками
Так же сделал на этих GetBox F5 и DublClick для вызова справочника + ToolTip информация
Пример тут https://TransFiles.ru/ocym6

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



Пост N: 2713
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.08.19 11:02. Заголовок: PS Небольшая бяка в ..


PS
Небольшая бяка в примере. Если карточка изменена, фокус на GetBox и нажимаем Esc, то запрос на сохранение карточки, сделанный на AletYesNo(...), улетает в координаты 0,0. Правка такая
 
STATIC FUNC Age_CardSave( oBrw, lSave )
...
LOCAL nRec := ATail(aRec)
LOCAL cFocu := This.FocusedControl


If empty( lSave ) .and. ThisWindow.Cargo
If ! empty(cFocu) .and. ! 'BUTT' $ This.&(cFocu).Type
This.Btn_04.SetFocus
DO EVENTS
EndIf

// lMsg := MsgYesNo('Save card - '+cValToChar(This.AGE.Value )+CRLF+ ;
lMsg := AlertYesNo('Save card - '+cValToChar(This.AGE.Value )+CRLF+ ;
...


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




Пост N: 1549
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 05.08.19 11:24. Заголовок: SergKis пишет: Испр..


SergKis пишет:

 цитата:
Исправил пример, добавив имитацию вызова справочников у 2х GetBox кнопками


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

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



Пост N: 2714
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.08.19 15:11. Заголовок: gfilatov2002 Если д..


gfilatov2002
Если добавить методы в
CLASS TGetData INHERIT TCnlData 
...
METHOD SetKeyEvent ( nKey, bKey, lCtrl, lShift, lAlt ) INLINE ::Get:SetKeyEvent(nKey, bKey, lCtrl, lShift, lAlt)
METHOD SetDublClick( bBlock ) INLINE ::Get:SetKeyEvent( , bBlock )

METHOD Destroy() INLINE ::oGetBox := ::Super:Destroy()
...
то удобней писать
(This.&(o:GetName).Object):SetKeyEvent ( VK_F5, hb_MacroBlock(o:BtnAction) )
(This.&(o:GetName).Object):SetDublClick( hb_MacroBlock(o:BtnAction) )


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

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