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




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


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

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

Готовится к опубликованию новая сборка №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 [только новые]


gfilatov2002
moderator




Пост N: 812
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.08.15 22:50. Заголовок: SergKis пишет: наз..


SergKis пишет:

 цитата:
назвать его можно SetArrayTo(...)


Добавил этот код с небольшими изменениями в новую сборку

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





Пост N: 10
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 16.08.15 12:06. Заголовок: Уважаемый gfilatov2..


Уважаемый gfilatov2002 ...

где можно скачать полный перечень кодов по последней сборки, хотя бы с небольшим описание ...?

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 5223
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.08.15 12:41. Заголовок: Alex_Cher пишет: гд..


Alex_Cher пишет:

 цитата:
где можно скачать полный перечень кодов по последней сборки


Каких еще кодов ?

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 624
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.08.15 13:20. Заголовок: Каких еще кодов ? ч..



 цитата:
Каких еще кодов ?


чит кодов типа неубиваемая программа , монопольное владение процессором, самовосстановление при сбое и пр

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 5224
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.08.15 13:20. Заголовок: Haz пишет: чит кодо..


Haz пишет:

 цитата:
чит кодов


я думал коды запуска ракет надо

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 625
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.08.15 13:24. Заголовок: Alex_Cher пишет: гд..


Alex_Cher пишет:

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



Исходники минигуи открыты , все в них. В сборку входят и сами сырцы

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 5227
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.08.15 16:47. Заголовок: gfilatov2002 Предла..


gfilatov2002
Предлагаю все WINAPI функции (работающие корректно) присутствующие только в примерах ,
прикрутить к основной библиотеке.


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




Пост N: 813
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.08.15 17:07. Заголовок: Dima пишет: все WIN..


Dima пишет:

 цитата:
все WINAPI функции ... прикрутить к основной библиотеке.


Этот подход сейчас используется в официальной сборке HMG.
И он привел к тому, что размер экзешника простого примера составляет свыше 3,5 MБ.
Подобный пример, собранный с помощью минигуи с компилятором MinGW, будет иметь размер около 2.2 MБ.
Поэтому сохранение компактного ядра библиотеки рассматривается как приоритетная задача в Минигуи.
А использование дополнительных функций из примеров рекомендуется только в случае необходимости.
Поэтому и ответ на Ваше предложение - отрицательный

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 5228
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.08.15 17:20. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Поэтому и ответ на Ваше предложение - отрицательный


Да , предложение я не совсем верно озвучил. Скорее всего правильней было бы
эти функции сложить в отдельную либу (хош линкуй , не хош не линкуй).
В общем ладно....проехали.

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




Пост N: 797
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.08.15 21:19. Заголовок: gfilatov2002 Можно ..


gfilatov2002
Можно подправить некоторое места, добавив Self при вызове блока кода (выделено bold-ом) ?
 
METHOD KeyDown( nKey, nFlags ) CLASS TSBrowse
...
Case nKey == VK_CONTEXT .and. nFlags == 22872065
If ::bContext != Nil
Eval( ::bContext, ::nRowPos, ::nColPos, Self )
EndIf
Case !::lCellbrw .and. ( nKey == VK_RETURN .or. nKey == VK_SPACE ) .and. ::bLDblClick != Nil // 14.07.2015
Eval( ::bLDblClick, Nil, nKey, nFlags, Self ) // .08.
Otherwise
::SuperKeyDown( nKey, nFlags )
EndCase

Return 0
...

METHOD LDblClick( nRowPix, nColPix, nKeyFlags ) CLASS TSBrowse
...
#ifndef __EXT_SELECTION__
ElseIf ::lCanSelect .and. ::bUserKeys == Nil // Added 28.09.2012
::Selection()
#endif
ElseIf ::bLDblClick != Nil
Eval( ::bLDblClick, uPar1, uPar2, nKeyFlags, Self ) // .08.
EndIf

ElseIf nClickRow == 0 .and. ::lDrawHeaders .and. ! ::lNoChangeOrd // GF 1.71
If ::bLDblClick != Nil .and. ::aActions == Nil
Eval( ::bLDblClick, uPar1, uPar2, nKeyFlags, Self ) // .08.
Else
::SetOrder( ::nAtCol( nColPix, ! ::lSelector ) ) //V90
EndIf
ElseIf nClickRow == -2 .and. ::lDrawSpecHd .and. ::aColumns[ nCol ]:lEditSpec
...

METHOD RButtonDown( nRowPix, nColPix, nFlags ) CLASS TSBrowse
...
::DrawSelect()
bRClicked := If( ::aColumns[ nCol ]:bRClicked != Nil, ;
::aColumns[ nCol ]:bRClicked, ::bRClicked )

If bRClicked != Nil
Eval( bRClicked, uPar1, uPar2, ::nAt, Self ) //V90 .08.
Return 0 //V90
Else
Return 0
EndIf

ElseIf lHeader


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


Пост N: 1150
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 24.08.15 21:52. Заголовок: SergKis пишет: METH..


SergKis пишет:

 цитата:
METHOD LDblClick( nRowPix, nColPix, nKeyFlags )

SergKis пишет:

 цитата:
METHOD RButtonDown( nRowPix, nColPix, nFlags )


А тут разве не надо в параметрах Self указать?

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




Пост N: 798
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.08.15 23:54. Заголовок: PSP пишет:А тут разв..


PSP пишет:
 цитата:
А тут разве не надо в параметрах Self указать?


Нет. Метод уже принадлежит объекту Self. Это не функция. В блок кода параметром будет передана ссылка на объект TsBrowse для использования

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




Пост N: 799
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.08.15 00:01. Заголовок: SergKis пишет: Это н..


SergKis пишет:
 цитата:
Это не функция


В итоге, конечно, это статик функция, как конечная единица кода, но собственные свойства (DATA ..., METHOD ..., ....) доступны ей без параметров

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


Пост N: 1151
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 25.08.15 07:47. Заголовок: SergKis, thanks )..


SergKis, thanks )

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




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


SergKis пишет:

 цитата:
подправить некоторое места, добавив Self


Благодарю! Сделал, конечно

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




Пост N: 800
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.08.15 12:36. Заголовок: gfilatov2002 :sm36..


gfilatov2002

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 638
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.08.15 13:28. Заголовок: gfilatov2002 Григори..


gfilatov2002
Григорий , можно в класс TsBrowse добавить метод :GoToRec ( nRec ) ? А то Seek есть, Locate есть , а чтоб встать на нужную запись приходится ее или сикать или локатить

по сути это кусок из метода :expSeek() который просто отвечает за правильную прорисовку после перехода по DbSeek() , такой же кусок в методе :ExpLocate() .
Можно его продублировать как метод :GoToRec(), а можно и упростить :ExpSeek() и ExpLocate() заменив подобный код вызовом :GoToRec()

 
METHOD GoToRec( nRec ) CLASS TSBrowse
Local nRecNo, nLines

If ::lIsDbf
::Reset()
nRecNo := (::cAlias )->( RecNo() )
nLines := ::nRowCount()

::lValidating := .T.


( ::cAlias )->( DbGoto( nRec ) )

If nRecNo != ( ::cAlias )->( RecNo() ) .and. ::nLen > nLines

nRecNo := ( ::cAlias )->( RecNo() )
( ::cAlias )->( DbSkip( nLines - ::nRowPos ) )

If ( ::cAlias )->( EoF() )

Eval( ::bGoBottom )
::nRowPos := nLines
::nAt := ::nLogicPos()

While ::nRowPos > 1 .and. ( ::cAlias )->( RecNo() ) != nRecNo
::Skip( -1 )
::nRowPos --
EndDo
Else
( ::cAlias )->( DbGoTo( nRecNo ) )
::nAt := ::nLogicPos()
EndIf

::Refresh( .F. )
::ResetVScroll()

ElseIf nRecNo != ( ::cAlias )->( RecNo() )

nRecNo := ( ::cAlias )->( RecNo() )
Eval( ::bGoTop )
::nAt := ::nRowPos := 1

While nRecNo != ( ::cAlias )->( RecNo() )
::Skip( 1 )
::nRowPos ++
EndDo

::Refresh( .F. )
::ResetVScroll()

EndIf

If ::bChange != Nil
Eval( ::bChange, Self, 0 )
EndIf

::lHitTop := ::lHitBottom := .F.
end
Return .T.




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




Пост N: 820
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.08.15 15:35. Заголовок: Haz пишет: в класс ..


Haz пишет:

 цитата:
в класс TsBrowse добавить метод :GoToRec ( nRec )


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

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




Пост N: 821
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 28.08.15 13:30. Заголовок: Просто к сведению. В..


Просто к сведению. Выпустил сегодня RC1 для следующей сборки 2.5.2.
Скрытый текст
Искренне балагодарен зв Вашу помощь в улучшении и развитии библиотеки TSBrowse

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




Пост N: 801
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.08.15 15:58. Заголовок: gfilatov2002 Обнару..


gfilatov2002
Обнаружил бяку с LoadsField(...) TsBrowse. Пример: Скрытый текст

искажаются заголовки, не беруться уст. width, picture
Исправил так: METHOD LoadFields( lEditable )
 
было

cHeading := If( ! ::aHeaders == Nil .and. Len( ::aHeaders ) >= nE, ::aHeaders[ nE ], ;
::Proper( ( ::cAlias )->( Field( nE ) ) ) )

стало

If ValType(::aHeaders) == "A" .and. ! empty(::aHeaders) .and. n <= Len( ::aHeaders ) // .08.
cHeading := ::aHeaders[ n ]
Else
cHeading := ::Proper( ( ::cAlias )->( Field( nE ) ) )
EndIf

было

nSize := If( ! aColSizes == Nil .and. Len( aColsizes ) >= nE, aColSizes[ nE ], Nil )
cType := aStru[ nE, 2 ]
If cType == "C"

стало

If ValType(::aColSizes) == "A" .and. ! empty(::aColSizes) .and. n <= Len( ::aColSizes ) // .08.
nSize := ::aColSizes[ n ]
Else
nSize := If( ! aColSizes == Nil .and. Len( aColsizes ) >= nE, aColSizes[ nE ], Nil )
EndIf

cType := aStru[ nE, 2 ]
If cType == "C"

было

nSize := Max( GetTextWidth( 0, Replicate( "B", Len( cHeading ) ), hFont ), nSize )
nSize += If( ! Empty( cOrder ), 14, 0 ) //V90
EndIf

cBlock := 'FieldWBlock("' + aStru[ nE, 1 ] + '",Select("' + ::cAlias + '"))'

стало

nSize := Max( GetTextWidth( 0, Replicate( "B", Len( cHeading ) ), hFont ), nSize )
nSize += If( ! Empty( cOrder ), 14, 0 ) //V90
EndIf

If ValType(::aFormatPic) == "A" .and. ! empty( ::aFormatPic ) .and. n <= Len( ::aFormatPic ) // .08.
cPicture := ::aFormatPic[ n ]
EndIf

cBlock := 'FieldWBlock("' + aStru[ nE, 1 ] + '",Select("' + ::cAlias + '"))'







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