On-line: Andrey, Haz, гостей 0. Всего: 2 [подробнее..]
АвторСообщение
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 [только новые]


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




Пост N: 783
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.08.15 11:30. Заголовок: gfilatov2002 Григор..


gfilatov2002
Григорий, можно добавить в TSColumn парамметер cName в
Method New(..., cName)
Default cName := ""
и в соответствующие #command для колонок задание cName


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




Пост N: 802
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 05.08.15 16:08. Заголовок: SergKis пишет: можн..


SergKis пишет:

 цитата:
можно добавить в TSColumn парамметер cName


Ваша идея понятна
Присылайте готовую реализацию для проверки и включения в следующую сборку

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




Пост N: 784
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.08.15 11:50. Заголовок: gfilatov2002 пишет:П..


gfilatov2002 пишет:
 цитата:
Присылайте готовую реализацию


 
TSColumn.prg
~~~~~~~~~~~~
...
METHOD New( cHeading, bData, cPicture, aColors, aAlign, nWidth, ;
lBitMap, lEdit, bValid, lNoLite, cOrder, cFooting, ;
bPrevEdit, bPostEdit, nEditMove, lFixLite, a3DLook, ;
bWhen, oBrw, cData, cWhen, cValid, cPrevEdit, cPostEdit, cMsg, cToolTip, lTotal , ;
lSpinner, bUp, bDown, bMin, bMax, cError, cSpcHeading,;
cDefData, cName ) CLASS TSColumn
...

Default cHeading := "" , ;
bData := {|| Nil } , ;
cData := "{|| Nil }" , ;
...
lTotal := .F. , ; //V90
cName := ""

::cName := cName

If ValType( cHeading ) == "O"
::uBmpHead := cHeading
...

i_tsbrowse.ch
~~~~~~~~~~~~~
...
#command DEFINE COLUMN <oCol> ;
[ <dat: DATA, SHOWBLOCK> <uData> ] ;
...
[ <total: TOTAL, TOTALIZE> ] ;
[ NAME <name> ] ;
=> ;
<oCol> := TSColumn():New( ;
...
[<cMsg>], [ <cToolTip> ], [ <.total.> ], [ <"name"> ])
...
#command ADD [ COLUMN ] TO [ TBROWSE ] <oBrw> ;
[ <dat: DATA, SHOWBLOCK> <uData> ] ;
...
[ <total: TOTAL, TOTALIZE> ] ;
[ NAME <name> ] ;
=> ;
<oBrw>:AddColumn( TSColumn():New( ;
...
[<(bPostBlock)>], [<cMsg>], [ <cToolTip> ], [ <.total.> ], [ <"name"> ] ) )
...
#command ADD [ COLUMN ] TO [ TBROWSE ] <oBrw> [ DATA ] ARRAY ;
[ <el: ELM, ELEMENT> <elm> ] ;
...
[ <total: TOTAL, TOTALIZE> ] ;
[ NAME <name> ] ;
=> ;
<oBrw>:AddColumn( TSColumn():New( ;
...
[<cMsg>], [ <cToolTip> ], [ <.total.> ], [ <"name"> ]) )
...
#command ADD [ COLUMN ] TO [ TBROWSE ] <oBrw> [ DATA ] ;
<fi: oDBF, FIELD> [FIELD] <field> ;
...
[ <total: TOTAL, TOTALIZE> ] ;
[ NAME <name> ] ;
=> ;
<oBrw>:AddColumn( TSColumn():New( ;
...
[ <(bPrevBlock)> ], [<(bPostBlock)>], [<cMsg>], [ <cToolTip> ], [ <.total.> ], [ <"name"> ]))
...


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




Пост N: 803
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.08.15 12:53. Заголовок: SergKis Благодарю з..


SergKis
Благодарю за помощь
Принято с поправкой, что между [ <.total.> ] и [ <"name"> ] расположены еще 8 переменных

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




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


gfilatov2002 пишет:
 цитата:
между [ <.total.> ] и [ <"name"> ] расположены еще 8 переменных


пока выделял <"name"> bold-ом забыл про запятые.
Еще ошибочка при SpecHd, если нет Footer все хорошо, с Footer криво
 
METHOD DrawHeaders( lFooters ) CLASS TSBrowse
...
IF ::lDrawSpecHd
...
TSDrawCell( hWnd, ; // 1
hDC, ; // 2
0, ; // 3
nStartCol, ; // 4
aColSizes[nJ], ; // 5
cHeading, ; // 6
nAlign, ; // 7
nClrFore, ; // 8
nClrBackS, ; // 9
hFont, ; // 10
hBitMap, ; // 11
nHeightFoot, ; // 12 надо 0 вместо nHeightFoot
l3DLook, ; // 13
1, ; // 14 nLineStyle
nClrLine, ; // 15
4, ; // 16 1=Header 2=Footer 3=Super 4=Special
nHeightHead, ; // 17
nHeightFoot, ; // 18
nHeightSuper, ; // 19
nHeightSpecHd, ; // 20
lAdjBmp, ; // 21
.f., ; // 22
nVAlign, ; // 23
0, ; // 24 nVertText
nClrToS, ; // 25
lOpaque, ; // 26
If( lBrush, ;
nClrBackS:hBrush, 0 ), ; // 27
l3DText, ; // 28 3D text
nClr3dL, ; // 29 3D text light color
nClr3dS ) // 30 3D text shadow color


элемент // 12 надо 0 вместо nHeightFoot, тогда с прорисовкой SpecHd все Ok с Footer и без

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




Пост N: 804
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.08.15 20:20. Заголовок: SergKis пишет: элем..


SergKis пишет:

 цитата:
элемент // 12 надо 0 вместо nHeightFoot


Благодарю, уже поправил для новой сборки

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




Пост N: 786
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.08.15 09:50. Заголовок: gfilatov2002 А можн..


gfilatov2002
А можно еще немного изменений ?
 
TSColumn.prg
~~~~~~~~~~~~
...
CLASS TSColumn
...
DATA lOnGotFocusSelect AS LOGICAL INIT .F. // .T. - SendMessage( GetBoxHandle, EM_SETSEL, 0, -1 )
...
ENDCLASS

h_tbrowse.prg
~~~~~~~~~~~~~
...
#define EM_SETSEL 177
...

Function LoadFields( ControlName, ParentForm, lEdit, aFieldNames)
Local ix, oBrw
Default lEdit := .f.
ix := GetControlIndex (ControlName,ParentForm)
oBrw := _HMG_aControlIds [ix]
if ISARRAY(aFieldNames)
oBrw:aColSel := aFieldNames
endif
oBrw:LoadFields(lEdit)
Return oBrw // было Nil

Function SetArray( ControlName, ParentForm, Arr, lAutoCols, aHead, aSizes )
Local ix, oBrw
ix := GetControlIndex (ControlName,ParentForm)
oBrw:= _HMG_aControlIds [ix]
oBrw:SetArray(Arr, lAutoCols, aHead, aSizes)
Return oBrw // было Nil

...

METHOD Edit( uVar, nCell, nKey, nKeyFlags, cPicture, bValid, nClrFore, ;
...
DO CASE
CASE "TBTNBOX" $ Upper( oCol:oEdit:ClassName() )
oCol:oEdit:bLostFocus := Nil
CASE "TGETBOX" $ Upper( oCol:oEdit:ClassName() )
ix := GetControlIndex ( ::cChildControl, ::cParentWnd )
_HMG_InteractiveCloseStarted := .T.
if ix > 0
If oCol:lOnGotFocusSelect
If ValType(uValue) == "C"
_HMG_aControlGotFocusProcedure [ix] := {|| SendMessage( _HMG_aControlHandles [ix], EM_SETSEL, 0, If(empty(uValue), -1, Len(Trim(uValue))) ) }
ElseIf ValType(uValue) $ "ND"
_HMG_aControlGotFocusProcedure [ix] := {|| SendMessage( _HMG_aControlHandles [ix], EM_SETSEL, 0, -1 ) }
EndIf
EndIf

_HMG_aControlLostFocusProcedure [ix] := { | nKey | ::EditExit( nCell, nKey, uValue, bValid, .F. ) }
endif
if Empty( ::bLostFocus )
::bLostFocus := { || iif( _HMG_InteractiveCloseStarted, _HMG_InteractiveCloseStarted := .F., ) }
endif
ENDCASE
...

выделенным изменения

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




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


SergKis пишет:

 цитата:
еще немного изменений


Добавлено с благодарностью

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




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


Просто к сведению. Выпустил сегодня предварительный релиз для следующей сборки 2.5.1.
Финальный релиз запланирован на следующей неделе
Скрытый текст


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




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


gfilatov2002
Еще предложение для TSBrowse
Method SetArray2(...) Скрытый текст

Пример. Demo.prg Скрытый текст


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




Пост N: 807
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 07.08.15 16:35. Заголовок: SergKis пишет: Еще ..


SergKis пишет:

 цитата:
Еще предложение для TSBrowse


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

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




Пост N: 788
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.08.15 18:34. Заголовок: gfilatov пишет:два п..


gfilatov пишет:
 цитата:
два подобных метода в одном классе - это не перебор


Можно было наследовать TSBrowse и менять, но тогда DEFINE разваливаются, SetArray внутри в методах встречается, его оставлять надо. Я сначала попытался удержаться в рамках SetArray, но не получилось (и он задействован в программах). У меня складывается впечатление, возможностей у TSBrowse много (но на низком уровне) и надо все строить, в каждом проекте, практически сначала или таскать код из проекта в проект - нет практически готовых решений- metodов (мне показалось для массива). Для работы с полями базы есть LoadField(...)+aColSel в DEFINE (еще не щупал), вот я и попытался для отчетов (по запросу) в массив, кирпичек побольше соорудить (в первую очередь ориентировался на себя, но улучшить желающие могут найтись, я надеюсь). Мое мнение, чем больше готовых, укрупненых решений - тем проще делать алгоритмы задачи, а то, что много методов (и даже похожих) - это такая мелочь (в сравнение с кодом VO тем более) - этим можно пренебречь.

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




Пост N: 808
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 07.08.15 20:45. Заголовок: SergKis пишет: Можн..


SergKis пишет:

 цитата:
Можно было наследовать TSBrowse и менять, но тогда DEFINE разваливаются


Да, я тоже сначала подумал о субклассинге, но Вы убедили, что это создает другие проблемы...

SergKis пишет:

 цитата:
я и попытался для отчетов (по запросу) в массив


Тогда, может, стоит хотя бы переименовать метод в SetArrayForRep[ort]

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




Пост N: 789
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.08.15 23:12. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:
 цитата:
переименовать метод в SetArrayForRep[ort]


Да, вполне передает сущность

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




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


gfilatov2002
Подправленный вариант Method SetArray2(...) Скрытый текст

И назвать его можно SetArrayTo(...), на нем и корректировку делать можно, не только отчет

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




Пост N: 809
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 11.08.15 12:45. Заголовок: SergKis пишет: Подп..


SergKis пишет:

 цитата:
Подправленный вариант Method SetArray2(...)


Благодарю

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




Пост N: 810
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.08.15 10:30. Заголовок: Выпустил очередной р..


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

Сборка для компилятора BCC лежит на официальном сайте библиотеки по адресу:

http://hmgextended.com/files/CONTRIB/hmg-2.5.1-setup.zip

Также доступна сборка для компилятора MinGW по адресу:

http://hmgextended.com/files/CONTRIB/hmg251-mingw.exe

и компактный архив для свежей версии компилятора xHarbour

http://hmgextended.com/files/CONTRIB/xhmg251_xhb10130.zip

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

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




Пост N: 4442
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.08.15 12:33. Заголовок: Собрал под новой вер..


Собрал под новой версией свои проги. Полёт нормальный !


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



Пост N: 268
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 14.08.15 00:03. Заголовок: Подскажите - это так..


Подскажите - это так и должно быть или лечится ?:

1) Есть форма с контролом TAB . и организовано несколько страниц PAGE . На первой странице - несколько строчек :
LABEL и кнопок BUTTONEX . При первоначальном выводе формы - некоторые контролы и LABELы не отображаются пока
мышкой не проведешь там где они должны быть нарисованы ....




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




Пост N: 811
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.08.15 22:49. Заголовок: Softlog86 пишет: эт..


Softlog86 пишет:

 цитата:
это так и должно быть или лечится ?


Нет, это не нормально
Лечится с помощью включения следующей строки в процедуру ON INIT:

 цитата:
InvalidateRect( Application.Handle, 0 )



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