Автор | Сообщение |
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; - новые и обновленные старые примеры (как обычно ).
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
Vlad04
|
| постоянный участник
|
Пост N: 808
Зарегистрирован: 13.10.05
|
|
Отправлено: 17.02.19 13:37. Заголовок: Не понял ? Какая вло..
Не понял ? Какая вложенность здесь ? Группа и подгруппа ? Классический Трей- файлы директории.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2236
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.02.19 14:10. Заголовок: Vlad04 пишет Не поня..
Vlad04 пишет цитата: | Не понял ? Какая вложенность здесь ? Группа и подгруппа ? |
| Вложенность обыкновенная, показана последняя часть 2-а node и item: Краски - группа Акриловые - подгруппа Водоэмульсионные - ... Масляные - ... ... Краска белая марка ... - товар\материал Краска синяя марка ... - ... ... Над группой может быть Краски для внутренних работ Краски для наружных работ ... Еще выше может быть Материалы для внутренних работ Материалы для наружных работ ... Классическое дерево, не хуже директорий
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2237
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.02.19 11:29. Заголовок: gfilatov2002 Поправ..
gfilatov2002 Поправил Method Enabled (сейчас он не работает совсем, с изменениями - частично) CLASS TSBrowse FROM TControl ... DATA aOldParams DATA aOldEnabled #ifdef __EXT_USERKEYS__ ... METHOD Enabled( lEnab, Clr1, Clr2 ) //JP 1.55 ... METHOD Enabled( lEnab, Clr1, Clr2 ) CLASS TSBrowse Local nI Default lEnab := .T., Clr1 := CLR_GRAY, Clr2 := CLR_HGRAY IF ValType( lEnab ) == "L" IF !lEnab IF ::lEnabled ::aOldEnabled := { ::hBrush, {} , ::nClrPane } For nI := 1 TO Len( ::aColumns ) AAdd( ::aOldEnabled[2], ::aColumns[ nI ]:Clone() ) ::aColumns[ nI ]:SaveColor() Next ENDIF ::lEnabled := .F. ::SetColor( { 2 }, { CLR2 } ) ::SetColor( { 3, 4 }, { CLR1, CLR2 } ) ::SetColor( { 9, 10 }, { CLR1, CLR2 } ) ::SetColor( { 16, 17 }, { CLR1, CLR2 } ) ::SetColor( { 18, 19 }, { CLR1, CLR2 } ) ::nClrPane := CLR2 ELSE IF ! ::lEnabled For nI := 1 TO Len( ::aColumns ) ::aColumns[ nI ]:RestColor() SetColor( , ::aColumns[ nI ]:aColors, nI ) Next If HB_ISARRAY( ::aOldEnabled ) .and. ! empty( ::aOldEnabled[1] ) AEval( ::aOldEnabled[2], {|oc,nc| ::aColumns[ nc ] := oc:Clone() } ) ::hBrush := ::aOldEnabled[1] ::nClrPane := ::aOldEnabled[3] EndIf ENDIF ::lEnabled := .T. ENDIF ::Refresh() /* этот кусок кода работает для варианта колонки помещаются на экране тсб и нет hscroll. для тсб со горизонтальным скролингом добавка ниже не помогает потому я оставил в коментариях, т.е. при исп. :Enabled(...) допиливать за вызовом самому (точно не понял, как быть) If ! ::lNoHScroll .and. ::oHScroll != Nil ::oHScroll:SetPos( ::nCell ) EndIf ::ResetVScroll( .T. ) ::oVScroll:SetRange( 0, 0 ) ::oHScroll:SetRange( 0, 0 ) ::Refresh() If ! ::lNoHScroll .and. ::oHScroll != Nil ::oHScroll:SetPos( ::nCell ) EndIf ::ResetVScroll( .T. ) ::oHScroll:SetRange( 0, 0 ) */ ENDIF RETURN 0 ... Проверка в примере Advanced\TsBrowse TsbTest.prg ... Case nSample = 1 DEFINE TBROWSE Brw_1 AT 0, 0 ALIAS "Employee" ; ... :UserKeys( VK_F5, {|obr| oBr:Enabled(.F.), ; MsgBox('Test oBrw:Enabled(.F.\.T.)', oBr:cControlName), ; oBr:Enabled(.T.), oBr:SetFocus() } ) END TBROWSE ... Надо отметить, что hscroll при нажатии F5 пропадает сразу и не восстанавливается, но и колонок за пределы тсб нет.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2238
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.02.19 11:34. Заголовок: PS Есть faq с прорис..
PS Есть faq с прорисовкой Header, Footer фантомных колонок, но это др. история
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1444
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.02.19 11:53. Заголовок: SergKis пишет: Meth..
SergKis пишет: цитата: | Method Enabled (сейчас он не работает совсем |
| Посмотрел в примере Advanced\Tsb_seek рабочий вызов этого метода Что здесь не так
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2239
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.02.19 12:02. Заголовок: PPS Уточнение по TsB..
PPS Уточнение по TsBrowse. HScroll есть, что то я просмотрел его В примере Tsb_Basic\demo4.prg с добавкой DEFINE BUTTONEX Button_Go Row y + 2 Col x WIDTH 40 HEIGHT 24 CAPTION "Go" ACTION ( oBr:SetFocus(), oBr:GotoRec(This.Recno.Value, This.RowPos.Value ) ) FONTSIZE 9 FONTBOLD .F. END BUTTONEX x += This.RowPos.Width + 20 DEFINE BUTTONEX Button_Msg Row y + 2 Col x WIDTH 40 HEIGHT 24 CAPTION "Msg" ACTION ( oBr:Enabled(.F.), MsgBox('Test oBrw:Enabled(.F.\.T.)', This.name), ; oBr:Enabled(.T.), oBr:SetFocus() ) FONTSIZE 9 FONTBOLD .F. END BUTTONEX ... работает при строках меньше и больше :RowCount() нормально, но на примере Андрея, на котором тренировался, при VScroll наличии пропадают стабильно стрелки управления или сам VScroll полностью и спасает добавка STAT FUNC _myTsb( obrw, n ) If n == 1 obrw:Enabled(.F.) Else obrw:Enabled(.T.) obrw:ResetVScroll( .T. ) obrw:oVScroll:SetRange( 0, 0 ) obrw:oHScroll:SetRange( 0, 0 ) obrw:Refresh() obrw:ResetVScroll( .T. ) obrw:oHScroll:SetRange( 0, 0 ) obrw:SetFocus() EndIf RETURN Nil
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2240
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.02.19 12:41. Заголовок: gfilatov2002 пишет П..
gfilatov2002 пишет цитата: | Посмотрел в примере Advanced\Tsb_seek рабочий вызов этого метода |
| Пример с методом работает У меня все время глюки с методом (отказадся использовать, только переменную :lEnabled). Спасает сохранение\восстановление колонок, hBrush и борьба с VScroll. Ok, буду бороться вне метода
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1445
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.02.19 12:48. Заголовок: SergKis пишет: Спас..
SergKis пишет: цитата: | Спасает сохранение\восстановление колонок, hBrush |
| Переписал этот метод с учетом Вашего вклада следующим образом: METHOD Enabled( lEnab ) CLASS TSBrowse Local nI Default lEnab := .T. IF ValType( lEnab ) == "L" IF !lEnab IF ::lEnabled ::aOldEnabled := { ::hBrush, {}, ::nClrPane } For nI := 1 TO Len( ::aColumns ) AAdd( ::aOldEnabled[2], ::aColumns[ nI ]:Clone() ) ::aColumns[ nI ]:SaveColor() Next ENDIF ::lEnabled := .F. ::SetColor( { 2 }, { ::nCLR_HGRAY } ) ::SetColor( { 3, 4 }, { ::nCLR_GRAY, ::nCLR_HGRAY } ) ::SetColor( { 9, 10 }, { ::nCLR_GRAY, ::nCLR_HGRAY } ) ::SetColor( { 16, 17 }, { ::nCLR_GRAY, ::nCLR_HGRAY } ) ::SetColor( { 18, 19 }, { ::nCLR_GRAY, ::nCLR_HGRAY } ) ::nClrPane := ::nCLR_HGRAY ::hBrush := CreateSolidBrush( GetRed( ::nClrPane ), GetGreen( ::nClrPane ), GetBlue( ::nClrPane ) ) ELSE IF ! ::lEnabled For nI := 1 TO Len( ::aColumns ) ::aColumns[ nI ]:RestColor() SetColor( , ::aColumns[ nI ]:aColors, nI ) Next If HB_ISARRAY( ::aOldEnabled ) .and. ! Empty( ::aOldEnabled[1] ) AEval( ::aOldEnabled[2], {|oc, nc| ::aColumns[ nc ] := oc:Clone() } ) DeleteObject( ::hBrush ) ::hBrush := ::aOldEnabled[1] ::nClrPane := ::aOldEnabled[3] EndIf ENDIF ::lEnabled := .T. ENDIF ::Refresh() ENDIF RETURN 0 Хуже вроде не стало. Благодарю за помощь
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2241
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.02.19 13:42. Заголовок: gfilatov2002 :sm36..
gfilatov2002 Было бы хорошо добавить параметры Clr1, Clr2, для управления, если BackColor окна не CLR_GRAY\HGREY
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1446
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.02.19 13:49. Заголовок: SergKis пишет: для..
SergKis пишет: цитата: | для управления, если BackColor окна не CLR_GRAY\HGREY |
| Для этого я добавил в класс DATA nClr_Gray AS NUMERIC INIT CLR_GRAY DATA nClr_HGray AS NUMERIC INIT CLR_HGRAY
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2242
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.02.19 13:49. Заголовок: PS И добавить сохран..
PS И добавить сохранение\восстановление цветов SuperHeader
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2243
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.02.19 13:51. Заголовок: gfilatov2002 пишет Д..
gfilatov2002 пишет цитата: | Для этого я добавил в класс |
| Похоже глаз замылился, не увидел, сору.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2244
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.02.19 14:37. Заголовок: gfilatov2002 Добави..
gfilatov2002 Добавил SuperHeader IF ::lEnabled ::aOldEnabled := { ::hBrush, {}, ::nClrPane, {} } For nI := 1 TO Len( ::aColumns ) AAdd( ::aOldEnabled[2], ::aColumns[ nI ]:Clone() ) ::aColumns[ nI ]:SaveColor() Next If ::lDrawSuperHd AEval( ::aSuperHead, {|as| AAdd( ::aOldEnabled[4], { as[4], as[5], as[11] } ) } ) EndIf ENDIF ... If HB_ISARRAY( ::aOldEnabled ) .and. ! Empty( ::aOldEnabled[1] ) AEval( ::aOldEnabled[2], {|oc, nc| ::aColumns[ nc ] := oc:Clone() } ) DeleteObject( ::hBrush ) ::hBrush := ::aOldEnabled[1] ::nClrPane := ::aOldEnabled[3] If ::lDrawSuperHd AEval( ::aOldEnabled[4], {|as,ns| ::aSuperHead[ns][ 4] := as[1], ; ::aSuperHead[ns][ 5] := as[2], ; ::aSuperHead[ns][11] := as[3] } ) EndIf EndIf ... Пример Tsb_seek добавил ... ADD COLUMN TO br_zaw DATA {|| test->street } ALIGN DT_LEFT, DT_CENTER, DT_CENTER TITLE 'Street' SIZE 300 br_zaw:hBrush := CreateSolidBrush( 242, 245, 204 ) ADD SUPER HEADER TO br_zaw FROM COLUMN 1 TO COLUMN br_zaw:nColCount() ; TITLE " SuperHeader" br_zaw:bUserKeys := {|nKey,nFlags| fszuk1(nkey,nflags) } ... Работает
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1447
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.02.19 15:24. Заголовок: SergKis пишет: Доба..
SergKis пишет: цитата: | Добавил SuperHeader ... Работает |
| Спасибо
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6180
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.02.19 15:35. Заголовок: Григорий, я пример в..
Григорий, я пример выслал на почту. Там наверное нужно переделать сохранение/восстановление цветов с учётом этих новых правок ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2246
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.02.19 12:57. Заголовок: gfilatov2002 По пов..
gfilatov2002 По поводу предложения в tree node\item cargo. То что я использовал _HMG_aControlHeadClick, наверно, не очень правильно. Лучше _HMG_aControlMiscData1[ k ] := { 0, aImgNode, aImgItem, {} }, плюс использовать NodeHandle := _HMG_NodeHandle[ NodeIndex ] и AAdd( a_Node_Item_Cargo, { NodeHandle, Cargo } ) тогда вся работа с node\item cargo - это поиск по NodeHandle для удаления, выбора и сортировка будет без разницы. При добавлении новых node\item вставлять их в самый конец массива. По мне так все ровненько выходит. Cargo на node\item это небходимость упрощения работы. Сейчас приходится добавлять в node\item ключи (счетчики пунктов), потом бегать по дереву составляя выбранный ключ и потом через табл. перекодировки добывать реальный ключ и через него др. данные, но и это не спасает для трех языков одновременно (unicode версия) и в дереве могут находится сразу 3-и термина языковых одновременно, т.е. с одинаковыми ключами и разными счетчиками пунктов. Мороки много, так, что исп. tree не хочется
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1448
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.02.19 22:16. Заголовок: SergKis пишет: То ч..
SergKis пишет: цитата: | То что я использовал _HMG_aControlHeadClick, наверно, не очень правильно. |
| Возможно. Но, как известно, лучшее - враг хорошего В тираж ушло Ваше первое решение, оно органично вписалось в текущую логику при построении дерева. Также добавил поддержку псевдо-объекта This для этого Cargo как показано ниже цитата: | *-----------------------------------------------------------------------------* FUNCTION OnReturnTree() *-----------------------------------------------------------------------------* LOCAL nItm := This.Value LOCAL cWnd := ThisWindow.Name LOCAL cCtl := This.Name LOCAL lIsN := TreeItemIsTrueNode ( cCtl, cWnd, nItm ) LOCAL cItm := This.&(cCtl).Item( nItm ) LOCAL cCrg := This.&(cCtl).Cargo( nItm ) MsgBox( "#" + hb_ntos (nItm) + " --> " + cItm + ' ' + ; iif( lIsN, 'TrueNode', 'Node' )+ CRLF + ; cValToChar(cCrg), ; cWnd + '.' + cCtl ) RETURN Nil *-----------------------------------------------------------------------------* Procedure AddItemTest() *-----------------------------------------------------------------------------* LOCAL i Form_1.Tree_1.DeleteAllItems Form_1.Tree_1.AddItem( 'New Root Item 1' , 0 ) Form_1.Tree_1.AddItem( 'New Item 1.1' , 1 ) Form_1.Tree_1.AddItem( 'New Item 1.2' , 1 ) Form_1.Tree_1.AddItem( 'New Item 1.3' , 1 ) Form_1.Tree_1.AddItem( 'New Root Item 2' , 0 ) Form_1.Tree_1.AddItem( 'New Item 2.1' , 5 ) Form_1.Tree_1.AddItem( 'New Item 2.2' , 5 ) Form_1.Tree_1.AddItem( 'New Item 2.3' , 5 ) Form_1.Tree_1.AddItem( 'New Item 1.4' , 1 ) Form_1.Tree_1.AddItem( 'New Item 1.4.1' , 5 ) For i := 1 To Form_1.Tree_1.ItemCount Form_1.Tree_1.Cargo( i ) := Form_1.Tree_1.Item( i ) Next Return |
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1449
Зарегистрирован: 11.02.10
|
|
Отправлено: 20.02.19 11:57. Заголовок: Всем, кому это интересно
Подготовил третий релиз-кандидат для новой сборки 19.02 Кратко, что нового (см.ниже) Скрытый текст
* Fixed a program crash happens occasionally in Windows 10 only and only for non-admin users. * Added the new class TDlu2Pix for managing of the UI controls sizing. * Added the new ON INIT <bBlock> clause for the basic (non all) controls. Example: DEFINE LABEL Label_1 ON INIT {|| This.Row := :Y, This.Col := :X, This.Width := :W1,; This.Height := :H1, :Y += This.Height + :GapsHeight } END LABEL * ACTIVATE WINDOW command supports an optional ON INIT clause. * TREE control supports an optional CARGO clause for the nodes and items at theirs definition, i.e. NODE <text> [ IMAGES <aImage> ] [ ID <id> ] [ CARGO <Cargo> ] TREEITEM <text> [ IMAGES <aImage> ] [ ID <id> ] [ CARGO <Cargo> ] * The Getbox control's value with "@K" PICTURE property will be selected at ON GOTFOCUS event. * 'Application' object supports the read/write property 'Object'. Syntax: Application.Object [ := <arg> ] * Updated the TSBrowse, RDDLeto and Sqlite3 libraries. * Updated HMGS-IDE to version 1.4.3.6. * Updated Harbour Compiler 3.2.0dev to a recent Git-version. (ChangeLog Last Entry: 2019-02-11 13:51) * Added the new interesting samples and updated some Advanced samples.
| Благодарю Сергея Киселева за неоценимую помощь в подготовке этой сборки Возможно, Вы хотите присоединиться к команде разработчиков Минигуи
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2247
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.02.19 14:01. Заголовок: gfilatov2002 пишет В..
gfilatov2002 пишет цитата: | Возможно, Вы хотите присоединиться к команде разработчиков Минигуи |
| Думаю, что нет, т.к. практически все разночтения между версиями hmg текущей и нашей (в базе 2.07) сняты. Товарищ, по работе, переводит на VC2017 hb в unucod с LV866 по правилам hb и тек. нашу версию hmg + C либы. Я максимально сближаю нашу версию hmg с текущей. В планах, последним шагом, тек. версию hmg сделать unicode, т.е. переползти на родную hmg
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2248
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.02.19 16:27. Заголовок: gfilatov2002 Неболь..
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|