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


moderator




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


SergKis пишет:

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


OK

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



Пост 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 
ПрофильЦитата Ответить
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 
ПрофильЦитата Ответить



Пост 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 
ПрофильЦитата Ответить
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 
ПрофильЦитата Ответить



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


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

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




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


SergKis пишет:

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


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

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



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


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


Забрал

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




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


SergKis пишет:

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


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

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



Пост 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 
ПрофильЦитата Ответить
moderator




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


SergKis пишет:

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


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

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



Пост 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 
ПрофильЦитата Ответить
moderator




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


SergKis пишет:

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


Ok

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



Пост 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 
ПрофильЦитата Ответить



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


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

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



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


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

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



Пост 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 
ПрофильЦитата Ответить
moderator




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


SergKis пишет:

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


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

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


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


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

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



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

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