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




Пост 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 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


gfilatov2002
moderator




Пост N: 1436
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 11.02.19 11:41. Заголовок: SergKis пишет: В пр..


SergKis пишет:

 цитата:
В пример 3 правка


OK

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




Пост N: 2225
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.02.19 14:28. Заголовок: gfilatov2002 Пропус..


gfilatov2002
Пропустил я в примере 3
 
DEFINE GETBOX Text_6 // Alternate Syntax
...
BACKCOLOR :O:BColorGet
...
и TOOLTIPы поправить, может быть
@ :Y, :X GETBOX Text_5 WIDTH :D1 HEIGHT :H1 ;
TOOLTIP "Text_5. DublClick => Edit" ;
...
@ :Y, :X GETBOX Text_7 WIDTH :O:nDefLen HEIGHT :H1 ;
BACKCOLOR :O:BColorGet ;
TOOLTIP "Characters field. DublClick => Edit " ;
...
@ :Y, :X GETBOX Text_8 WIDTH :O:nBoolLen HEIGHT :H1 ;
...
TOOLTIP "Logical field. DublClick => Edit" ;


Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

 цитата:
в примере 3

DEFINE GETBOX Text_6 // Alternate Syntax
...
BACKCOLOR :O:BColorGet
...
и TOOLTIPы поправить


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

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




Пост N: 2226
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.02.19 15:30. Заголовок: gfilatov2002 пишет У..


gfilatov2002 пишет
 цитата:
У меня такой пример тоже сработал (о tsb)


Мне понравилось использовать on init.
В своей версии 2.07 прошел по всем контролам и добавил bInit. Даже в timer
 
Local ow := oDlu2Pixel()
...
IF _HMG_lOOPEnabled
Eval ( _HMG_bOnControlInit, k, mVar )
ow := _WindowObj( ParentFormHandle )
ENDIF

Do_WindowEventProcedure( bInit, k, ow, ControlName, k )

Return Nil

Если в IDE добавить on init {|| NIL }, то в ней можно переустанавливать координаты (к примеру):
ON INIT {|| This.Row := :Y, This.Col := :X, This.Width := :W1, This.Height := :H1, :Y += This.Height + :GapsHeight, ... }

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1438
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.02.19 12:40. Заголовок: SergKis пишет: про..


SergKis пишет:

 цитата:
прошел по всем контролам и добавил bInit


Добавил обработку bInit в 20 базовых элементов управления (плюс TBrowse, конечно).
Поправил выделение при получении фокуса по событию ON GOTFOCUS в GetBox с символьными данными:
      IF ValType( Value ) == "C" 
_HMG_aControlGotFocusProcedure [k] := {|| SendMessage( _HMG_aControlHandles [k], EM_SETSEL, 0, iif( Empty( Value ), -1, Len( Trim( ( _HMG_aControlHeadClick [k] ):Cargo ) ) ) ) }

Неточность выделения видна при редактировании поля Text_7 на десятой записи из базы.

Также в альтернативном синтаксисе использовал новую команду ON INIT <b> вместо увеличения длины команды END <control> [ON INIT].

Теперь бы не мешало проверить эти изменения на реальном примере...

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




Пост N: 2227
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.02.19 12:56. Заголовок: gfilatov2002 Дайте ..


gfilatov2002
Дайте ссылку в личку или так
Покручу. В тек. версии только несколько элементов от on init-ил

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1439
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.02.19 13:02. Заголовок: SergKis пишет: Дайт..


SergKis пишет:

 цитата:
Дайте ссылку в личку


Отправил ссылку

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




Пост N: 2228
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.02.19 13:45. Заголовок: gfilatov2002 пишет О..


gfilatov2002 пишет
 цитата:
Отправил ссылку


Забрал

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1440
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.02.19 13:53. Заголовок: SergKis пишет: Забр..


SergKis пишет:

 цитата:
Забрал


Если описание использования dlu в файле doc\Changelog.txt содержит неточности (или ошибки), то прошу их исправить без стеснения

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




Пост N: 2229
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.02.19 17:50. Заголовок: gfilatov2002 Родной..


gfilatov2002
Родной "оригинальный" BASIC\GetBox из 19.01 переделал на проверку ON INIT.
Только прорисовка убрана в ON INIT, остальное не трогал
Тут https://TransFiles.ru/36pe9

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1441
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.02.19 17:58. Заголовок: SergKis пишет: BASI..


SergKis пишет:

 цитата:
BASIC\GetBox из 19.01 переделал на проверку ON INIT


Супер! Большое спасибо за помощь

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




Пост N: 2230
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.02.19 10:13. Заголовок: gfilatov2002 Малень..


gfilatov2002
Маленькая правка
 
METHOD GetObj4Name( cName ) CLASS TWndData
...
::oName:Eval( {| oc | iif( cName $ Upper(oc:cName), AAdd( aObj, oc ), Nil ) } )
...


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1442
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.02.19 10:27. Заголовок: SergKis пишет: Мале..


SergKis пишет:

 цитата:
Маленькая правка


Ok

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




Пост N: 2231
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.19 10:57. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение по TREE добавить в Node и Item Cargo, использовав _HMG_aControlHeadClick[ k ]
 
#xcommand NODE <text> [ IMAGES <aImage> ] [ ID <id> ] [ CARGO <Cargo> ];
=>;
_DefineTreeNode (<text>, <aImage> , <id>, <Cargo> )

#xcommand DEFINE NODE <text> [ IMAGES <aImage> ] [ ID <id> ] [ CARGO <Cargo> ] ;
=>;
_DefineTreeNode (<text>, <aImage> , <id>, <Cargo> )

#xcommand END NODE ;
=>;
_EndTreeNode()

#xcommand TREEITEM <text> [ IMAGES <aImage> ] [ ID <id> ] [ CARGO <Cargo> ] ;
=> ;
_DefineTreeItem (<text>, <aImage> , <id>, <Cargo> )

h_tree.prg
#include "minigui.ch"
#include "i_winuser.ch"

STATIC lDialogInMemory := .F.
STATIC a_Node_Item_Cargo := {}


*-----------------------------------------------------------------------------*
FUNCTION _DefineTree ( ControlName, ParentFormName, row, col, width, height, ;
...
__defaultNIL( @dblclick, "" )

a_Node_Item_Cargo := {}

mVar := '_' + ParentFormName + '_' + ControlName
...
*-----------------------------------------------------------------------------*
FUNCTION InitDialogTree( ParentName, ControlHandle, k )
*-----------------------------------------------------------------------------*
...
FOR n := 1 TO Len( _HMG_aDialogTreeItem )
aImage := _HMG_aDialogTreeItem[ n, 2 ]
text := _HMG_aDialogTreeItem[ n, 1 ]
id := _HMG_aDialogTreeItem[ n, 3 ]
NodeIndex := _HMG_aDialogTreeItem[ n, 4 ]
Cargo := _HMG_aDialogTreeItem[ n, 6 ]
...
ImgDef := iif( ValType( aImage ) == "A", Len( aImage ), 0 ) // Tree+
NodeHandle := _HMG_NodeHandle[ NodeIndex ]

AAdd( a_Node_Item_Cargo, Cargo )

IF ImgDef == 0
...
_HMG_aControlPageMap [ _HMG_ActiveTreeIndex ] := _HMG_aTreeMap
_HMG_aControlPicture [ _HMG_ActiveTreeIndex ] := _HMG_aTreeIdMap
_HMG_aControlHeadClick[ _HMG_ActiveTreeIndex ] := AClone ( a_Node_Item_Cargo )

...
*-----------------------------------------------------------------------------*
FUNCTION _DefineTreeNode ( text, aImage, Id, Cargo )
*-----------------------------------------------------------------------------*
...
IF lDialogInMemory

_HMG_NodeIndex++
AAdd ( _HMG_aDialogTreeItem, { text, aImage, Id, _HMG_NodeIndex, 'NODE', Cargo } )

ELSE
...
AAdd ( _HMG_aTreeMap, _HMG_NodeHandle[ _HMG_NodeIndex ] )
AAdd ( _HMG_aTreeIdMap, Id )
AAdd ( a_Node_Item_Cargo, Cargo )


ENDIF
...
*-----------------------------------------------------------------------------*
FUNCTION _DefineTreeItem ( text, aImage, Id, Cargo )
*-----------------------------------------------------------------------------*
...
IF lDialogInMemory

AAdd ( _HMG_aDialogTreeItem, { text, aImage, Id, _HMG_NodeIndex, 'ITEM', Cargo } )

ELSE
...
AAdd ( _HMG_aTreeMap, Handle )
AAdd ( _HMG_aTreeIdMap, Id )
AAdd ( a_Node_Item_Cargo, Cargo )


ENDIF
...
*-----------------------------------------------------------------------------*
FUNCTION _EndTree()
*-----------------------------------------------------------------------------*

IF .NOT. lDialogInMemory

_HMG_aControlPageMap [ _HMG_ActiveTreeIndex ] := _HMG_aTreeMap
_HMG_aControlPicture [ _HMG_ActiveTreeIndex ] := _HMG_aTreeIdMap
_HMG_aControlHeadClick[ _HMG_ActiveTreeIndex ] := AClone( a_Node_Item_Cargo )


IF _HMG_ActiveTreeValue > 0
...
ENDIF

a_Node_Item_Cargo := {}

RETURN NIL
...

*-----------------------------------------------------------------------------*
FUNCTION TreeNodeItemCargo( ControlName, ParentForm, Item, Value )
*-----------------------------------------------------------------------------*
LOCAL i, xVal

IF ( i := GetControlIndex( ControlName, ParentForm ) ) > 0

IF Item > 0 .and. Item <= Len ( _HMG_aControlHeadClick[ i ] )

xVal := _HMG_aControlHeadClick[ i ][ Item ]

IF pCount() > 3
_HMG_aControlHeadClick[ i ][ Item ] := Value
ENDIF

ENDIF

ENDIF

RETURN xVal

h_controlmisc.prg
FUNCTION _DeleteAllItems ( ControlName , ParentForm )
...
CASE t == "TREE"
TreeView_DeleteAllItems ( c , _HMG_aControlPageMap [ i ] ) // Tree+
ASize ( _HMG_aControlPageMap [ i ] , 0 )
ASize ( _HMG_aControlPicture [ i ] , 0 )
ASize ( _HMG_aControlHeadClick[ i ] , 0 )

...
FUNCTION _DeleteItem ( ControlName , ParentForm , Value )
...
CASE T == "TREE"
...
ASize ( _HMG_aControlPageMap [ix] , AfterCount )
ASize ( _HMG_aControlPicture [ix] , AfterCount )
HB_ADEL( _HMG_aControlHeadClick[ix] , Value, .T. )

...


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




Пост N: 2232
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.19 11:00. Заголовок: PS Пример BASIC\..


PS
Пример BASIC\Tree https://TransFiles.ru/s4754

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




Пост N: 2233
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.19 11:04. Заголовок: PPS При TreeItemSort..


PPS
При TreeItemSort(...) и AddItem, думаю NODE\ITEM Cargo не стоит исползовать

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




Пост N: 2234
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.19 18:32. Заголовок: gfilatov2002 Замени..


gfilatov2002
Замените, пожалуйста, методы, добавлена обработка удаленных контролов
 
METHOD GetObj4Type( cType, lEque ) CLASS TWndData

LOCAL aObj := {}, aO := {}, o

IF ! Empty( cType )
lEque := hb_defaultValue( lEque, .T. )
IF ::cChr $ cType ; lEque := .F.
ENDIF
FOR EACH cType IN hb_ATokens( Upper( cType ), ::cChr )
::oName:Eval( {| oc | iif( lEque, iif( cType == oc:cType, AAdd( aObj, oc ), ), ;
iif( cType $ oc:cType, AAdd( aObj, oc ), ) ) } )
NEXT
FOR EACH o IN aObj
If _IsControlDefined(o:Name, o:Window:Name)
aAdd(aO, o)
EndIf
NEXT
ENDIF

RETURN aO

METHOD GetObj4Name( cName ) CLASS TWndData

LOCAL aObj := {}

IF ! Empty( cName )
FOR EACH cName IN hb_ATokens( Upper( cName ), ::cChr )
::oName:Eval( {| oc | iif( _IsControlDefined(oc:Name, oc:Window:Name), ;
iif( cName $ Upper(oc:cName), AAdd( aObj, oc ), Nil ), Nil ) } )
NEXT
ENDIF

RETURN aObj


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1443
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.02.19 19:34. Заголовок: SergKis пишет: Заме..


SergKis пишет:

 цитата:
Замените, пожалуйста, методы, добавлена обработка удаленных контролов


Принято.
Благодарю за помощь

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


Пост N: 807
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 17.02.19 09:54. Заголовок: Ещё бы хороший приме..


Ещё бы хороший пример (на основе DBF) построения ДЕРЕВА и работы с ним

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




Пост N: 2235
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.02.19 10:19. Заголовок: Vlad04 пишет Ещё бы ..


Vlad04 пишет
 цитата:
Ещё бы хороший пример (на основе DBF) построения ДЕРЕВА и работы с ним


Какие трудности с dbf. К примеру имеем
- группы
- подгруппы
- товар
 
while ! eof() // группы
group := ...
NODE group
sele podgroup
set scope group to group
go top
while ! eof()
podgoup := ...
NODE podgroup
sele tovar
set scope podgroup to podgroup
go top
while ! eof()
ITEM tovar
skip
enddo
END NODE
sele podgroup
skip
enddo
END NODE
sele group
skip
enddo

Если это в одном файле, открываем его три раза group, podgroup, tovar и делаем то же самое
group, podgroup тэги UNIQUE

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