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




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





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


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


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



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


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

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



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




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


SergKis пишет:

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


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

SergKis пишет:

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


Поправил

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

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



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


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

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




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


SergKis пишет:

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


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

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



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




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


SergKis пишет:

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


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

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



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



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


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

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




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


SergKis пишет:

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


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

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



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




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


SergKis пишет:

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


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

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



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




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


SergKis пишет:

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


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

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




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


gfilatov2002 пишет:

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


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

SergKis пишет:

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


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


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



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




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


SergKis пишет:

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


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

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



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




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


SergKis пишет:

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


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

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

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