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




Пост N: 699
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)


Начало темы находится здесь, а теперь

АНОНС * АНОНС * АНОНС * АНОНС * АНОНС

Готовится к опубликованию новая сборка №48, которая выйдет в конце недели.
Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне

Кратко, что нового:

- исправление обнаруженных ошибок и неточностей кода;
- новый класс HEADERIMAGE для Grid и Browse;
- свойство Address в Hyperlink может теперь открывать папку или файл на диске;
- добавлен NOTABSTOP класс для Browse;
- поддержка пользовательских компонентов (заимствована из оффициального релиза);
- расширения и исправления в библиотеках TsBrowse и PropGrid;
- обновлены сборки Харбор и HMGS-IDE;
- новые и обновленные старые примеры (как обычно ).




Спасибо: 5 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


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




Пост N: 2919
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.09.19 06:07. Заголовок: gfilatov2002 Попроб..


gfilatov2002
Попробовал mgDbu, для ntx все нормально, для cdx без fpt не вышло поставить rdd dbfcdx.
Изменил и смог отработать Скрытый текст


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




Пост N: 2920
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.09.19 06:12. Заголовок: PS При создании tag ..


PS
При создании tag без FOR опция UNIQUE недоступна, на Key тоже может быть unique

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




Пост N: 2921
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.09.19 06:16. Заголовок: PPS Правильнее IF..


PPS
Правильнее
 
IF !Empty(cDBFName)
cRddName := iif( upper(cDBFName) == 'CDX', 'DBFCDX', NIL )
cDBFName := NIL
ENDIF


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




Пост N: 1588
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.09.19 12:39. Заголовок: SergKis пишет: Изме..


SergKis пишет:

 цитата:
Изменил и смог отработать


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

SergKis пишет:

 цитата:
на Key тоже может быть unique


Поправил

Эти изменения будут включены в 4-ю бета-версию новой сборки

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




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


gfilatov2002
Может в StatusBar завести item для индикации RddSetDefault() и click для установки\смены
ACTION {|| RddSetDefault( iif( RddSetDefault() == 'DBFCDX', 'DBFNTX', 'DBFCDX' ) ) }

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




Пост N: 1589
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.09.19 14:54. Заголовок: SergKis пишет: в St..


SergKis пишет:

 цитата:
в StatusBar завести item для индикации RddSetDefault() и click для установки\смены


Сделал, конечно
Благодарю за помощь

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




Пост N: 2924
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.09.19 11:07. Заголовок: gfilatov2002 По мне..


gfilatov2002
По мне, использовать GetStartupFolder() при работе с dbf не очень хорошо.
Работаю в Far и мне нужно тек. каталог, т.е.
mgDbu.exe U09.dbf или
mgDbu.exe .\2019\R08.dbf
а зацеплено везде GetStartupFolder()

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




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


SergKis пишет:

 цитата:
использовать GetStartupFolder() при работе с dbf не очень хорошо


Заменил эту функцию на GetCurrentFolder()
Благодарю за помощь

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




Пост N: 2926
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.09.19 22:34. Заголовок: gfilatov2002 Немног..


gfilatov2002
Немного правки
 
METHOD SetArrayTo( aArray, uFontHF, aHead, aSizes, uFooter, aPicture, aAlign, aName ) CLASS TSBrowse
...
EndIf

If hFontHead != Nil
::hFontHead := hFontHead
EndIf
If hFontFoot != Nil
::hFontFoot := hFontFoot
EndIf

::aArray := aArray
::lPickerMode := .F.
...
METHOD InsColumn( nPos, oColumn ) CLASS TSBrowse
...
If oColumn:lDefineColumn
oColumn:DefColor( Self, oColumn:aColors )
oColumn:DefFont ( Self )
EndIf

IF ! Empty( ::hFontHead )
oColumn:hFontHead := ::hFontHead
ENDIF
IF ! Empty( ::hFontFoot )
oColumn:hFontFoot := ::hFontFoot
ENDIF

Default nPos := 1
...


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




Пост N: 2927
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.09.19 22:51. Заголовок: PS METHOD InsColumn(..


PS
METHOD InsColumn( nPos, oColumn ) CLASS TSBrowse
Не надо править.
В oColumn:DefFont( Self ) такая установка есть, не увидел.

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




Пост N: 1591
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.09.19 18:52. Заголовок: SergKis пишет: Немн..


SergKis пишет:

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


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

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




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


gfilatov2002
Предложение. У себя сделал для многострочных колонок, прошло на ура.
 
CLASS TSColumn
...
DATA nEditRow AS NUMERIC //
DATA nEditCol AS NUMERIC //
DATA nEditHeight AS NUMERIC //

DATA nEditWidth AS NUMERIC //
...
METHOD Edit( uVar, nCell, nKey, nKeyFlags, cPicture, bValid, nClrFore, nClrBack ) CLASS TSBrowse
...
::cChildControl := GetUniqueName( "GetBox" )

nRow += ::aEditCellAdjust[1]
nCol += ::aEditCellAdjust[2]
nWidth += ::aEditCellAdjust[3]
nHeight += ::aEditCellAdjust[4]

If oCol:nEditHeight > 0
nHeight := oCol:nEditHeight
IF oCol:nEditRow > 0
nRow := oCol:nEditRow
ENDIF
IF oCol:nEditCol > 0
nCol := oCol:nEditCol
ENDIF
EndIf

oCol:oEdit := TGetBox():New( nRow, nCol, bSETGET( uValue ), Self, nWidth, nHeight, ;
...
Применение. Двухстрочная строка тсб. Есть 2е колонки с ценой, 1ая показ в первой строке, 2ая во второй.
Цены надо править, т.е GetBox там где своя цена соответсвено.
В программе дл тсб
:InsColumn( 1, gCols( ArrayNo ))
// первая цена
oCol := :GetColumn("R_10")
oCol:bDecode := {|nv| hb_ntos(nv)+CRLF+' ' }
oCol:bPrevEdit := {|nv,ob| Prev_Cena0(ob, 1 ) }
oCol:bPostEdit := {|nv,ob| Post_Cena0(ob, 1, nv) }
oCol:lEdit := .T.
// вторая цена, вторая строка
oCol := :GetColumn("R_12")
oCol:bDecode := {|nv| ' ' + CRLF + hb_ntos(nv) }
oCol:bPrevEdit := {|nv,ob| Prev_Cena0(ob, 2 ) }
oCol:bPostEdit := {|nv,ob| Post_Cena0(ob, 2, nv) }
oCol:lEdit := .T.

ADD SUPER HEADER TO oBrw FROM 1 TO :nColumn("R_2") TITLE "Excel"
ADD SUPER HEADER TO oBrw FROM :nColumn("R_2" )+1 TO :nColumn("R_10")-1 TITLE gTxt(Material)
ADD SUPER HEADER TO oBrw FROM :nColumn("R_10") TO :nColCount() TITLE gTxt(Ucen)
...
*-----------------------------------------------------------------------------*
STAT FUNC Prev_Cena0( oBrw, nLine )
*-----------------------------------------------------------------------------*
LOCAL oCol, aLine, cPic := '99999.9999'

WITH OBJECT oBrw
IF nLine == 1
oCol := :GetColumn("R_10")
oCel := :GetCellSize( :nColumn("R_10"), :nRowPos )
oCol:nEditHeight := int( oCel:nHeight / 2 ) + 2
oCol:nEditRow := oCel:nRow
oCol:nEditCol := oCel:nCol - 1
oCol:cPicture := cPic
Else
aLine := :aArray[ :nAt ]
If Empty( aLine[ Len(aLine) - 1 ] ) ; RETURN .F. // нет кода материала
EndIf
oCol := :GetColumn("R_12")
oCel := :GetCellSize( :nColumn("R_12"), :nRowPos )
oCol:nEditHeight := int( oCel:nHeight / 2 ) + 2
oCol:nEditRow := oCel:nRow + ( oCel:nHeight - oCol:nEditHeight )
oCol:nEditCol := oCel:nCol - 1
oCol:cPicture := cPic
EndIf
END WITH

RETURN .T.
*-----------------------------------------------------------------------------*
STAT FUNC Post_Cena0( oBrw, nLine, nCena )
*-----------------------------------------------------------------------------*
LOCAL aLine, cKodK, nCenK, cKod, nCnt
LOCAL nColC := oBrw:nCell - 1 // 7
LOCAL nColK := Len(oBrw:aArray[1]) - 1 // 9

nCenK := Val( StrZero(nCena, 11, 4) )

WITH OBJECT oBrw

If nLine == 1

:aArray[ :nAt ][ nColC ] := nCenK
:DrawSelect()

Else

cKodK := :aArray[ :nRowPos ][ nColK ]
nCnt := 0

FOR EACH aLine IN :aArray
nCnt += 1
cKod := aLine[ nColK ]
If ! Empty( cKod ) .and. cKodK == cKod
:aArray[ nCnt ][ nColC ] := nCenK
EndIf
NEXT

:Refresh()

EndIf

END WITH

RETURN .T.
...

В методе :Edit() сделанное для GetBox можно распространить для всех контролов, кроме EditBox

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




Пост N: 1592
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.09.19 10:34. Заголовок: SergKis пишет: В ме..


SergKis пишет:

 цитата:
В методе :Edit() сделанное для GetBox можно распространить для всех контролов, кроме EditBox


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

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




Пост N: 2929
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.09.19 12:32. Заголовок: gfilatov2002 пишет Д..


gfilatov2002 пишет
 цитата:
Добавил эти изменения, хотя у меня создается впечатление, что кроме Вас никто это не будет использовать


Ради только меня не стоит это делать. В моей версии это есть. TBrowse таблица, как бы, осноаной рабочий инструмент.
Разве не возникает потребности организовать ввод в отдельной строке (задаем заранее в каждой колонке координаты) или все колонки вводить в одних координатах (как в Excel) ? Это все без доп. GetBox и ... в связке с тсб.

PS
В TSCOLUMN добавлен еще, т.к. Picture отображения тсб колонки и Edit ее могут быть разными.
DATA cEditPicture
 
...
METHOD Edit( uVar, nCell, nKey, nKeyFlags, cPicture, bValid, nClrFore, nClrBack ) CLASS TSBrowse
...
If oCol:nEditHeight > 0
nHeight := oCol:nEditHeight
IF oCol:nEditRow > 0
nRow := oCol:nEditRow
ENDIF
IF oCol:nEditCol > 0
nCol := oCol:nEditCol
ENDIF
EndIf
If oCol:cEditPicture != Nil
cPicture := oCol:cEditPicture
EndIf

...


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




Пост N: 1593
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.09.19 14:16. Заголовок: SergKis пишет: В TS..


SergKis пишет:

 цитата:
В TSCOLUMN добавлен еще, т.к. Picture отображения тсб колонки и Edit ее могут быть разными.
DATA cEditPicture


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

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




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


gfilatov2002 пишет:

 цитата:
Добавил эти изменения, хотя у меня создается впечатление, что кроме Вас никто это не будет использовать


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

SergKis пишет:

 цитата:
TBrowse таблица, как бы, осноаной рабочий инструмент.


Просто отличный инструмент !!!
Вот так можно сделать TBrowse-таблицу:


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




Пост N: 2930
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.10.19 19:19. Заголовок: gfilatov2002 Немног..


gfilatov2002
Немного изменил, что бы не перекрывались :nEditWidth при перерисовке с :llAdjColumns и заданным :nEditWidth для Edit
 
DATA cEditPicture //
DATA nEditRow AS NUMERIC //
DATA nEditCol AS NUMERIC //
DATA nEditHeight AS NUMERIC //
DATA nEditWidth AS NUMERIC //
DATA nEditWidthDraw AS NUMERIC //

DATA nEditMove AS NUMERIC // post editing cursor movement
...
METHOD DrawSelect( xRow, lDrawCell ) CLASS TSBrowse
...
oColumn:nEditWidthDraw := 0

If nDeltaLen > 0
oColumn:nEditWidthDraw := aColSizes[ nJ ] + nDeltaLen
EndIf

If lDrawCell
...
METHOD DrawSuper() CLASS TSBrowse
...
For nI := 1 To Len( ::aColumns )
oCol := ::aColumns[ nI ]
If oCol:nEditWidthDraw > 0
aColSizes[ nI ] := oCol:nEditWidthDraw - iif( ::lNoVScroll, GetVScrollBarWidth(), 0 )
Else
aColSizes[ nI ] := oCol:nWidth
EndIf
Next
...
METHOD GetCellInfo( nRowPos, nCell, lColSpecHd ) CLASS TSBrowse
...
If oCol:nEditWidthDraw > 0
nWidth := oCol:nEditWidthDraw
If ! ::lNoVScroll
nWidth -= GetVScrollBarWidth()
EndIf
EndIf

If lHead
...
METHOD Edit( uVar, nCell, nKey, nKeyFlags, cPicture, bValid, nClrFore, ;
...
If oCol:nEditWidthDraw > 0
nWidth := oCol:nEditWidthDraw
If ! ::lNoVScroll
nWidth -= GetVScrollBarWidth()
EndIf
EndIf

If oCol:cResName != Nil .or. oCol:lBtnGet
...

Пример использования на базе Advanced\Tsb_Basic_2\demo5.prg Скрытый текст


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




Пост N: 1594
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.10.19 19:38. Заголовок: SergKis пишет: Немн..


SergKis пишет:

 цитата:
Немного изменил


Благодарю за помощь и тестовый пример

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




Пост N: 2931
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.10.19 19:54. Заголовок: gfilatov2002 Лучше ..


gfilatov2002
Лучше сделать так
 
METHOD Edit( uVar, nCell, nKey, nKeyFlags, cPicture, bValid, nClrFore, ;
...
nRow += ::aEditCellAdjust[1]
nCol += ::aEditCellAdjust[2]
nWidth += 2+::aEditCellAdjust[3]
nHeight += 2+::aEditCellAdjust[4]

If oCol:nEditWidth > 0
nWidth := oCol:nEditWidth
EndIf
If oCol:nEditHeight > 0
nHeight := oCol:nEditHeight
EndIf
If oCol:nEditRow > 0
nRow := oCol:nEditRow
EndIf
If oCol:nEditCol > 0
nCol := oCol:nEditCol
EndIf

If oCol:cEditPicture != Nil
cPicture := oCol:cEditPicture
EndIf

oCol:oEdit := TGetBox():New( nRow, nCol, ;
bSETGET( uValue ), Self, nWidth, nHeight, ;
...


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




Пост N: 1595
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.10.19 20:24. Заголовок: SergKis пишет: Лучш..


SergKis пишет:

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


OK, сделал
Благодарю за подсказку

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