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




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


постоянный участник




Пост N: 6593
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.02.20 13:00. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Андрею должно понравится такое изменение:


Мне понравилось ! Спасибо !

SergKis пишет:

 цитата:
что бы не делать доп. переменных, а использовать :cargo колонки, например (от Андрея):


Да, это очень удобно получается. Загружаешь в массив короткий справочник типа:
{1, "В офисе "} 
{2, "отданы лично в руки "}
{3, "отданы Посыльному "}

А потом бровс сам показывает вместо кодов нужные наименования через функцию:
FUNCTION Select2Array(xVal,aDim)  
LOCAL nI, cRet := "none Dim"

FOR nI := 1 TO LEN(aDim)
IF xVal == aDim[nI,1]
cRet := aDim[nI,2]
ENDIF
NEXT

RETURN cRet

Ну а в oCol:bPrevEdit - показ выбора из этого массива SelectWho(ob, oc:Cargo) и потом запись в базу WriteColum4(ob).

Что-то форум потерял предыдущую тему. Не понятно будет о чем речь идёт...

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



Пост N: 3075
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.02.20 15:08. Заголовок: Andrey пишет Ну а в ..


Andrey пишет
 цитата:
Ну а в oCol:bPrevEdit - показ выбора из этого массива SelectWho(ob, oc:Cargo)


Можно упростить
 
oCol := oBrw:GetColumn("Name_4")
oCol:Cargo := oKeyData() // Get2DimCol4() // получить массив для колонки 4
oCol:bDecode := {|val,ob,nc,oc| nc:=ob, oc:Cargo:Get(val, val) } // если для кода нет наименования, будет сам код
oCol:nAlign := DT_CENTER
oCol:cPicture := REPL("x",25)
oCol:lEdit := .T.
oCol:bPrevEdit := {|val,ob,nc,oc| SelectWho(ob, oc:Cargo), WriteColum4(ob), ob:Setfocus(), FALSE }
// заполним из dbf коды и названия для колонки
USE ... ALIAS SPR NEW SHARED
dbEval({|| oCol:Cargo:Set(FIELD->KOD, FIELD->NAME) })
USE
dbSelectArea(oBrw:cAlias)
...



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



Пост N: 3076
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.02.20 15:58. Заголовок: PS массив получить т..


PS
массив получить так
oCol:CargoGetAll(.T.) // массив наименований для combobox например
oCol:CargoGetAll(.F.) // массив {{kod, name},..., {kodN, nameN}}
т.е.
oCol:bPrevEdit := {|val,ob,nc,oc| SelectWho(ob, oc:Cargo:GetAll(.F.)), WriteColum4(ob), ob:Setfocus(), FALSE }

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




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


Снова обновил сборку 20.01 (Update 7) с учетом последних наработок

Базовый дистрибутив для BCC 5.8.2 находится по адресу

http://hmgextended.com/files/CONTRIB/hmg-20.01-setup.exe

Обновил также архив для бесплатного Embarcadero C++ 10.1 Berlin compiler по адресу

http://hmgextended.com/files/CONTRIB/hmg2001_bcc101.exe

Благодарю за ваше внимание

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



Пост N: 21
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 01.03.20 14:54. Заголовок: Из замеченного, если..


Из замеченного, если в версии bcc101 подменить библиотеки hblang.lib hbcpage.lib от BCC 5.8.2
то установка русского языка отрабатывает нормально, включая обработку ошибок.
На некоторых версиях ОС проявляется ошибка ilink32, "лечение" описано тут
click here
может кому то пригодится.

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




Пост N: 1661
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.03.20 11:42. Заголовок: Всем кому это интересно


Завершена подготовка новой сборки 20.03, которая будет опубликована на следующей неделе.

Кратко, что нового:
Скрытый текст
Благодарю за ваше внимание

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




Пост N: 6604
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.03.20 19:41. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
которая будет опубликована на следующей неделе.


Ждем с нетерпением !

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




Пост N: 1662
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.03.20 20:35. Заголовок: Andrey пишет: Ждем ..


Andrey пишет:

 цитата:
Ждем с нетерпением


Завтра буду готовить финальную версию инсталлятора для этой сборки

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




Пост N: 1663
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.03.20 09:25. Заголовок: Всем кому это интересно


Опубликована новая сборка 20.03 для BCC 5.8.2 и компиляторов Harbour и xHarbour.

Базовый дистрибутив находится по адресу

http://hmgextended.com/files/CONTRIB/hmg-20.03-setup.exe

Добавил также архив для бесплатного Embarcadero C++ 10.1 Berlin compiler

http://hmgextended.com/files/CONTRIB/hmg2003_bcc101.exe

В марте этого года исполнилось ровно 15 лет с момента начала разработки этой версии библиотеки

Выпуск последующих обновлений будет зависеть от активности и поддержки со стороны пользователей ее разработки.

Отдельная благодарность - Андрею Верченко, Диме (админу этого форума) и Саше Савову из Болгарии за их материальную поддержку

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




Пост N: 1664
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 01.04.20 09:56. Заголовок: Всем кому это интересно


Сделал "тихое" обновление сборки 20.03 после повторного исправления следующего изменения:

 цитата:
* Enhanced: Splitboxed TOOLBAR control supports the changing of a 'Caption'
property at runtime.

Проблема была указана на английском форуме библиотеки.
Если вы не используете данную возможность в своей программе, то это обновление является необязательным.

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




Пост N: 1675
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.04.20 14:54. Заголовок: Всем кому это интересно


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

Благодарю за ваше внимание

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



Пост N: 3129
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.04.20 16:42. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение:
TsBrowse.ch
 
#xcommand @ <row>,<col> TBROWSE <name> ;
...
[ <cur: DBLCURSOR, DOUBLE CURSOR, FIXED> ] ;
[ <emptyval: COLEMPTY,COLSEMPTY,EMPTYVALUE> ] ;

=>;
...
[ <number> ], [ <aBrush> ], [ <aEdit> ], [ <Adjust> ], [ <.ladjust.> ], ;
[ <.emptyval.> ] )


#xcommand DEFINE TBROWSE <name> ;
...
[ <emptyval: COLEMPTY,COLSEMPTY,EMPTYVALUE> ] ;

=>;
...
[ <number> ], [ <aBrush> ], [ <aEdit> ], [ <Adjust> ], [ <.ladjust.> ], ;
[ <.emptyval.> ] ) ;;

with object <name>
...
#xcommand DEFINE TBROWSE <name> OBJ <obrw> ;
...
[ <cur: DBLCURSOR, DOUBLE CURSOR, FIXED> ] ;
[ <emptyval: COLEMPTY,COLSEMPTY,EMPTYVALUE> ] ;

=>;
...
[ <number> ], [ <aBrush> ], [ <aEdit> ], [ <Adjust> ], [ <.ladjust.> ], ;
[ <.emptyval.> ] ) ;;

with object <obrw>
...

TsBrowse.prg
 
FUNCTION _DefineTBrowse ( ControlName, ParentFormName, nCol, nRow, nWidth, nHeight, ;
...
lLoad, lDblCursor, aNames, aFooters, nColNumber, aBrush, aEdit, Adjust, ;
lAdjust, lEmptyValToChar )
...
ELSE
// BK
IF HB_ISARRAY( uAlias )
aArray := uAlias
uAlias := NIL
ENDIF

IF HB_ISLOGICAL(aEdit)
...
// BK
IF HB_ISARRAY(aArray)
oBrw:SetArrayTo( aArray, {hFontHead, hFontFoot} , aHeaders, aWidths, aFooters, aPicture, aJust, aNames )
ELSE
If ! empty(hFontHead) ; oBrw:hFontHead := hFontHead
EndIf
If ! empty(hFontFoot) ; oBrw:hFontFoot := hFontFoot
EndIf
ENDIF


IF HB_ISARRAY(aBrush) .and. Len(aBrush) > 2
...
IF ( nColums := Len( oBrw:aColumns ) ) > 0 /* BK 18.05.2015 */
...
// BK
n := nColums

IF ! HB_ISARRAY( aArray )
IF HB_ISARRAY(aNames)
j := Min(Len(aNames), n)
FOR t := 1 TO j
IF ! Empty(aNames[ t ]) .and. HB_ISCHAR(aNames[ t ])
oBrw:aColumns[ t ]:cName := aNames[ t ]
ENDIF
NEXT
ENDIF

IF HB_ISLOGICAL(aFooters) .and. aFooters
aFooters := Array( n )
aFill( aFooters, " " )
ENDIF

IF HB_ISARRAY(aFooters)
j := Min( Len(aFooters), n )
FOR t := 1 TO j
IF aFooters[ t ] != NIL
If HB_ISCHAR( aFooters[ t ] ) .and. ";" $ aFooters[ t ]
aFooters[ t ] := StrTran( aFooters[ t ], ";", Chr(13) )
EndIf
oBrw:aColumns[ t ]:cFooting := aFooters[ t ]
ENDIF
NEXT
oBrw:lDrawFooters := .T.
oBrw:lFooting := .T.
oBrw:nHeightFoot := oBrw:nHeightCell
ENDIF
ENDIF

IF HB_ISARRAY(aEdit)
...
IF ! Empty(lDblCursor)
AEval( oBrw:aColumns, {|oCol| oCol:lFixLite := .T. } )
ENDIF
IF ! empty(lEmptyValToChar)
AEval( oBrw:aColumns, {| oCol| oCol:lEmptyValToChar := .T. } )
ENDIF


nW := 0
IF nColNumber != NIL
IF HB_ISLOGICAL(nColNumber)
nColNumber := iif( nColNumber, 1, NIL )
ELSEIF HB_ISARRAY(nColNumber)
IF Len(nColNumber) > 1
nW := nColNumber[2]
nColNumber := nColNumber[1]
ELSE
nColNumber := 1
ENDIF
ENDIF
ENDIF

IF HB_ISNUMERIC(nColNumber)
nColNumber := iif( nColNumber > 0 .and. nColNumber <= n, nColNumber, 1 )
IF oBrw:lIsDbf

DEFINE COLUMN oCol DATA 'hb_ntos(iif( IndexOrd() > 0, ORDKEYNO(), RecNo() ))' ;
HEADER '#' ;
FOOTER ' ' ;
ALIGN 1, 1, 1 ;
WIDTH 80 ;
PICTURE '9999999' ;
MOVE 0 ;
DBLCURSOR ;
NAME ORDKEYNO

oCol:lEdit := .F.
oCol:cAlias := oBrw:cAlias
oCol:cFooting := { |nc,ob| nc := ob:nLen, iif( Empty(nc), '', hb_ntos(nc) ) }
#ifndef __XHARBOUR__
oCol:cData := 'hb_macroblock("'+oCol:cField+'")'
oCol:bData := hb_macroblock( oCol:cField )
#else
oCol:cData := '{|| '+oCol:cField+'}'
oCol:bData := &( '{|| '+oCol:cField+'}' )
#endif
ELSEIF oBrw:lIsArr

DEFINE COLUMN oCol DATA {|| NIL } ;
HEADER '#' ;
FOOTER ' ' ;
ALIGN 1, 1, 1 ;
WIDTH 80 ;
PICTURE '99999' ;
MOVE 0 ;
DBLCURSOR ;
NAME ARRAYNO

oCol:cFooting := { |nc,ob| nc := ob:nLen, iif( Empty(nc), '', hb_ntos(nc) ) }
oCol:bValue := { |xx,ob| xx := ob, hb_ntos( ob:nAt ) }

ENDIF

oCol:lEmptyValToChar := .T.
oCol:cFieldTyp := 'N'
oCol:nFieldLen := 10
oCol:nFieldDec := 0

oBrw:InsColumn( nColNumber, oCol )

oBrw:nCell := nColNumber + 1
oBrw:nFreeze := nColNumber
oBrw:lLockFreeze := .T.

IF HB_ISNUMERIC(nW) .and. nW > 0
...

Пример ADVANCED\Tsb_Array_2\demo3.prg Скрытый текст


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



Пост N: 3130
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.04.20 16:49. Заголовок: PS Для колонки нумер..


PS
Для колонки нумерации ARRAYNO надо поправить PICTURE '9999999'
как у ORDKEYNO, забыл это сделать.

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



Пост N: 3131
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.04.20 16:52. Заголовок: PS Возможно, колонки..


PS
Возможно, колонки нумерации надо назвать одинаково ?
Названия колонок оставил, как использую сам.

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



Пост N: 3132
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.04.20 17:34. Заголовок: PS2 Еще можно добави..


PS2
Еще можно добавить
TsBrowse.ch (в определения команд выше добавить)
 
[ <emptyval: COLEMPTY,COLSEMPTY,EMPTYVALUE> ] ;
[ <gotfocusel: GOTFOCUSSELECT,GOTFOCUSELECT> ] ;

...
[ <.emptyval.> ], [ <.gotfocusel.> ] ) ...
...

TsBrowse.prg
 
FUNCTION _DefineTBrowse ( ControlName, ParentFormName, nCol, nRow, nWidth, nHeight, ;
...
lAdjust, lEmptyValToChar, lOnGotFocusSelect )
...
IF ! empty(lEmptyValToChar)
AEval( oBrw:aColumns, {| oCol| oCol:lEmptyValToChar := .T. } )
ENDIF
IF ! empty(lOnGotFocusSelect)
AEval( oBrw:aColumns, {| oCol| oCol:lOnGotFocusSelect := .T. } )
ENDIF

nW := 0
...

И в примере
 
DEFINE TBROWSE oBrw ;
AT nY, nX ALIAS aArray WIDTH nW HEIGHT nH CELL ;
FONT { "Norm", "Bold", "Bold" } ;
BRUSH { 255, 255, 240 } ;
HEADERS aHead ;
COLSIZES aSize ;
PICTURE aPict ;
JUSTIFY aAlign ;
COLNAMES aName ;
COLNUMBER { 1, 40 } ;
FOOTERS aFoot ;
FIXED ADJUST COLEMPTY ;
ENUMERATOR EDIT ;
GOTFOCUSSELECT



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




Пост N: 1676
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.04.20 20:25. Заголовок: SergKis пишет: Еще ..


SergKis пишет:

 цитата:
Еще можно добавить


Добавил все ваши предложения без изменений, пример работает нормально.
Благодарю за помощь

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




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


Подготовил 2-й релиз-кандидат для новой сборки 20.04.
Что нового:
Скрытый текст
Благодарю за ваше внимание

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



Пост N: 149
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 22.04.20 06:46. Заголовок: TBROWSE vs мышь


В TBrowse использую событие ON CHANGE, в котором некая функция выводит в
STATUSBAR дополнительную информацию из текущей строки:
...
DEFINE TBROWSE Br_omes AT h_tlbar,0 ALIAS (al) WIDTH w_br HEIGHT h_br ;
BOLD CELLED ;
ON CHANGE Form_oMes.StatusBar.Item(1) := f_corr(1,al)
...
Если движение по строкам осуществляется клавиатурой, то все работает нормально,
в STATUSBAR'е идет корректное отображение данных функцией f_corr().
Если перемещение производить мышью, указывая строку в TBrowse или использовать
колесо прокрутки, то после отработки события ON CHANGE, данные в STATUSBAR'е
исчезают, т.е поле очищается.
В Browse в аналогичной ситуации все отрабатывает нормально.

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




Пост N: 7181
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.04.20 08:05. Заголовок: alex_II Глянь приме..


alex_II
Глянь пример C:\MiniGUI\SAMPLES\Advanced\Tsb_config\
и функцию FUNCTION MyChangeBrowse
Вроде все работает и с мышкой

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



Пост N: 3145
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.04.20 22:39. Заголовок: gfilatov2002 Можно ..


gfilatov2002
Можно чуть поправить ? h_objmisc.prg
 
FUNCTION _wPost( nEvent, nIndex, xParam )
...
ENDIF
ELSEIF HB_ISCHAR( nIndex )
oWnd := _WindowObj( nIndex )
nIndex := NIL

ELSE
oWnd := _WindowObj( _HMG_THISFORMNAME )
ENDIF
...
FUNCTION _wSend( nEvent, nIndex, xParam )
...
ENDIF
ELSEIF HB_ISCHAR( nIndex )
oWnd := _WindowObj( nIndex )
nIndex := NIL

ELSE
oWnd := _WindowObj( _HMG_THISFORMNAME )
ENDIF
...


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




Пост N: 1682
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.04.20 09:57. Заголовок: SergKis пишет: чуть..


SergKis пишет:

 цитата:
чуть поправить ? h_objmisc.prg


OK

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



Пост N: 3146
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.04.20 12:42. Заголовок: gfilatov2002 Может ..


gfilatov2002
Может есть смысл добавить, что то такое ?
 
*-----------------------------------------------------------------------------*
FUNCTION _SetWindowThis ( i )
*-----------------------------------------------------------------------------*

IF Empty( i )

_PushEventInfo()

ELSE

IF HB_ISCHAR( i )
i := GetFormIndex( i )
ELSEIF HB_ISOBJECT( i )
i := iif( i:ClassName == 'TSBROWSE', GetFormIndex( i:cParentWnd ), i:Index )
ENDIF

_PushEventInfo()

_HMG_ThisFormIndex := i
_HMG_ThisEventType := ''
_HMG_ThisType := 'W'
_HMG_ThisIndex := i
_HMG_ThisFormName := _HMG_aFormNames [ _HMG_ThisFormIndex ]
_HMG_ThisControlName := ""

ENDIF

RETURN NIL

Использовать например так
...
IF !IsWindowActive( Form_Client )

DEFINE WINDOW Form_Client ;
...
ELSE
// !!! так сейчас пишем
Form_Client.WIDTH := nWinWidth
Form_Client.HEIGHT := nWinHeight
Form_Client.Label_0.Value := cVal
CENTER WINDOW Form_Client

// !!! можем так делать ( это маленький кусочек )
_SetWindowThis( "Form_Client" )
This.WIDTH := nWinWidth
This.HEIGHT := nWinHeight
This.Label_0.Value := cVal
This.CENTER
_SetWindowThis()

ENDIF

Можно DEFINE сделать на ф-ю или команды аналогично IsWindowActive( Form_Client )

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




Пост N: 1683
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.04.20 12:53. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может есть смысл добавить


Благодарю за предложение
Это уже идея для новой сборки...
А подготовка апрельской сборки уже завершена, и она будет опубликована завтра

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



Пост N: 3147
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.04.20 12:56. Заголовок: PS Ошибся. Надо ..


PS
Ошибся. Надо
 
IF Empty( i )

_PopEventInfo()

ELSE


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



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


gfilatov2002 пишет
 цитата:
Это уже идея для новой сборки...


Есть ф-я _SetThisFormInfo (у меня давно исправлена) можно ее использовать
 
FUNCTION _SetThisFormInfo ( i ) // стек значений переменных _HMG_This...
LOCAL l := .T. // BK 18.05.2015

IF empty( i )

_PopEventInfo()

ELSE
IF HB_ISCHAR( i )
i := GetFormIndex( i )
l := .F.
ELSEIF HB_ISOBJECT( i )
i := iif( i:ClassName == 'TSBROWSE', GetFormIndex( i:cParentWnd ), i:Index )
l := .F.
ENDIF

_PushEventInfo()

_HMG_ThisEventType := iif( l, 'DEFINE_WINDOW', '' )
_HMG_ThisFormIndex := i
_HMG_ThisType := _HMG_aFormType [ i ]
_HMG_ThisIndex := i
_HMG_ThisFormName := _HMG_aFormNames [ i ]
_HMG_ThisControlName := ""

ENDIF

RETURN NIL


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




Пост N: 1684
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.04.20 22:21. Заголовок: SergKis пишет: Есть..


SergKis пишет:

 цитата:
Есть ф-я _SetThisFormInfo (у меня давно исправлена) можно ее использовать


Да, использовать/доработать уже существующую функцию, конечно, предпочтительнее.

Выполнил предложенные изменения в текущей сборке, контрольный пример отработал правильно.

 цитата:
_SetThisFormInfo(Form_1.Index) 
This.Browse_1.ColumnsAutoFitH()
This.CENTER

This.ACTIVATE
_SetThisFormInfo()


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

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




Пост N: 1685
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.04.20 09:54. Заголовок: Опубликована новая с..


Опубликована новая сборка 20.04 для BCC 5.8.2 и компиляторов Harbour и xHarbour.

Базовый дистрибутив находится по адресу

http://hmgextended.com/files/CONTRIB/hmg-20.04-setup.exe

Добавил также архив для бесплатного Embarcadero C++ 10.2 'Tokyo' compiler

http://hmgextended.com/files/CONTRIB/hmg2004_bcc102.exe

Для частного использования подготовлены еще два дистрибутива:


 цитата:
Harbour MiniGUI Extended Edition 20.04 (Release)

Harbour 3.2.0dev (r2004201301)

Harbour Make (hbmk2) 3.2.0dev (r2020-04-20 13:01)

gcc (MinGW-W64 i686-posix-sjlj, built by Brecht Sanders) 9.3.0

и

 цитата:
Harbour MiniGUI Extended Edition 20.04 (Release) (64-bit)

Harbour 3.4.0dev (64-bit) (2017-12-20 13:40)

Harbour Make (hbmk2) 3.4.0dev (64-bit) (2017-12-20 13:40)

gcc (GCC) 9.2.0 (64-bit)

доступ к которым открыт для всех, кто поддержал выпуск этой сборки материально.

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




Пост N: 7184
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.04.20 10:14. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

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


Там Forbidden.......подождем пока отвалится

ЗЫ
Социнжиниринг помог добраться куда надо :)

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




Пост N: 6640
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.04.20 11:39. Заголовок: Отличная новость ! ..


Отличная новость !
А Микрософтный компилятор где ?
Я уже с ним вожусь потихоньку. Мигрировать на него собираюсь.

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



Пост N: 3149
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.04.20 12:59. Заголовок: gfilatov2002 пишет В..


gfilatov2002 пишет
 цитата:
Выполнил предложенные изменения в текущей сборке,


Вариант _SetThisFormInfo() остался старый в последней сборке

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




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


SergKis пишет:

 цитата:
остался старый в последней сборке


Да, решил, что это подождет до следующего релиза
Добавил также новую команду:

 цитата:
#xtranslate SET WINDOW THIS TO [<w>] => _SetThisFormInfo( [<w>] )

Еще раз благодарю за Ваши идеи

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



Пост N: 3150
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.04.20 15:58. Заголовок: gfilatov2002 пишет Д..


gfilatov2002 пишет
 цитата:
Да, решил, что это подождет до следующего релиза
Добавил также новую команду:


Сделал эти изменения в MiniGuiBcc58, MiniGuiBcc102. Проверил сборку lib.
Все либы собрались. Примеры Tsb_array_2 все отработали в обоих bcc.
Пример с командой то же
 
...
LOCAL oThis, cForm := "Form_Client"
...
IF !_IsWindowActive( cForm )

DEFINE WINDOW &cForm ;
...
ELSE

SET WINDOW THIS TO cForm

oThis := This.Object
This.WIDTH := nWinWidth
This.HEIGHT := nWinHeight
This.Label_0.Value := cVal
This.CENTER

SET WINDOW THIS TO

ENDIF
...


Спасибо все работает

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




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


SergKis пишет:

 цитата:
все работает


Благодарю за подтверждение

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




Пост N: 1688
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.04.20 21:43. Заголовок: Andrey пишет: Микро..


Andrey пишет:

 цитата:
Микрософтный компилятор где ?

Свежий архив для этого компилятора положил в папку PRIVATE на сайте библиотеки (имя архива не изменял).

 цитата:
Harbour Build Info
---------------------------
Version: Harbour 3.2.0dev (r2002101434)
Compiler: Microsoft Visual C++ 19.24.28319 (32-bit)
Platform: Windows 10 10.0
PCode version: 0.3
ChangeLog last entry: 2020-02-10 15:34 UTC+0100 Aleksander Czajczynski (hb fki.pl)
ChangeLog ID: 123475ab11ba031e8b9c88138f2f0b24e4327e54
Built on: Mar 12 2020 10:55:14
Extra Harbour compiler options: -gc0
Extra C compiler options: -DHB_GC_AUTO -DHB_GUI -DHB_NO_TRACE
Build options: (C++ mode) (Clipper 5.3b) (Clipper 5.x undoc)



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




Пост N: 6641
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.05.20 16:45. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Свежий архив для этого компилятора положил в папку PRIVATE на сайте библиотеки (имя архива не изменял).


Спасибо БОЛЬШОЕ, но не могу найти где брать.
Предыдущие ссылки не работают.
Если не трудно, прошу отправить ссылки мне на почту.


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




Пост N: 1689
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 01.05.20 18:03. Заголовок: Andrey пишет: прошу..


Andrey пишет:

 цитата:
прошу отправить ссылки мне на почту


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

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




Пост N: 6642
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.05.20 18:23. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Отправил ссылку по почте


Спасибо БОЛЬШОЕ !

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



Пост N: 3158
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.05.20 13:49. Заголовок: gfilatov2002 Правка..


gfilatov2002
Правка (в первой колонке oCol:nWidth всегда NIL получается)
 
METHOD LoadFields( lEditable, aColSel, cAlsSel, aNameSel, aHeadSel ) CLASS TSBrowse
...
cBlock := 'FieldWBlock("' + aStru[ nE, 1 ] + '",Select("' + cAlias + '"))'
::AddColumn( TSColumn():New( cHeading, FieldWBlock( aStru[ nE, 1 ], Select( cAlias ) ),cPicture, ;
{ ::nClrText, ::nClrPane }, { nAlign, DT_CENTER }, nSize,, lEditable,,, cOrder,,,, ;
5,,,, Self, cBlock ) )
IF ATail( ::aColSizes ) == NIL
::aColSizes[ Len( ::aColSizes ) ] := nSize
ENDIF

cName := ( cAlias )->( FieldName( nE ) )
...


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



Пост N: 3159
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.05.20 14:24. Заголовок: PS Изменение лучше с..


PS
Изменение лучше сделать тут
 
METHOD AddColumn( oColumn ) CLASS TSBrowse
...
If Len( ::aColSizes ) < Len( ::aColumns )
AAdd( ::aColSizes, oColumn:nWidth )
EndIf

If ATail( ::aColSizes ) == NIL
::aColSizes[ Len( ::aColSizes ) ] := oColumn:nWidth
ENDIF

If ::aPostList != Nil // from ComboWBlock function
...


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




Пост N: 1690
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 03.05.20 14:30. Заголовок: SergKis пишет: лучш..


SergKis пишет:

 цитата:
лучше сделать тут


Добавил, конечно.
Благодарю за помощь

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




Пост N: 6644
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.05.20 14:43. Заголовок: И вот эту ошибку тож..


И вот эту ошибку тоже бы убрать:
Error BASE/2017 Argument error: AEVAL Args: [1] = U [2] = B {|| ... }
--------------------------------- Stack Trace ---------------------------------
Called from AEVAL(0)
Called from MAIN(53) in module: demo5.prg


Делаю так:
aHead := NIL 
?v aHead


Пускай NIL возвращает, а то прога валится.

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



Пост N: 3160
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.05.20 14:57. Заголовок: Можно так поправить ..


Можно так поправить i_ini.ch
 
#command ?a [<arr>] => If( <arr> == NIL, , aEval( <arr>, { |xv, ne| _LogFile( (ne==1), ne, xv ), _LogFile() } ) )
#command ?v [<arr>] => If( <arr> == NIL, , aEval( <arr>, { |xv, ne| _LogFile( (ne==1), ne, iif( Valtype(xv) == "A", hb_valtoexp(xv), xv ) ), _LogFile() } ) )


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




Пост N: 6645
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.05.20 15:13. Заголовок: SergKis пишет: Можн..


SergKis пишет:

 цитата:
Можно так поправить i_ini.ch


Поправил, теперь ошибки нет и результата в _MsgLog.txt нет.
Будешь гадать почему нет
    ?v aHead


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



Пост N: 3161
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.05.20 15:34. Заголовок: Andrey пишет теперь ..


Andrey пишет
 цитата:
теперь ошибки нет и результата в _MsgLog.txt нет.


Так применяй правильно
? "aSize =", aSize
?v aSize
Ошибки нет и занятого места тоже в лог файле
aSize = NIL

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




Пост N: 6646
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.05.20 16:13. Заголовок: SergKis пишет: Так ..


SergKis пишет:

 цитата:
Так применяй правильно


Понял !

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



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


gfilatov2002
Может чуток подправим ?
 
METHOD LoadFields( lEditable, aColSel, cAlsSel, aNameSel, aHeadSel ) CLASS TSBrowse
...
Local cTmp, cHead, hFontH
...
hFont := iif( ::hFont != Nil, ::hFont, 0 )
hFontH := iif( ::hFontHead != Nil, ::hFontHead, ::hFont )

If cType == "C"
...
nSize := Max( GetTextWidth( 0, Replicate( "B", Len( cHeading )+1 ), hFontH ), nSize )
nSize += iif( ! Empty( cOrder ), 14, 0 )

ElseIf ValType( ::aColSizes ) == "A" .and. ! Empty( ::aColSizes ) .and. n <= Len( ::aColSizes )
...


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




Пост N: 1691
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.05.20 12:27. Заголовок: SergKis пишет: чуто..


SergKis пишет:

 цитата:
чуток подправим


Поправил, конечно.
Благодарю за помощь

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



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


gfilatov2002
Предложение по ENUMERATOR для нумерации только видимых колонок.
:lEnum := .F. меняет цвет, align. Словом не подошел.
Простое решение при :lEnum := .T.
 
METHOD DrawHeaders( lFooters ) CLASS TSBrowse
...
Local nDeltaLen, uTmp
...
IF ::lDrawSpecHd
...
if ::lEnum
cHeading := hb_ntos( nJ - iif( ::lSelector, 1, 0 ) )
IF ! empty( oColumn:cSpcHeading )
uTmp := iif( Valtype( oColumn:cSpcHeading ) == "B", Eval( oColumn:cSpcHeading, nJ, Self ), oColumn:cSpcHeading )
IF HB_ISNUMERIC ( uTmp ) ; cHeading := hb_ntos( uTmp )
ELSEIF HB_ISCHAR( uTmp ) ; cHeading := uTmp
ENDIF
ENDIF

if nI == nBegin .and. ::lSelector .or. nI == nLastCol
cHeading := ""
endif
else
...

Применение
...
mySetTsb( oBrw )
myColorTsb( oBrw ) // цвета на таблицу
myColorTsbElect( oBrw ) // цвета избранные
myDbfDelColTsb( oBrw )
myEnumTsb( oBrw )
mySet2Tsb( oBrw )

:bOnEscape := {|ob| DoMethod(ob:cParentWnd, "Release") } // выход по ESC

END TBROWSE ON END {|ob| ob:SetNoHoles(), ob:SetFocus() }
...
STATIC FUNCTION myEnumTsb( oBrw )
LOCAL oCol, nCnt := 0

FOR EACH oCol IN oBrw:aColumns
oCol:cSpcHeading := NIL
IF oCol:lVisible
oCol:cSpcHeading := hb_ntos( ++nCnt )
ENDIF
NEXT

RETURN NIL
...

Т.е. если убрать
myDbfDelColTsb( oBrw )
// myEnumTsb( oBrw )
mySet2Tsb( oBrw )
будет первоначальный алгоритм
При отработке ф-ии будет нумерация только видимых колонок
У Андрея есть пример, если что ...

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




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


SergKis пишет:

 цитата:
Предложение по ENUMERATOR для нумерации только видимых колонок.


Принято, конечно.

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



Пост N: 3168
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 12:35. Заголовок: gfilatov2002 Сделал..


gfilatov2002
Сделал изменения в TsBrowse (изменения в прилагаемом файле h_tbrowse.prg) Скрытый текст

Суть изменений получить все данные, которые получаются в :DrawLine() и :DrawSelect() для передачи
в ф-ю TSDrawCell(...) рисования строки. Не стал сокращать список параметров для класса TSBcell оставил все параметры.
Применение (в примерах прилагаются, нажатие кнопки F8 формирует _MsgLog.txt) такое
 
STATIC FUNCTION my0( oBrw )
LOCAL nAt, nCol, oCol, oCel
WITH OBJECT oBrw
:GoTop()
:DrawSelect()
? "-", :lDrawLine, :nRowPos, :aColumns[2]:oCell, :aDrawCols
:lDrawLine := .F.
:GoTop()
:DrawSelect()
? "#", :lDrawLine, :nRowPos, :aColumns[2]:oCell, :aDrawCols
:DrawLine()

FOR nAt := 1 TO :nLen
? nAt, :aColumns[2]:oCell
FOR nCol := 1 TO :nColCount()
oCol := :aColumns[ nCol ]
oCel := oCol:oCell
? ".", oCol:lVisible, nCol, oCel:nStartCol, oCol:cName, oCel:nAlign, oCel:nClrFore, oCel:nClrBack, oCel:uData
NEXT
:GoDown()
NEXT
?
:lDrawLine := .T.
:Reset()
END WITH

RETURN Nil

Запуск
demo5.exe // работа с массивом
demo5.exe * // работа с emploee.dbf
demo7.exe // работа с AbonItogo.dbf (файл и раскраска от Андрея)

Должно облегчить работу с Excel, наверное
PS
В h_tbrowse.prg есть изменения связанные с отступами слева, справа, которые мы обсуждали с Игорем в теме "Курсы ЦБ на дату"
это prg моей версии. В примере demo5 есть установка :nCellMarginLR := 1
Примеры и h_tbrowse.prg тут https://TransFiles.ru/eicsv

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


Пост N: 1549
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.05.20 12:41. Заголовок: Эти изменения отключ..


Эти изменения отключают или включают прорисовку?

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



Пост N: 3169
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 12:44. Заголовок: Отключают, т.е. при ..


Отключают, т.е. при :lDrawLine == .F. нет вывода на экран

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



Пост N: 3170
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 12:48. Заголовок: PS :aDrawCols - это ..


PS
:aDrawCols - это массив номеров колонок, которые на рисовались окне, формируется массив в :DrawLine()

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



Пост N: 3171
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 12:50. Заголовок: PSформируется массив..


PS
 цитата:
формируется массив в :DrawLine()


Пальцы на автомате, набрали, надо не :DrawLine(), а DrawSelect()

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


Пост N: 1550
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.05.20 12:56. Заголовок: Если практическое ис..


Если практическое использование - пробежаться по бровсу не тратя время на экранный вывод, то в случае с dbf можно проще
 
nRec := (oBrw:cAlias)->(RecNo())
while !(oBrw:cAlias)->( Eof())
for n := 1 To Len( oBrw:aColumns )
Eval( oBrw:aColumns[n]:bData)
end
(oBrw:cAlias)->(dbSkip(1))
end
(oBrw:cAlias)->(dbGoTo(nRec))


пробежимся по всем строкам и столбцам и прописовки не будет

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



Пост N: 3172
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 13:13. Заголовок: Haz пишет пробежимся..


Haz пишет
 цитата:
пробежимся по всем строкам и столбцам и прописовки не будет


В таком варианте
1. Eval( oBrw:aColumns[n]:bData) не учитывает oBrw:aColumns[n]:bValue и особенно :bDecode, использую широко, т.е. надо Brw:GetValue( n ) или oBrw:bDataEval(oCol ,[xVal], nCol)
2. нет цветов фона и текста в такой реализации (получаются из блоков кода от значения данных в cell), для Excel это может быть важно
3. для массива и dbf надо писать разный код
Можно, конечно писать, повторив часть кода из метода :DrawLine(), как сейчас и делали.
В моем предложении все данные на ячейку в TSBcell объкте по адресу oBrw:aColumns[ n ]:oCell, т.е. надо используем, нет то как раньше

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


Пост N: 1551
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.05.20 13:51. Заголовок: SergKis пишет: В мо..


SergKis пишет:

 цитата:
В моем предложении все данные на ячейку в TSBcell объкте по адресу oBrw:aColumns[ n ]:oCell, т.е. надо используем, нет то как раньше


Сергей , да я не против твоей доработки. В простых задачах она пригодиться. Я же в проектах не смогу ее использовать по следующим причинам.
1. Редко когда использую простой бровс, как правило есть несколько подчиненных обновляемых по bChange (есть и bOnDraw ) и тупить прогон по бровсу будет не из-за прорисовки
Можно отключать bChange при прогоне, а потом включать , но зачем ( см п 3 )
2. Выгрузку в Excel через OLE не делаю совсем т.к. много отчетов объемных более 1000 строк и 50 и более колонок и через олю на отчеты тратится неприемлемое время
Все отчеты только через XMLXLS . по скорости 20 минут это оля и 15 секунд xml
Цвета и текст задаю заранее для xml
3. Как уже писал ранее ,при помощи Андрею в его TSB_экспортах - считаю такие экспорты (средствами бровса) красивыми, но бесперспективными с точки зрения временных затрат
Бровс умеет работать только с текущей записью , зачем мне тормозной перебор если я могу взять весь массив данных сразу и делать с ним что хочу (aEval, dbEval, SQLExecute() и пр) .


В целом , для демонстрашки экспорта доработка хорошая, практически не знаю зачем

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




Пост N: 1693
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.05.20 14:17. Заголовок: SergKis пишет: Сдел..


SergKis пишет:

 цитата:
Сделал изменения в TsBrowse (изменения в прилагаемом файле h_tbrowse.prg)


Обязательно проанализирую и включу эти изменения в новую сборку (с учетом Вашего мнения и мнения Игоря, как главных разработчиков дополнений к TSBrowse).
Благодарю за Вашу помощь

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



Пост N: 3173
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 14:19. Заголовок: Haz пишет практическ..


Haz пишет
 цитата:
практически не знаю зачем


Согласен, много случаев, особенно старых кодов, где это не применить, да и не нужно.
А вывести в Excel таблицу (широкую, но простую), с цветными колонками, для которой печати нет (морока организации листов в разрезе горизонтали) есть передача в Excel и если захотят, будут распечатки делать из него. Условие сохранение цветности.
С применением hbxmlxls.lib чтобы передать цветность это тоже пригодится.

 цитата:
Бровс умеет работать только с текущей записью , зачем мне тормозной перебор


Можно не перебирать, а выполнить :DrawLine( , .F. ) и для тек. записи будет в колонках oCol:oCell заполнен

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


Пост N: 1552
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.05.20 14:32. Заголовок: SergKis пишет: Можн..


SergKis пишет:

 цитата:
Можно не перебирать, а выполнить :DrawLine( , .F. ) и для тек. записи будет в колонках oCol:oCell заполнен



Как дальнейшее развитие oCell имеет смысл

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



Пост N: 3174
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 15:03. Заголовок: SergKis пишет Можно ..


SergKis пишет
 цитата:
Можно не перебирать, а выполнить :DrawLine( , .F. )


Игорь, хорошо, что спросил. Начал еще раз проверять, параметр ввел, а исправить перенос из :DrawSelect() на эту переменную забыл

gfilatov2002
Правочка небольшая с выше сказанным на мой текст
 
METHOD DrawLine( xRow, lDrawCell ) CLASS TSBrowse
...
Default xRow := iif( ::lDrawHeaders, Max( 1, nRowPos ), nRowPos ), lDrawCell := ::lDrawLine
...
If ::bOnDrawLine != Nil
Eval( ::bOnDrawLine, Self )
EndIf

IF ! lDrawCell
nBegin := 1
nLastCol := ::nColCount()
ENDIF

For nI := nBegin To nLastCol

If nStartCol >= nMaxWidth .and. lDrawCell
Exit
EndIf
...
IF nAlign != DT_CENTER .and. ::nCellMarginLR != NIL
uData := ::CellMarginLeftRight( nJ, uData, oColumn, nAlign, lMultiLine, 0 )
ENDIF

IF lDrawCell

oColumn:oCell := NIL

TSDrawCell( hWnd, ; // 1
...


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




Пост N: 1694
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.05.20 15:07. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
включу эти изменения в новую сборку


Выполнил все предложенные изменения кода, пересобрал пример demo5 - экспорт по клавише F8 работает аналогично готовому экзешнику

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



Пост N: 3175
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 15:22. Заголовок: gfilatov2002 Если б..


gfilatov2002
Если брали целиком мой файл h_tsbrowse.prg в нем надо убрать строки (была проба и не убрал)
 
FUNCTION _DefineTBrowse( ControlName, ParentFormName, nCol, nRow, nWidth, nHeight, ;
...
oBrw:InsColumn( nColNumber, oCol )

IF oBrw:lDrawFooters
oBrw:aColumns[ nColNumber ]:cFooting := ""
ENDIF

oBrw:nCell := nColNumber + 1
oBrw:nFreeze := nColNumber
oBrw:lLockFreeze := .T.
...


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




Пост N: 1695
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.05.20 15:39. Заголовок: SergKis пишет: надо..


SergKis пишет:

 цитата:
надо убрать строки


Убрал, конечно

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




Пост N: 6651
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.05.20 16:11. Заголовок: Haz пишет: 3. Как у..


Haz пишет:

 цитата:
3. Как уже писал ранее ,при помощи Андрею в его TSB_экспортах - считаю такие экспорты (средствами бровса) красивыми, но бесперспективными с точки зрения временных затрат
Бровс умеет работать только с текущей записью , зачем мне тормозной перебор если я могу взять весь массив данных сразу и делать с ним что хочу (aEval, dbEval, SQLExecute() и пр) .
В целом , для демонстрашки экспорта доработка хорошая, практически не знаю зачем



Если бы такие красивые отчеты нужны были каждый день, то согласен, делал бы НЕ через ОЛЮ.
А так раз в месяц, а то и три нужен красивый отчёт начальству.
Не буду я тратить время на это, пускай 20 минут ждут, хотя у меня быстрей проходит.
Есть готовая фишка в МиниГуи - красивый экспорт, пускай работает.

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




Пост N: 1696
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.05.20 17:07. Заголовок: Всем кому это интересно


Подготовил 2-ю бету для новой сборки 20.05.
Что нового
Скрытый текст
Если заметили неточности в этом описании - пишите, исправлю...

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




Пост N: 6652
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.05.20 18:13. Заголовок: А нельзя в новой вер..


А нельзя в новой версии сделать правильное отображение символьных полей при задании центровки DT_CENTER ?
Не работает центровка сейчас !
Чтобы заработало, нужно шаманство делать, благо без бубна...

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



Пост N: 3176
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 18:35. Заголовок: Andrey пишет А нельз..


Andrey пишет
 цитата:
А нельзя в новой версии сделать правильное отображение символьных полей при задании центровки DT_CENTER ?
Не работает центровка сейчас !


Центровка работает, но мешает центровать, как ты хочешь правые пробелы.
Если их убирать ( trim() или alltrim ? ), то "сломается" отображение старого алгоритма,
т.е. значение "1 " в колонке 120 шириной отобразится по другому.
Так же сломаться может отображение строк с CRLF.
Сейчас решаю задавая oCol:bDecode := {|cval| Alltrim(cval) }

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




Пост N: 6653
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.05.20 18:42. Заголовок: SergKis пишет: Сейч..


SergKis пишет:

 цитата:
Сейчас решаю задавая oCol:bDecode := {|cval| Alltrim(cval) }


Это я понял. Спасибо !

Не работает цвет в суперхидере.
Делаю цвет в таблице:
 
:Setcolor( { 3}, { CLR_WHITE } ) // 3 , текста шапки таблицы
:SetColor( { 4}, { { || { CLR_BLACK, CLR_GRAY } } } ) // 4 , фона шапка таблицы
:SetColor( {16}, { { || { CLR_BLACK, CLR_GRAY } } } ) // 16, фона спецхидер
:SetColor( {17}, { { || CLR_YELLOW } } ) // 17, текста спецхидер

Вот результат:


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



Пост N: 3177
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 19:15. Заголовок: Andrey Как он может..


Andrey
Как он может работать, если цвета ставишь на него, раньше, чем создаешь SuperHeader
 
mySetTsb( oBrw ) // настройки таблицы
myColorTsb( oBrw ) // цвета на таблицу

myColorTsbElect( oBrw ) // цвета избранные
mySumTsb ( oBrw ) // суммирование колонок таблицы
myDbfDelColTsb( oBrw ) // убрать колонки из отображения
mySupHdTsb( oBrw, aSupHd ) // SuperHeader

myEnumTsb( oBrw ) // ENUMERATOR по порядку
mySet2Tsb( oBrw ) // настройки таблицы


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




Пост N: 6654
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.05.20 19:39. Заголовок: SergKis пишет: Как ..


SergKis пишет:

 цитата:
Как он может работать, если цвета ставишь на него, раньше, чем создаешь SuperHeader


Ну вот так и бывает...

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


Пост N: 1553
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.05.20 23:51. Заголовок: Andrey пишет: Не бу..


Andrey пишет:

 цитата:
Не буду я тратить время на это


Каждому своё. Я лучше один раз потрачу тк мне неприемлемо когда отчёта нужно ожидать больше нескольких секунд.
Что касается "пусть будет", то я и не говорил что эти доработки нужно убрать. Я говорил только о том, что для серьёзных объёмов есть другой инструмент, который в отличии от кривого Ole экспорта работает всегда и позволяет любые цвета и шрифт.

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



Пост N: 3179
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.05.20 08:59. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение по hmg_alert(), AlertInfo() и др.
- hmg_alert() значение nIcoSize сделать равным 0, тогда на окне нет DRAW ICO ...
- в AlertInfo(), AlertExclamation(), AlertStop() добавить параметр lNoPlay, для отключения звук. сигнала
Alert.prg Скрытый текст

По поводу
 цитата:
- added the new variable :lDrawLine in the TSBrowse class


Добавил "быстрого" доступа к элементам тсб, SuperHeader, Header, SpecHd, DrawLine и Footer.
В TsColumn.prg добавил переменные
 
DATA oCellHead // TSBcell object Header
DATA oCellEnum // TSBcell object Enumerator
DATA oCellFoot // TSBcell object Footer
DATA oCell // TSBcell object

В h_tbrowse.prg правил
METHOD DrawSuper( lDrawCell ) CLASS TSBrowse
METHOD DrawHeaders( lFooters, lDrawCell ) CLASS TSBrowse
METHOD DrawLine( xRow, lDrawCell ) CLASS TSBrowse
METHOD DrawSelect( xRow, lDrawCell ) CLASS TSBrowse
CLASS TSBcell

Исходники и пример по использованию тут https://TransFiles.ru/vpnu8
в demo7 работают клавиши
F8 - общий способ доступа для массива и dbf, использован "родной" вариант AlertInfo()
F9 - только доступ для dbf, использован вариант AlertInfo() с nIcoSize := 0 и lNoPlay := .T.

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




Пост N: 1697
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.05.20 16:21. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предложение по hmg_alert(), AlertInfo() и др.
...
Добавил "быстрого" доступа к элементам тсб, SuperHeader, Header, SpecHd, DrawLine и Footer.


Все правки приняты - хорошая работа.
Благодарю за помощь

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



Пост N: 3180
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.05.20 20:26. Заголовок: gfilatov2002 Еще та..


gfilatov2002
Еще такая правка
 
CLASS TSBrowse FROM TControl
...
ACCESS IsEdit INLINE ! Empty( ::aColumns[ ::nCell ]:oEdit ) // SergKis addition
ACCESS Tsb INLINE ::oWnd

...
FUNCTION GetProperty ( Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 )
...
#ifdef _OBJECT_

CASE Arg3 == "OBJECT"

IF _HMG_lOOPEnabled
RetVal := _ControlObj ( Arg2 , Arg1 )
IF HB_ISOBJECT( RetVal ) .and. _HMG_aControlType[ RetVal:Index ] == "TBROWSE"
RetVal := _HMG_aControlIds[ RetVal:Index ]
ENDIF
ELSEIF ( ix := GetControlIndex ( Arg2 , Arg1 ) ) > 0
IF _HMG_aControlType[ ix ] == "TBROWSE"
RetVal := _HMG_aControlIds[ ix ]
ENDIF
ENDIF

#endif
...
Синим цветом, наверно, надо убрать
Это даст возможность получать объект TSBROWSE, как SET OOP ON, так и SET OOP OFF
? (This.oBrw.Object):ClassName // SET OOP OFF
? (This.oBrw.Object):Tsb:ClassName // SET OOP ON\OFF


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




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


SergKis пишет:

 цитата:
наверно, надо убрать


Предлагаю не убирать, но - передвинуть
SergKis пишет:

 цитата:

CASE Arg3 == "OBJECT"

IF _HMG_lOOPEnabled
#ifdef _OBJECT_
RetVal := _ControlObj ( Arg2 , Arg1 )
IF HB_ISOBJECT( RetVal ) .and. _HMG_aControlType[ RetVal:Index ] == "TBROWSE"
RetVal := _HMG_aControlIds[ RetVal:Index ]
ENDIF
#endif
ELSEIF ( ix := GetControlIndex ( Arg2 , Arg1 ) ) > 0
IF _HMG_aControlType[ ix ] == "TBROWSE"
RetVal := _HMG_aControlIds[ ix ]
ENDIF
ENDIF



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



Пост N: 3181
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.05.20 12:19. Заголовок: gfilatov2002 Добави..


gfilatov2002
Добавить в i_this.ch
 
...
#xtranslate This . <c> . <p:Names> => HMG_GetFormControls ( _HMG_THISFORMNAME , <(c)> )

#xtranslate This . <c> . <p:ClientWidth> => _GetClientRect ( GetControlHandle ( <(c)> , _HMG_THISFORMNAME ) ) \[3]

Использовать
aAll := This.All.Names
? "All controls name =", aAll
?v aAll
?
aTsb := This.TBrowse.Names
? "TBrowse =", aTsb
?v aTsb
?
aBtn := This.Button.Names
? "Button =", aBtn
?v aBtn
?
aBtn := This.ButtonEx.Names
? "ButtonEx =", aBtn
?v aBtn
?
В функциях примера demo7 можно заменить переменную ao на ac
 
AlertInfo( hb_memoread(_SetGetLogFile()), "INFO", , 0, , , ;
{||ac,cn| // {|ao,cn|
an := This.EditBox.Names // ao := (This.Object):GetObj4Type("EDITBOX")
If HB_ISARRAY(an) .and. Len(an) == 1 // If HB_ISARRAY(ao) .and. Len(ao) == 1
cn := an[1] // ao[1]:Name
This.Width := test.ClientWidth * 0.95
This.(cn).Row := 10
This.(cn).Col := 10
This.(cn).Width := This.ClientWidth - 10 * 2
This.(cn).Height := This.(cn).Height + 10 * 2 + 10
This.Center
EndIf
Return Nil
} , .T. ) // .T. - lNoPlay


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



Пост N: 3182
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.05.20 12:35. Заголовок: PS Добавить еще #xtr..


PS
Добавить еще
 
#xtranslate ThisWindow . <p:Names,Controls> => HMG_GetFormControls ( _HMG_THISFORMNAME , "ALL" )
...
#xtranslate This . <p:Names,Controls> => HMG_GetFormControls ( _HMG_THISFORMNAME , "ALL" )
...


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



Пост N: 3183
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.05.20 13:59. Заголовок: gfilatov2002 Правка..


gfilatov2002
Правка
 
METHOD AddColumn( oColumn ) CLASS TSBrowse
...
If ATail( ::aColSizes ) == NIL .and. Len( ::aColSizes ) > 0
::aColSizes[ Len( ::aColSizes ) ] := oColumn:nWidth
ENDIF

If ::aPostList != Nil // from ComboWBlock function
...


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




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


SergKis пишет:

 цитата:
Правка


OK

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



Пост N: 3185
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.05.20 17:16. Заголовок: gfilatov2002 По HMG..


gfilatov2002
По HMG_ALert(...), добавить static переменную для кол-сток, сейчас стоит константа 20 Скрытый текст

Что бы управлять высотой окна

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




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


SergKis пишет:

 цитата:
добавить static переменную...
Что бы управлять высотой окна


Добавил, конечно. Но переименовал функцию в HMG_Alert_MaxLines()
Благодарю за помощь

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



Пост N: 3188
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.05.20 13:31. Заголовок: gfilatov2002 Немног..


gfilatov2002
Немного подкрутил h_alert.prg для контроля выхода за пределы экрана по width.
Вот, что получилось. Пример и исходник тут https://TransFiles.ru/mowhr
Можно поиграть размером фонта
DEFINE FONT DlgFont FONTNAME "Courier New" SIZE _HMG_DefaultFontSize + 1
DEFINE FONT DlgFont FONTNAME "Courier New" SIZE _HMG_DefaultFontSize
DEFINE FONT DlgFont FONTNAME "Courier New" SIZE _HMG_DefaultFontSize - 1
DEFINE FONT DlgFont FONTNAME "Courier New" SIZE _HMG_DefaultFontSize - 2

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




Пост N: 1701
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.05.20 15:00. Заголовок: SergKis пишет: подк..


SergKis пишет:

 цитата:
подкрутил h_alert.prg для контроля выхода за пределы экрана


Эти изменения не приняты по причине увеличения ширины окон Alert* в примере из папки samples\Basic\WALERT_2
Изменения в файле h_alert.prg не должны приводить к изменению вида обычных окон (совместимость снизу вверх)

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



Пост N: 3189
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.05.20 15:28. Заголовок: gfilatov2002 пишет и..


gfilatov2002 пишет
 цитата:
изменения не приняты по причине увеличения ширины окон Alert*


Очень не хочется писать лишний блок кода bInit. Может такие поправки помогут
 
STATIC s_nMaxLineas := 20
STATIC s_lMaxWidth := .F.


*-----------------------------------------------------------------------------*
FUNCTION HMG_Alert_MaxLines( nMaxLineas, lMaxWidth )
*-----------------------------------------------------------------------------*
IF HB_ISNUMERIC(nMaxLineas ) .and. nMaxLineas > 0
s_nMaxLineas := nMaxLineas
ENDIF
IF HB_ISLOGICAL( lMaxWidth )
s_lMaxWidth := lMaxWidth
ENDIF

RETURN s_nMaxLineas
...
STATIC FUNCTION FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize, aBtnColors, bBlock, lClosable, cFont, nMaxLen )
...
LOCAL nMaxLineas := HMG_Alert_MaxLines()
LOCAL lMaxWidth := s_lMaxWidth
LOCAL nMaxWidth := 0

...
nChrHeight := GetTextHeight( hDC, aOptions[ 1 ], hDlgFont ) + nVMARGIN_BUTTON / 2

// calculate the maximum width of the lines
IF lMaxWidth
nMaxWidth := GetFontWidth ( cFont, nMaxLen )
ENDIF


FOR n := 1 TO nLineas
...


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



Пост N: 3190
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.05.20 15:31. Заголовок: PS В примере demo7.p..


PS
В примере demo7.prg ставим
HMG_Alert_MaxLines(23, .T.)

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




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


SergKis пишет:

 цитата:
такие поправки помогут


Да, с этими изменениями примеры не отличаются

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



Пост N: 3191
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.05.20 16:27. Заголовок: gfilatov2002 пишет Д..


gfilatov2002 пишет
 цитата:
Да, с этими изменениями примеры не отличаются


В примере BASIC\WALERT_2 надо, наверно, учесть вылезание списка ошибок за пределы descktop при фонте 16 на 14" мониторе (кнопку почти не видно), т.е. надо ставить ограничение по высоте
 
DEFINE FONT DlgFont FONTNAME "DejaVu Sans Mono" SIZE 16

SET MSGALERT FONTCOLOR TO BLACK
SET MSGALERT BACKCOLOR TO {248,209,211}

cMsg := ""
aButton := { "&Continue" }
cTitle := "Multiline Error Message"
cIcoRes := "Stop64.ico"
nIcoSize := 64
aBtnColor := { {235,117,121} }

FOR nI := 1 TO 99
cMsg += "Error: " + HB_NtoS( nI ) + " simple error message.;"
NEXT

HMG_Alert_MaxLines( 15 )

HMG_Alert( cMsg, aButton, cTitle, Nil, cIcoRes, nIcoSize, aBtnColor )

RELEASE FONT DlgFont


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



Пост N: 3192
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.05.20 17:00. Заголовок: PS Возможно есть смы..


PS
Возможно есть смысл добавить
 
STATIC FUNCTION FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize, aBtnColors, bBlock, lClosable, cFont, nMaxLen )
...
// calculate the maximum width of the lines
IF lMaxWidth
nMaxWidth := GetFontWidth ( cFont, nMaxLen )
IF GetTextWidth( hDC, space(10), hDlgFont ) != GetTextWidth( hDC, replicate("B", 10), hDlgFont )
nMaxWidth *= 0.7
ENDIF

ENDIF
...


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




Пост N: 1703
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.05.20 17:09. Заголовок: SergKis пишет: есть..


SergKis пишет:

 цитата:
есть смысл добавить


Спасибо
Да, я тоже вышел на этот коэффициент 0,7

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



Пост N: 3193
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.05.20 17:47. Заголовок: gfilatov2002 пишет я..


gfilatov2002 пишет
 цитата:
я тоже вышел на этот коэффициент 0,7


Ширины может не хватить, если исп. много заглавных букв типа W,B
Можно игнорировать ситуацию или ввести static переменную для коэф. 0.7 или установленного в переменную

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




Пост N: 1704
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.05.20 19:37. Заголовок: Убрал статик-перемен..


Убрал статик-переменную s_lMaxWidth, т.к. теперь в ней нет необходимости

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



Пост N: 3194
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.05.20 11:45. Заголовок: gfilatov2002 Сделал..


gfilatov2002
Сделал контроль выхода за пределы экрана по height
 
STATIC FUNCTION FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize, aBtnColors, bBlock, lClosable, cFont, nMaxLen )
...
LOCAL nMaxLineas := HMG_Alert_MaxLines()
LOCAL nMaxWidth, nMaxHeight

...
IF MSC_VER() > 0 .AND. _HMG_IsThemed
nWidthDlg += 10
nHeightDlg += 10
ENDIF

IF nHeightDlg > System.ClientHeight
n := 0
WHILE ( nHeightDlg - ( nChrHeight * ( ++n ) ) ) > System.ClientHeight
END
nMaxHeight := nChrHeight * n
nMaxLineas -= n
nHeightDlg -= nMaxHeight
nHeightCli -= nMaxHeight
ENDIF

This.Width := nWidthDlg
...


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



Пост N: 3195
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.05.20 11:50. Заголовок: PS В примере BASIC&#..


PS
В примере BASIC\WALERT_2 окно со списком не выходит за пределы окна при фонте SIZE 16 и больше
В примере demo7 установка большего фонта или HMG_Alert_MaxLines(35) - все в пределах окна

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




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


SergKis пишет:

 цитата:
контроль выхода за пределы экрана по height


Добавил, контрольный пример отработал нормально.
Благодарю за помощь

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





Пост N: 250
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 14.05.20 16:30. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Harbour MiniGUI Extended Edition 20.04 (Release) (64-bit)



А какие возможности эта версия дает по сравнению с 32-битными? Если не пользоваться большими числами в расчетах.

Хотел ради интереса посмотреть примеры. Как я понимаю последняя общедоступная версия была 16.10?
Скачал ее, но при сборке примеров почему-то вылезает ошибка с файлом minigui.ch, хотя все есть, вроде.
Если кто помнит, там все файлы есть или надо еще что-то скачивать? Или просто пути там не так прописаны?

Хочется вообще посмотреть на это, как на демо, понять нужность или не ненужность для себя.
А с поддержкой увы, ранее хотел говорить с директором о развитии, а тут с этим вирусом самим бы выжить.

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




Пост N: 1706
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.05.20 19:58. Заголовок: rvu пишет: какие во..


rvu пишет:

 цитата:
какие возможности эта версия дает по сравнению с 32-битными?


Благодарю за вопрос!
Если коротко, то это - относительно высокая скорость выполнения и возможность адресовать больший объем памяти, поскольку приложение становится нативным для 64-битной среды.
Подробнее можно почитать статьи в Интернете.

Приведу для справки список поддерживаемых Си-компиляторов:
- MinGW GNU C 10.1 - самый свежий и самый быстрый из всех
- BCC 64, основанный на LLVM/Clang C 3.3.1;
- Visual C++ 19.24.28314;
- PellesC 9.0.

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



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


gfilatov2002
Правки небольшие
 
CLASS TSBrowse FROM TControl
...
METHOD DrawFooters( lDrawCell ) INLINE ::DrawHeaders( .T., lDrawCell )
...
METHOD DrawHeaders( lFooters, lDrawCell ) CLASS TSBrowse
...
oColumn:oCellEnum:nClrBack := nClrBackS // 9
...
oColumn:oCellEnum:nClrTo := nClrToS // 25
...
oColumn:oCellFoot:nVAlign := nVAlign // 23
oColumn:oCellFoot:nVertText := 0 // 24
...
METHOD DrawLine( xRow, lDrawCell ) CLASS TSBrowse
...
oColumn:oCell:nRow := xRow //
...
oColumn:oCell:xRow := xRow // 3
...
oColumn:oCell:l3DLook := oColumn:l3DLook // 13
...
METHOD DrawSelect( xRow, lDrawCell ) CLASS TSBrowse
...
IF ! ::lDrawLine

IF empty( oColumn:oCell )
oColumn:oCell := TSBcell():New()
ENDIF

...


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




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


SergKis пишет:

 цитата:
Правки небольшие


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

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



Пост N: 3205
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.05.20 13:52. Заголовок: gfilatov2002 Добавь..


gfilatov2002
Добавьте ф-ю для получения hmg имени фонта от handle
 
FUNCTION HMG_FontName( FontHandle )
LOCAL FontName, i

IF ( i := AScan( _HMG_aControlHandles, FontHandle ) ) > 0
IF _HMG_aControlType [ i ] == "FONT"
FontName := _HMG_aControlNames [ i ]
ENDIF
ENDIF

RETURN FontName

Использование
...
cFntH := HMG_FontName( oHead:hFont )
cFntC := HMG_FontName( oCell:hFont )
cFntF := HMG_FontName( oFoot:hFont )
...
cN := cName+'_Head'
@ nY, nX LABEL &cN VALUE cValH WIDTH oCell:nSize HEIGHT oHead:nHeightCell FONT cFntH ;
BACKCOLOR aClrToH FONTCOLOR aForeH BORDER ON INIT {|| nY += This.Height + nGaps }

cN := cName+'_Cell'
@ nY, nX LABEL &cN VALUE cValC WIDTH oCell:nSize HEIGHT oCell:nHeightCell FONT cFntC ;
BACKCOLOR aBackC FONTCOLOR aForeC BORDER ON INIT {|| nY += This.Height + nGaps }

cN := cName+'_Foot'
@ nY, nX LABEL &cN VALUE cValF WIDTH oCell:nSize HEIGHT oFoot:nHeightCell FONT cFntF ;
BACKCOLOR aBackF FONTCOLOR aForeF BORDER ON INIT {|| nY += This.Height + nGaps }


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




Пост N: 1708
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.05.20 14:41. Заголовок: SergKis пишет: Доба..


SergKis пишет:

 цитата:
Добавьте ф-ю для получения hmg имени фонта от handle


Отдельная функция не нужна, поскольку уже есть более общая функция GetFontParam()
Например, можно записать так

 цитата:
#xtranslate HMG_FontName( <hFont> ) ;
=> ;
GetFontParam( <hFont> )\[ 1 ]



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



Пост N: 3206
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.05.20 14:57. Заголовок: gfilatov2002 пишет О..


gfilatov2002 пишет
 цитата:
Отдельная функция не нужна, поскольку уже есть более общая функция GetFontParam()


К сожалению, в _HMG_aControlFontName [k] := fName это имя фонта в системе, к примеру "Arial", а надо имя фонта регистрации, т.е. из _HMG_aControlNames [k] := FontName, например "Norm", "Bold", "Itog", т.к. контрол на входе не понимает handle фонта, надо имя регистрации.

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



Пост N: 3207
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.05.20 15:01. Заголовок: PS или добавить в во..


PS
или добавить в возврат GetFontParam( FontHandle ) имя регистрации и тогда можно сделать #xtranslate HMG_FontName( <hFont> )...

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




Пост N: 1709
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.05.20 15:08. Заголовок: SergKis пишет: доба..


SergKis пишет:

 цитата:
добавить в возврат GetFontParam( FontHandle ) имя регистрации


Именно это хотел предложить (добавить 10-й параметр).

 цитата:
#xtranslate HMG_FontName( <hFont> ) ;
=> ;
GetFontParam( <hFont> )\[ 10 ]



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



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


gfilatov2002
По аналогии
 
METHOD LButtonDown( nRowPix, nColPix, nKeyFlags ) CLASS TSBrowse
...
nAtCol := Max( ::nAtColActual( nColPix ), 1 ) // JP 1.31

...
поменял (не срабатывал вызов)
METHOD RButtonDown( nRowPix, nColPix, nFlags ) CLASS TSBrowse
...
nRow := ::GetTxtRow( nRowPix )
nCol := ::nAtColActual( nColPix )
...
возможно, надо поменять и в
METHOD LDblClick( nRowPix, nColPix, nKeyFlags ) CLASS TSBrowse
Local nClickRow := ::GetTxtRow( nRowPix ), ;
nCol := ::nAtColActual( nColPix ) ; /*( nColPix, ::lSelector ), ;*/
uPar1 := nRowPix, ;
uPar2 := nColPix
...


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



Пост N: 3209
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.05.20 11:23. Заголовок: PS Надо менять тоже...


PS
Надо менять тоже. Вот что получаю
 
:bLDblClick := {|uPar1, uPar2, nFlags, oBr| myLDblClicked( oBr, uPar1, uPar2, nFlags ) }
...
STATIC FUNCTION myLDblClicked( oBrw, nRowPix, nColPix, nFlags )
Local nRow := oBrw:GetTxtRow( nRowPix )
Local nOld := oBrw:nAtCol( nColPix, oBrw:lSelector )
Local nCol := oBrw:nAtColActual( nColPix )

? procname(), oBrw, nRowPix, nColPix, nFlags, nRow, nCol, nOld

RETURN Nil
результат LDblClicked на колонке 4 на разных nRowPos как будто кликаю на 6-ой колонке
MYLDBLCLICKED 'O' 121 302 1 1 4 6
MYLDBLCLICKED 'O' 146 302 1 2 4 6
MYLDBLCLICKED 'O' 187 302 1 4 4 6
...


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



Пост N: 3210
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.05.20 11:34. Заголовок: PS2 Почему то нет об..


PS2
Почему то нет обработки двойного клика на Footers, думаю надо добавить
 
METHOD LDblClick( nRowPix, nColPix, nKeyFlags ) CLASS TSBrowse
...
ElseIf nClickRow == -1 .and. ! empty( ::lDrawFooters )

If ::bLDblClick != Nil
Eval( ::bLDblClick, uPar1, uPar2, nKeyFlags, Self )
EndIf

ElseIf nClickRow == -2 .and. ::lDrawSpecHd .and. ::aColumns[ nCol ]:lEditSpec
...


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




Пост N: 1710
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.05.20 11:44. Заголовок: SergKis пишет: Надо..


SergKis пишет:

 цитата:
Надо менять


Добавил все предложенные правки.
Благодарю за помощь

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



Пост N: 3211
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.05.20 11:57. Заголовок: gfilatov2002 пишет Д..


gfilatov2002 пишет
 цитата:
Добавил все предложенные правки.


Выяснил, наверно, почему не было Footers в
METHOD LDblClick( nRowPix, nColPix, nKeyFlags ) CLASS TSBrowse
Если одновременно использовать с :LDblClick() :LButtonClick() или :RButtonClick(), то
при нажатии LDblClick делая левый или правый клик "ложно" срабатывает после них LDblClick
Это надо отметить для себя, что можно использовать или :LDblClick() или :LButtonClick(), :RButtonClick().

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




Пост N: 1711
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.05.20 12:04. Заголовок: SergKis пишет: Это ..


SergKis пишет:

 цитата:
Это надо отметить для себя..
почему не было Footers


Да, это известная проблема, подобное поведение происходит и при двойном клике по иконке приложения в трее
Убрал предложенную правку для METHOD LDblClick

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



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


gfilatov2002
Поправить надо, а то там NIL, вместо цифры
 
METHOD LoadFields( lEditable, aColSel, cAlsSel, aNameSel, aHeadSel ) CLASS TSBrowse
...
nSize := ::aColSizes[ n ]
EndIf

If empty( ::aColSizes[ n ] )
::aColSizes[ n ] := nSize
EndIf

If ValType( ::aFormatPic ) == "A" .and. ! Empty( ::aFormatPic ) .and. n <= Len( ::aFormatPic )


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




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


SergKis пишет:

 цитата:
Поправить надо


Поправил, конечно
... 
If ValType( ::aColSizes ) == "A" .and. n <= Len( ::aColSizes ) .and. Empty( ::aColSizes[ n ] )
::aColSizes[ n ] := nSize
EndIf


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



Пост N: 3214
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.05.20 12:11. Заголовок: gfilatov2002 Еще ME..


gfilatov2002
Еще
 
METHOD LoadFields( lEditable, aColSel, cAlsSel, aNameSel, aHeadSel ) CLASS TSBrowse
...
ElseIf cType == "M"
nSize := iif( ::nMemoWV == Nil, 200, ::nMemoWV )
ElseIf cType $ "=@T"
nSize := GetTextWidth( 0, Replicate("9", 20), hFont )

Else
cData := cValToChar( cData )


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




Пост N: 1713
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 20.05.20 12:23. Заголовок: SergKis пишет: Еще ..


SergKis пишет:

 цитата:
Еще


OK

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




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


Завершена подготовка новой сборки 20.05, которая будет опубликована на следующей неделе, со следующим списком изменений (кратко):
Скрытый текст

Также выполнена адаптация текущей сборки для свежих версий Си-компиляторов:

- MinGW GNU C 10.1 32-bit и 64-bit;

- Microsoft Visual C++ 19.25.28614 32-bit и 64-bit;

- BCC64, основанный на LLVM/Clang C 3.3.1 (35759.1709ea1.58602a0) (64-bit).

Благодарю за ваше внимание

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




Пост N: 6707
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.05.20 14:10. Заголовок: А можно в HMG_Alert(..


А можно в HMG_Alert() при выводе даже помещаемых данных, сразу выводить их в EDITBOX ?
Удобно вывести данные, посмотреть и если нужно, то скопировать ЧАСТЬ или ЦЕЛИКОМ в буфер обмена.
В EDITBOX это удобно делать.

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



Пост N: 3237
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.05.20 14:37. Заголовок: Andrey А добавить п..


Andrey
А добавить пустых строк AlertInfo(cMsg+repl(" ;", 20), "INFO")

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




Пост N: 1715
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.05.20 14:38. Заголовок: Andrey пишет: сразу..


Andrey пишет:

 цитата:
сразу выводить их в EDITBOX ?


Да, это будет возможно в сборке 20.05, если перед вызовом функции HMG_Alert() написать

 цитата:
HMG_Alert_MaxLines( 1 )


тогда будет вывод всех строк в EDITBOX , а на экране будет показана только одна строка.



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



Пост N: 3238
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.05.20 14:44. Заголовок: gfilatov2002 Будут ..


gfilatov2002
Будут ли изменения по фонтам из темы http://clipper.borda.ru/?1-1-0-00000554-000-80-0-1590177610

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




Пост N: 1716
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.05.20 14:48. Заголовок: SergKis пишет: Буду..


SergKis пишет:

 цитата:
Будут ли изменения по фонтам


Да, конечно

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




Пост N: 6708
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.05.20 15:27. Заголовок: SergKis пишет: А до..


SergKis пишет:

 цитата:
А добавить пустых строк AlertInfo(cMsg+repl(" ;", 20), "INFO")


Да не хотелось бы.

gfilatov2002 пишет:

 цитата:
Да, это будет возможно в сборке 20.05, если перед вызовом функции HMG_Alert() написать
HMG_Alert_MaxLines( 1 )
тогда будет вывод всех строк в EDITBOX , а на экране будет показана только одна строка.



Спасибо !
Эта настройка глобальная или только для одного вызова HMG_Alert() ?

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



Пост N: 3239
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.05.20 15:55. Заголовок: gfilatov2002 Может ..


gfilatov2002
Может чуть поправить HMG_Alert
 
STATIC FUNCTION FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize, aBtnColors, bBlock, lClosable, cFont, nMaxLen )
...
IF nLineas > 1

IF nLineas >= nMaxLineas
...
Тогда проще делать, что хочет Андрей
nOld := HMG_Alert_MaxLines()
IF nOld > hb_TokenCount(cMsg, ";")
HMG_Alert_MaxLines(hb_TokenCount(cMsg, ";"))
AlertInfo(cMsg, ...)
HMG_Alert_MaxLines( nOld )
ENDIF


и весь текст войдет в EditBox

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



Пост N: 3240
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.05.20 16:07. Заголовок: PS Возможно, лучше и..


PS
Возможно, лучше и проще так
 
STATIC s_nMaxLineas := 20
STATIC s_lEditBox := .F.

*-----------------------------------------------------------------------------*
FUNCTION HMG_Alert_MaxLines( nMaxLineas, )
*-----------------------------------------------------------------------------*
IF HB_ISLOGICAL(nMaxLineas )
s_lEditBox := nMaxLineas
ELSEIF HB_ISNUMERIC(nMaxLineas ) .and. nMaxLineas > 0
s_nMaxLineas := nMaxLineas
ENDIF
RETURN s_nMaxLineas

STATIC FUNCTION FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize, aBtnColors, bBlock, lClosable, cFont, nMaxLen )
...
IF nLineas > 1

IF nLineas > nMaxLineas .or. s_lEditBox
...


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




Пост N: 1717
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.05.20 17:04. Заголовок: Andrey пишет: Эта н..


Andrey пишет:

 цитата:
Эта настройка глобальная или только для одного вызова


Глобальная

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




Пост N: 6709
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.05.20 17:15. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Глобальная


Не очень удобно будет кодить.
Нужно для разового вызова.
Лучше бы сделать как Сергей предлагает.

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




Пост N: 1718
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.05.20 17:24. Заголовок: Andrey пишет: Нужно..


Andrey пишет:

 цитата:
Нужно для разового вызова.


Тогда можно использовать таким образом:

nI := HMG_Alert_MaxLines()
HMG_Alert_MaxLines( 1 )

HMG_Alert( cMsg, aButton, cTitle, Nil, cIcoRes, nIcoSize, aBtnColor )

HMG_Alert_MaxLines( nI )


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



Пост N: 3241
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.05.20 17:49. Заголовок: gfilatov2002 FUNCTI..


gfilatov2002
FUNCTION HMG_Alert( cMsg, aOptions, cTitle, nType, cIcoFile, nIcoSize, aBtnColors, bInit, lClosable, cFontName )
...
cMsg := cValToChar( cMsg )
cMsg := StrTran( cMsg, ";", CRLF )
nLineas := MLCount( cMsg )
_logfile(.t.,procname(), hb_TokenCount(cMsg, CRLF), MLCount( cMsg ))
получаем
HMG_ALERT 12 11
по разному считают, правильно посчитала hb_TokenCount(cMsg, CRLF)
Надо подменить, наверно, иначе код работает не верно
 
ITEM '_MsgLog.lst' ACTION {|cs,nn,no|
cs := StrTran(hb_memoread("_MsgLog.lst"), CRLF, ';')
nn := hb_TokenCount(cs, ';')
no := HMG_Alert_MaxLines(nn-1)
AlertInfo( cs, "INFO")
HMG_Alert_MaxLines(no)
Return Nil
}


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



Пост N: 3242
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.05.20 18:29. Заголовок: PS В таком виде отра..


PS
В таком виде отработал код правильно, все строки видны в EditBox
 
ITEM '_MsgLog.txt' ACTION {|cs,nn,no|
cs := hb_memoread("_MsgLog.lst")
nn := MLCount(cs)
no := HMG_Alert_MaxLines(nn)
AlertInfo( cs+CRLF, "INFO")
HMG_Alert_MaxLines(no)
Return Nil
}


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




Пост N: 6711
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.05.20 18:59. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Тогда можно использовать таким образом:


Хорошо ! Спасибо !
Только если я в коде промахнулся и строчек больше одной - то нужно показывать ВСЕ строчки !
Т.е. задал 1 строчку, значение вывожу 5 строчек, то должны показываться все 5 строчек.

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



Пост N: 3243
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.05.20 19:39. Заголовок: Andrey пишет Т.е. за..


Andrey пишет
 цитата:
Т.е. задал 1 строчку, значение вывожу 5 строчек, то должны показываться все 5 строчек.


Посмотри предыдущий пост, такой код сделает как ты хочешь, т.е. от кол-ва строк в тексте, т.е. у меня _MsgLog.lst 12 строк, что бы их всех сразу увидеть и написан код выше

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




Пост N: 6712
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.05.20 19:52. Заголовок: SergKis пишет: Пос..


SergKis пишет:

 цитата:

Посмотри предыдущий пост, такой код сделает как ты хочешь



Да не успел прочитать. Понял сейчас !

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




Пост N: 1719
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: Вчера 09:44. Заголовок: Всем кому это интересно


Опубликована новая сборка 20.05 для BCC 5.8.2 и компиляторов Harbour и xHarbour.

Базовый дистрибутив находится по адресу

http://hmgextended.com/files/CONTRIB/hmg-20.05-setup.exe

Добавил также архив для бесплатного Embarcadero C++ 10.2 'Tokyo' compiler

http://hmgextended.com/files/CONTRIB/hmg2005_bcc102.exe

Огромная благодарность Сергею Киселеву за помощь при подготовке этой сборки

Для частного использования подготовлены еще два дистрибутива:

 цитата:
-------------------------------------------------------------  
Minigui Ex Package (build date: 25.05.2020)
Download links: http://hmgextended.com/files/PRIVATE
-------------------------------------------------------------

Components versions:
--------------------

Harbour MiniGUI Extended Edition 20.05 (Release)

Harbour 3.2.0dev (r2004201301)

Harbour Make (hbmk2) 3.2.0dev (r2020-04-20 13:01)

gcc (MinGW-W64 i686-posix-dwarf, built by Brecht Sanders) 10.1.0



 цитата:
-------------------------------------------------------------  
Minigui Ex 64-bit Package (build date: 25.05.2020)
Download links: http://hmgextended.com/files/PRIVATE
-------------------------------------------------------------

Components versions:
--------------------

Harbour MiniGUI Extended Edition 20.05 (Release)

Harbour 3.4.0dev () (2017-12-20 13:40)

Harbour Make (hbmk2) 3.4.0dev () (2017-12-20 13:40)

gcc (MinGW-W64 x86_64-posix-seh, built by Brecht Sanders) 10.1.0



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



Пост N: 3244
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: Вчера 10:43. Заголовок: gfilatov2002 Change..


gfilatov2002
ChangeLog.txt
 
- enhanced auxiliary class TSBcell for a quick export of a data.
Usage:
WITH OBJECT oBrw
:lDrawLine := .F.
:GoTop()
FOR nAt := 1 TO :nLen
:DrawLine()
FOR nCol := 1 TO :nColCount()
oCol := :aColumns[ nCol ]

? "..", nCol, oCol:cName, Valtype(oCol:oCell:uValue), oCol:oCell:uValue, oCol:oCell:cValue
NEXT
:GoDown()
NEXT
:lDrawLine := .T.
:Reset()
END WITH

Перенести :DrawLine(), т.к. в предыдущем варианте срабатывала последней :DrawSelect(), это другое заполнение oCol:oCell

Что бы не делать лишний вызов, наверно, надо поправить
 
*-----------------------------------------------------------------------------*
FUNCTION HMG_Alert_MaxLines( nMaxLines )
*-----------------------------------------------------------------------------*
LOCAL nLines := s_nMaxLines

IF HB_ISNUMERIC( nMaxLines ) .AND. nMaxLines > 0
s_nMaxLines := nMaxLines
ENDIF

RETURN nLines


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



Пост N: 3245
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: Вчера 11:15. Заголовок: PS Сборка файлом Mak..


PS
Сборка файлом MakeAllMiniguiLibs.bat не проходит. Протокол
 
MiniGui.lib


h_activex.prg(326) Error E0020 Incomplete statement or unbalanced delimiters

h_activex.prg(328) Error E0030 Syntax error "syntax error at 'OERROR'"

h_activex.prg(330) Error E0010 ENDIF does not match IF

h_graph.prg(426) Warning W0032 Variable 'CNAMEOBJ' is assigned but not used in function 'GRAPHSHOW(190)'

h_graph.prg(426) Warning W0032 Variable 'CNAMEOBJ' is assigned but not used in function 'GRAPHSHOW(323)'
...


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



Пост N: 3246
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: Вчера 11:23. Заголовок: PS2 Может можно доба..


PS2
Может можно добавить таблицу процентов scale от размера фонта.
h_objects.prg
 
*-----------------------------------------------------------------------------*
FUNCTION oDlu4Font( nFontSize, lDlu2Pix )
*-----------------------------------------------------------------------------*
LOCAL nPrcW, nPrcH, aDim
LOCAL aScale := { { 8, 75, 75}, ;
{ 9, 85, 85}, ;
{ 10, 90, 90}, ;
{ 11, 100, 100}, ;
{ 12, 110, 100}, ;
{ 13, 115, 100}, ;
{ 14, 120, 110}, ;
{ 15, 130, 110}, ;
{ 16, 140, 120}, ;
{ 17, 145, 120}, ;
{ 18, 150, 130}, ;
{ 19, 160, 130}, ;
{ 20, 170, 140}, ;
{ 21, 175, 140}, ;
{ 22, 180, 150}, ;
{ 23, 190, 150}, ;
{ 24, 200, 160}, ;
{ 25, 205, 170}, ;
{ 26, 210, 170} ;
}

Default lDlu2Pix := .T., nFontSize := 11, nPrcW := 100, nPrcH := 100

IF nFontSize < aScale[1][1] ; nFontSize := aScale[1][1]
ELSEIF nFontSize > ATail(aScale)[1] ; nFontSize := ATail(aScale)[1]
ENDIF

FOR EACH aDim IN aScale
IF nFontSize == aDim[1]
nPrcW := aDim[2]
nPrcH := aDim[3]
EXIT
ENDIF
NEXT

IF lDlu2Pix ; RETURN := TDlu2Pix():New( nPrcW, nPrcH )
ENDIF

RETURN { nPrcW, nPrcH }

*-----------------------------------------------------------------------------*
FUNCTION oDlu2Pixel( nPrcW, nPrcH, nFontSize )
*-----------------------------------------------------------------------------*
LOCAL aPrcWH

IF HB_ISNUMERIC( nFontSize )
aPrcWH := oDlu4Font( nFontSize, .F. )
nPrcW := aPrcWH[1]
nPrcH := aPrcWH[2]
ENDIF

IF PCount() > 0
...


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




Пост N: 1720
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: Вчера 11:43. Заголовок: SergKis пишет: Chan..


SergKis пишет:

 цитата:
ChangeLog.txt

- enhanced auxiliary class TSBcell for a quick export of a data.
Usage:
WITH OBJECT oBrw
:lDrawLine := .F.
:GoTop()
FOR nAt := 1 TO :nLen
:DrawLine()
FOR nCol := 1 TO :nColCount()
oCol := :aColumns[ nCol ]
? "..", nCol, oCol:cName, Valtype(oCol:oCell:uValue), oCol:oCell:uValue, oCol:oCell:cValue
NEXT
:GoDown()
NEXT
:lDrawLine := .T.
:Reset()
END WITH


Перенести :DrawLine(), т.к. в предыдущем варианте срабатывала последней :DrawSelect(), это другое заполнение oCol:oCell

Что бы не делать лишний вызов, наверно, надо поправить

*-----------------------------------------------------------------------------*
FUNCTION HMG_Alert_MaxLines( nMaxLines )


Уже поправил в "тихом" обновлении этой сборки.

SergKis пишет:

 цитата:
можно добавить таблицу процентов scale от размера фонта


Да, это интересное предложение, но уже для следующей сборки.
Благодарю за оперативную помощь

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




Пост N: 1721
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: Сегодня 17:04. Заголовок: SergKis пишет: Сбор..


SergKis пишет:

 цитата:
Сборка файлом MakeAllMiniguiLibs.bat не проходит


Уже поправил в первом update для сборки 20.05, который выйдет завтра

SergKis пишет:

 цитата:
можно добавить таблицу процентов scale от размера фонта.


Добавил

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

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