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


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




Пост N: 6389
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.08.19 12:28. Заголовок: Всем привет ! Вопрос..


Всем привет !
Вопрос возник, а почему в ресурсах МиниГуи нет иконки самого МиниГуи - официальной ?
Примеры тестовые делать можно было бы с официальной иконкой, а то и не знаешь какой вариант использовать.

И второй вопрос, почему нет в ядре МиниГуи функции _ShowContextMenu() ?
Замучился таскать её в проекты, частенько использую для тестовых проектов.
Григорий, добавь пожалуйста эту функцию в ядро.

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




Пост N: 1560
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.08.19 13:31. Заголовок: Andrey пишет: Вопро..


Andrey пишет:

 цитата:
Вопрос возник, а почему в ресурсах МиниГуи нет иконки самого МиниГуи - официальной ?


Спасибо за вопрос
Дело в том, что в разное время были разные иконки, а сейчас - такая, как на моей аватарке.
Поэтому проще просто поместить эту иконку в папку с примером и подключать ее из файла, а не из ресурсов

Andrey пишет:

 цитата:
второй вопрос, почему нет в ядре МиниГуи функции _ShowContextMenu() ?


Потому, что эта функция не доработана до конца (в частности, режим центрирования).


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




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


gfilatov2002 пишет:

 цитата:
Потому, что эта функция не доработана до конца (в частности, режим центрирования).


Доработайте пожалуйста и включите, нужна очень.
Вроде нормально работает в приложениях, нормально центрируется.

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




Пост N: 1561
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.08.19 20:14. Заголовок: Andrey пишет: включ..


Andrey пишет:

 цитата:
включите, нужна очень


Добавил эту функцию в новую сборку 19.08

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




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


gfilatov2002 пишет:

 цитата:
Добавил эту функцию в новую сборку 19.08


Спасибо !

Выслал примеры по Tsbrowse с карточкой + блокировка записей на почту.

Вопрос возник по Tab.
Показываю окно с Tab карточкой юзеру.
На медленных компах видно как этот Tab дергается, т.е. на Tab вывожу объекты Label и GetBox.
Там их много, порядка 150 объектов. Вот и дергается Tab.
Можно как то это "дерганье" убрать ?

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



Пост N: 2740
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.08.19 14:00. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение по растяжке предпоследней колонки показа, если последняя не помещается в размер тсб, при горизонтальном скроллинге колонок.
 
CLASS TSBrowse FROM TControl
...
DATA lAdjColumn AS LOGICAL INIT .F. // column expands to flush table window right

...
METHOD GetDeltaLen( nCol, nStartCol, nMaxWidth, aColSizes ) CLASS TSBrowse
Local nDeltaLen := 0

If ::lAdjColumn .and. nCol < Len( ::aColumns )
If ( nStartCol + aColSizes[ nCol ] + aColSizes[ nCol + 1 ] ) > nMaxWidth
nDeltaLen := nMaxWidth - ( nStartCol + aColSizes[ nCol ] )
EndIf
EndIf

RETURN nDeltaLen

...
METHOD DrawHeaders( lFooters ) CLASS TSBrowse
...
Local nDeltaLen

...
For nI := nBegin To nLastCol

If nStartCol >= nMaxWidth

Exit
EndIf

nJ := If( nI < ::nColPos, nJ + 1, nI )

oColumn := If( nJ > Len( ::aColumns ), ::oPhant, ::aColumns[ nJ ] )

nDeltaLen := ::GetDeltaLen( nJ, nStartCol, nMaxWidth, aColSizes )

...
TSDrawCell( hWnd, ; // 1
hDC, ; // 2
0, ; // 3
nStartCol, ; // 4
aColSizes[ nJ ] + nDeltaLen, ; // 5
...
IF ::lDrawSpecHd
...
TSDrawCell( hWnd, ; // 1
hDC, ; // 2
0, ; // 3
nStartCol, ; // 4
aColSizes[nJ] + nDeltaLen, ; // 5
...
If ::lFooting .and. ::lDrawFooters
...
TSDrawCell( hWnd, ; // 1
hDC, ; // 2
::nRowCount(), ; // 3
nStartCol, ; // 4
aColSizes[nJ] + nDeltaLen, ; // 5
...
EndIf

nStartCol += aColSizes[nJ] + nDeltaLen

Next

Return Self
...
METHOD DrawLine( xRow ) CLASS TSBrowse
...
Local nDeltaLen

...
For nI := nBegin To nLastCol

If nStartCol >= nMaxWidth

Exit
EndIf

nJ := If( nI < ::nColPos, nJ + 1, nI )

lSelected := If( nJ == nLastCol, .F., lSelected )
nLineStyle := ::nLineStyle
oColumn := If( nJ > Len( ::aColumns ), ::oPhant, ::aColumns[ nJ ] )

nDeltaLen := ::GetDeltaLen( nJ, nStartCol, nMaxWidth, aColSizes )

...
TSDrawCell( hWnd, ; // 1
hDC, ; // 2
xRow, ; // 3
nStartCol , ; // 4
aColSizes[ nJ ] + nDeltaLen, ; // 5
...
nStartCol += aColSizes[ nJ ] + nDeltaLen

Next

EndIf

Return Self
...
METHOD DrawSelect( xRow ) CLASS TSBrowse
...
Local nDeltaLen

...
For nI := nBegin To nLastCol

If nStartCol >= nMaxWidth

Exit
EndIf

nJ := If( nI < ::nColPos, nJ + 1, nI )
oColumn := If( nJ > Len( ::aColumns ), ::oPhant, ::aColumns[ nJ ] )
nLineStyle := ::nLineStyle

nDeltaLen := ::GetDeltaLen( nJ, nStartCol, nMaxWidth, aColSizes )

...
TSDrawCell( hWnd, ; // 1
hDC, ; // 2
nRowPos, ; // 3
nStartCol, ; // 4
aColSizes[ nJ ] + nDeltaLen, ; // 5
...
!(::lCellBrw .and. nJ != ::nCell) ) // 32 Invert color

nStartCol += aColSizes[ nJ ] + nDeltaLen

Next

EndIf
...

SuperHeader не поддерживает, надо править расчет.
Пример проверки тут https://TransFiles.ru/34r31

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



Пост N: 2741
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.08.19 16:37. Заголовок: PS Для работы коррек..


PS
Для работы корректировки надо
 
CLASS TSColumn
...
DATA nEditWidth AS NUMERIC //

DATA nEditMove AS NUMERIC // post editing cursor movement
...
METHOD DrawSelect( xRow ) CLASS TSBrowse
...
EndIf

oColumn:nEditWidth := 0

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

TSDrawCell( hWnd, ; // 1
...
METHOD Edit( uVar, nCell, nKey, nKeyFlags, cPicture, bValid, nClrFore, ;
nClrBack ) CLASS TSBrowse
...
EndIf

If oCol:nEditWidth > 0
nWidth := oCol:nEditWidth
If ! ::lNoVScroll
nWidth -= GetVScrollBarWidth()
EndIf
EndIf

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

В примере
ON KEY ESCAPE ACTION iif( oBrw:IsEdit, oBrw:PostMsg(WM_KEYDOWN, VK_ESCAPE), _wPost(99) )

END WINDOW
...
FUNCTION Brw2Fld( nY, nX, nW, nH, cBrw, aColor )
...
:LoadFields(.T.)
...

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




Пост N: 1562
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.08.19 20:12. Заголовок: SergKis пишет: Для ..


SergKis пишет:

 цитата:
Для работы корректировки


Принято с благодарностью
Проверил на Вашем примере - работает

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



Пост N: 2742
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.08.19 23:58. Заголовок: gfilatov2002 Добави..


gfilatov2002
Добавил в пример проверку работы метода :GetCellinfo(...). На кл. F3 в Footer колонки вкл. GetBox для ввода
Пример https://TransFiles.ru/958i8

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




Пост N: 1563
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.08.19 09:51. Заголовок: SergKis пишет: пров..


SergKis пишет:

 цитата:
проверку работы метода :GetCellinfo(...)


По-видимому, были еще внесены изменения в код, поскольку у меня этот метод так красиво не отрабатывает, как в Вашем откомпилированном примере. Что-то я потерял в этих модификациях

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




Пост N: 1564
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.08.19 10:12. Заголовок: P.S. Понял, что надо..


P.S. Понял, что надо изменить метод :GetCellinfo(...) также, как и метод Edit().
Сейчас Ваш пример у меня работает нормально
Благодарю за помощь

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



Пост N: 2743
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.08.19 10:29. Заголовок: gfilatov2002 пишет П..


gfilatov2002 пишет
 цитата:
По-видимому, были еще внесены изменения в код[quote]

`
Отвлекли на другое и забыл об изменениях внесенных в :GetCellInfo, извините.
У меня они такие
 
METHOD GetCellInfo( nRowPos, nCell, lColSpecHd ) CLASS TSBrowse
...
endif

If oCol:nEditWidth > 0
nWidth := oCol:nEditWidth
If ! ::lNoVScroll
nWidth -= GetVScrollBarWidth()
EndIf
EndIf

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


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




Пост N: 1565
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.08.19 11:20. Заголовок: SergKis пишет: У ме..


SergKis пишет:

 цитата:
У меня они такие

METHOD GetCellInfo( nRowPos, nCell, lColSpecHd ) CLASS TSBrowse


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

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



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


gfilatov2002
Правка (тогда :lNoHScroll := .F.\.T. работает правильно)
 
METHOD SetNoHoles( nDelta, lSet ) CLASS TSBrowse
...
nHole := _GetClientRect( ::hWnd )[ 4 ] - ;
::nHeightHead - ::nHeightSuper - ;
::nHeightFoot - ::nHeightSpecHd //- ;
// If( ::lNoHScroll, 0, GetHScrollBarHeight() )

...
и
METHOD GetCellInfo( nRowPos, nCell, lColSpecHd ) CLASS TSBrowse
...
Local lHead := .F.
Local lFoot := .F.

If HB_ISLOGICAL( nRowPos )
If nRowPos ; lHead := .T.
Else ; lFoot := .T.
EndIf
nRowPos := NIL
lColSpecHd := .F.
EndIf
...
endif

If lHead
nRow := ::nHeightSuper + If( oCol:l3DLook, 2, 0 ) + 1
nHeight := ::nHeightHead
ElseIf lFoot
nRow := _GetClientRect( ::hWnd )[4] - ::nHeightFoot + 1
nHeight := ::nHeightFoot
EndIf

ix := GetControlIndex ( cBrw, cForm )
if _HMG_aControlContainerRow [ix] == -1
...
тогда в примере сделать
DEFINE TOOLBAR ToolBar_3 CAPTION "" BUTTONSIZE 42,32 FLAT
BUTTON 99 CAPTION 'Exit' PICTURE 'exit' ACTION _PushKey(VK_ESCAPE)
END TOOLBAR
...
oBrw:UserKeys(VK_F3, {|ob| _wPost(3, ob, ob) })
oBrw:UserKeys(VK_F4, {|ob| _wPost(4, ob, ob) })

(This.Object):Event( 3, {|ot,oi,ob,y,x,w,h,cn| cn := ot:Name, ;
oi := ob:GetCellinfo(.T., ob:nCell), ; // Header
y := oi:nRow, ;
x := oi:nCol, ;
w := oi:nWidth, ;
h := ob:nHeightFoot, ;
This.MyFoot.Row := y, ;
This.MyFoot.Col := x, ;
This.MyFoot.Width := w, ;
This.MyFoot.Height := h, ;
This.MyFoot.Show, DoEvents(), ;
This.MyFoot.SetFocus } )

(This.Object):Event( 4, {|ot,oi,ob,y,x,w,h,cn| cn := ot:Name, ;
oi := ob:GetCellinfo(.F., ob:nCell), ; // Footer
y := oi:nRow, ;
x := oi:nCol, ;
w := oi:nWidth, ;
h := ob:nHeightFoot, ;
This.MyFoot.Row := y, ;
This.MyFoot.Col := x, ;
This.MyFoot.Width := w, ;
This.MyFoot.Height := h, ;
This.MyFoot.Show, DoEvents(), ;
This.MyFoot.SetFocus } )

...


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




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


SergKis пишет:

 цитата:
Правка (тогда :lNoHScroll := .F.\.T. работает правильно)


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

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



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


gfilatov2002
Предложение
 
HB_FUNC( TSDRAWCELL )
...
int iTxtW = 0;
BOOL bDraw = FALSE;

memset( &bm, 0, sizeof( BITMAP ) );
...
if( lCursor )
cDrawCursor( hWnd, &rct, lCursor, clrFore );
}
bDraw = TRUE;

}

DeleteObject( hGrayPen );
DeleteObject( hWhitePen );

hb_retl( bDraw );

...
CLASS TSBrowse FROM TControl
...
DATA aDrawCols AS ARRAY INIT {} // list of columns in display

...
METHOD DrawSelect( xRow ) CLASS TSBrowse
...
Local nDeltaLen, lDraw := .F.

Default xRow := nRowPos

::nPaintRow := xRow
::aDrawCols := {}


If Empty( ::aColumns )
...
If nDeltaLen > 0
oColumn:nEditWidth := aColSizes[ nJ ] + nDeltaLen
EndIf

lDraw := TSDrawCell( hWnd, ; // 1
...
nStartCol += aColSizes[ nJ ] + nDeltaLen

If lDraw
AAdd( ::aDrawCols, nJ )
EndIf

Next
...


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



Пост N: 2746
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.08.19 17:52. Заголовок: PS В примере получим..


PS
В примере получим список колонок в отображении
 
oBrw:UserKeys(VK_F5, {|ob| _wPost(5, ob, ob) })
...
(This.Object):Event( 5, {|ot,oi,ob| _LogFile(.T., hb_valtoexp(ob:aDrawCols)) })
...


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




Пост N: 1567
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.08.19 20:37. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предложение


Сергей,

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

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



Пост N: 2747
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.08.19 20:59. Заголовок: gfilatov2002 пишет Д..


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


Сейчас трудно понять список колонок, которые проходят в методах прорисовки :Draw...(), т.к. определяется реально в функции TSDrawCell(...) по nStartCol и размером тсб GetClientRect( hWnd, &rct ), что затрудняет переделать :DrawSuper к примеру, т.к. там пляшет от ::aColSizes и aColSizes, понять мне не удалось, есть значения не совпадающие ни oCol:nWidth, oCol:nEditWidth и нет ясности в списке колонок.
Для начала на :aDrawCols сделать прорисовку :DrawSuper() для режима :ladjColumn := .T.
Может еще где пригодится

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




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


SergKis пишет:

 цитата:
на :aDrawCols сделать прорисовку :DrawSuper() для режима :ladjColumn := .T.


Понял, уже добавляю...
Благодарю за разъяснение

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 250 , стр: 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 час. Хитов сегодня: 25
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет