On-line: Andrey, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
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: 1705
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.01.18 14:21. Заголовок: Vlad04 SergKis пише..


Vlad04
SergKis пишет
 цитата:
crazy пример, перебор всех контролов всех окон


Выбрать контролы одного окна, тоже надо перебрать _HMG_aControlHandles и по handle окна это сделать.



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




Пост N: 5692
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.01.18 15:52. Заголовок: SergKis пишет: по т..


SergKis пишет:

 цитата:
по текстам так выглядит


Мне очень понравился стиль написания программы.
Жалко что не было такого раньше.


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




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


gfilatov2002 пишет:

 цитата:
Если есть еще пожелания/предложения для следующей сборки, то они с удовольствием будут приняты...


У меня возник вопрос: А как можно задать фонт для титула таблицы для Excel2() ?
Мне ответили - пока никак, надо развивать Exel2.

Есть пожелание для небольшого развития
METHOD Excel2( cFile, lActivate, hProgress, cTitle, lSave, bPrintRow ) CLASS TSBrowse

1) Добавить возможность задания фонта для титула таблицы, это то что над шапкой таблицы.
А то выходит очень маленьким фонтом.

А в идеале бы хотелось чтобы туда можно было передавать хотя бы 3 фонта в массиве (титул,шапка,ячейки),
для независимого построения листа экселя !
Таким образом можно будет подобрать приличный вид листа экселя.
Всё равно же при задании большого фонта в таблице высота ячейки не меняется.

2) Да и еще бы использовать то что предложил SergKis в Пост N: 1706.





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




Пост N: 1708
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.01.18 18:40. Заголовок: С пожеланием Ардрея,..


С пожеланием Ардрея, получилось так :
 
METHOD Excel2( cFile, lActivate, hProgress, xTitle, lSave ) CLASS TSBrowse
...
nOldCol := ::nCell
Local nCntCols := ::nColCount(), oCol, ;
aFntLine := array(nCntCols), ;
aFntHead := array(nCntCols), ;
aFntFoot := array(nCntCols), ;
hFntTitl, cTitle


Default nInstance := 0

If HB_ISARRAY(xTitle) .and. Len(xTitle) > 1
cTitle := xTitle[1]
hFntTitl := xTitle[2]
EndIf

Default cFile := "Book1.xls", ;
lActivate := .T., ;
lSave := .F., ;
cTitle := "", ;
hFntTitl := hFont


CursorWait()

For i := 1 To nCntCols
oCol := ::aColumns[ i ]
aFntLine[ i ] := oCol:hFont
aFntHead[ i ] := oCol:hFontHead
aFntFoot[ i ] := oCol:hFontFoot
If HB_ISBLOCK(oCol:hFont)
oCol:hFont := hFont
EndIf
If HB_ISBLOCK(oCol:hFontHead)
oCol:hFontHead := hFont
EndIf
If HB_ISBLOCK(oCol:hFontFoot)
oCol:hFontFoot := hFont
EndIf
Next

::lNoPaint := .F.
...
For nCol := 1 To Len( ::aColumns )

If Empty( ::aColumns[ nCol ]:hFont ) .and. Empty( ::aColumns[ nCol ]:hFontHead )
Loop
EndIf

hFont := ::aColumns[ nCol ]:hFont

If hFont != Nil
aFontTmp := GetFontParam(hFont)
IF AScan( aFont, {|e| e[ 1 ] == aFontTmp[ 1 ] .and. e[ 2 ] == aFontTmp[ 2 ] .and. ;
e[ 3 ] == aFontTmp[ 3 ] .and. e[ 4 ] == aFontTmp[ 4 ] .and. ;
e[ 5 ] == aFontTmp[ 5 ] .and. e[ 6 ] == aFontTmp[ 6 ] } ) == 0

AAdd( aFont, aFontTmp )
endif

EndIf

If hFont != Nil .and. hFntTitl != hFont

hFont := hFntTitl
aFontTmp := GetFontParam(hFont)
IF AScan( aFont, {|e| e[ 1 ] == aFontTmp[ 1 ] .and. e[ 2 ] == aFontTmp[ 2 ] .and. ;
e[ 3 ] == aFontTmp[ 3 ] .and. e[ 4 ] == aFontTmp[ 4 ] .and. ;
e[ 5 ] == aFontTmp[ 5 ] .and. e[ 6 ] == aFontTmp[ 6 ] } ) == 0

AAdd( aFont, aFontTmp )
endif

EndIf

hFont := ::aColumns[ nCol ]:hFontHead

If hFont != Nil
aFontTmp := GetFontParam(hFont)
IF AScan( aFont, {|e| e[ 1 ] == aFontTmp[ 1 ] .and. e[ 2 ] == aFontTmp[ 2 ] .and. ;
e[ 3 ] == aFontTmp[ 3 ] .and. e[ 4 ] == aFontTmp[ 4 ] .and. ;
e[ 5 ] == aFontTmp[ 5 ] .and. e[ 6 ] == aFontTmp[ 6 ] } ) == 0

AAdd( aFont, aFontTmp )
endif

EndIf

hFont := ::aColumns[ nCol ]:hFontFoot

If hFont != Nil
aFontTmp := GetFontParam(hFont)
IF AScan( aFont, {|e| e[ 1 ] == aFontTmp[ 1 ] .and. e[ 2 ] == aFontTmp[ 2 ] .and. ;
e[ 3 ] == aFontTmp[ 3 ] .and. e[ 4 ] == aFontTmp[ 4 ] .and. ;
e[ 5 ] == aFontTmp[ 5 ] .and. e[ 6 ] == aFontTmp[ 6 ] } ) == 0

AAdd( aFont, aFontTmp )
endif

EndIf

Next

If Len( aFont ) > 4
ASize( aFont, 4 )
EndIf
...
For nRow := 1 To ( ::nLen )

If nRow == 1

If ! Empty( cTitle )
cTitle := StrTran( cTitle, CRLF, Chr( 10 ) )
nAlign := If( Chr( 10 ) $ cTitle, 5, 1 )
hFont := hFntTitl
aFontTmp := GetFontParam( hFont )
nFont := AScan( aFont, {|e| e[ 1 ] == aFontTmp[ 1 ] .and. e[ 2 ] == aFontTmp[ 2 ] .and. ;
e[ 3 ] == aFontTmp[ 3 ] .and. e[ 4 ] == aFontTmp[ 4 ] .and. ;
e[ 5 ] == aFontTmp[ 5 ] .and. e[ 6 ] == aFontTmp[ 6 ] } )
FWrite( nHandle, BiffRec( 4, cTitle, 0, 0,, nAlign,, Max( 0, nFont - 1 ) ) )

nLine := 3
EndIf

For nCol := 1 To Len( ::aColumns )

uData := If( ValType( ::aColumns[ nCol ]:cHeading ) == "B", ;
Eval( ::aColumns[ nCol ]:cHeading, nCol, Self ), ;
::aColumns[ nCol ]:cHeading )
...
Next

If ::lDrawFooters

For nCol := 1 To Len( ::aColumns )

uData := If( ValType( ::aColumns[ nCol ]:cFooting ) == "B", ;
Eval( ::aColumns[ nCol ]:cFooting, nCol, Self ), ;
::aColumns[ nCol ]:cFooting )

If ValType( uData ) != "C"
uData := " "
EndIf

uData := Trim( StrTran( uData, CRLF, Chr( 10 ) ) )
nAlign := Min( LoWord( ::aColumns[ nCol ]:nFAlign ), 2 )
nAlign := If( Chr( 10 ) $ uData, 4, nAlign )
hFont := ::aColumns[ nCol ]:hFontFoot
aFontTmp := GetFontParam( hFont )
nFont := AScan( aFont, {|e| e[ 1 ] == aFontTmp[ 1 ] .and. e[ 2 ] == aFontTmp[ 2 ] .and. ;
e[ 3 ] == aFontTmp[ 3 ] .and. e[ 4 ] == aFontTmp[ 4 ] .and. ;
e[ 5 ] == aFontTmp[ 5 ] .and. e[ 6 ] == aFontTmp[ 6 ] } )

FWrite( nHandle, BiffRec( 4, uData, nLine - 1, nCol - 1, .T., nAlign + 1,, ;
Max( 0, nFont - 1 ) ) )

If hProgress != Nil

If nCount % nEvery == 0
SendMessage(hProgress, PBM_SETPOS, nCount, 0)
EndIf

nCount ++

EndIf

Next

++nLine

EndIf

FWrite( nHandle, BiffRec( 10 ) )
FClose( nHandle )

For i := 1 To nCntCols
oCol := ::aColumns[ i ]
oCol:hFont := aFntLine [ i ]
oCol:hFontHead := aFntHead [ i ]
oCol:hFontFoot := aFntFoot [ i ]
Next

If hProgress != Nil
SendMessage(hProgress, PBM_SETPOS, nTotal, 0)
EndIf
...

т.е. титул задавать массивом {"TEST TITLE EXCEL.", GetFontHandle('Font_5') }



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




Пост N: 5699
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.01.18 18:47. Заголовок: SergKis пишет: METH..


SergKis пишет:

 цитата:
METHOD Excel2( cFile, lActivate, hProgress, xTitle, lSave )



1) Чтобы у всех не свалились программы, наверное нужно сделать проверку на массив.
Если не массив, то работать нужно по старому, а если массив то по новому !

2) И как сделать показ своей функции ?
Допустим показа простого кол-ва: nCol / Len( ::aColSizes )
Блин, на старых компах так медленно идёт загрузка 5 тыс. записей...


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




Пост N: 1709
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.01.18 19:29. Заголовок: Andrey пишет Если не..


Andrey пишет
 цитата:
Если не массив, то работать нужно по старому, а если массив то по новому !


Ты прав, пропустил
 
If HB_ISARRAY(xTitle) .and. Len(xTitle) > 1
cTitle := xTitle[1]
hFntTitl := xTitle[2]
Else
cTitle := xTitle

EndIf

убрал у себя
cTitle := AllTrim(cTitle)
это всегда можно сделать снаружи

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




Пост N: 5700
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.01.18 19:32. Заголовок: SergKis пишет: это ..


SergKis пишет:

 цитата:
это всегда можно сделать снаружи


Нет не всегда. Я очень не люблю когда рабочии системы - пересобираешь новой версией и они начинают валиться !

А как сделать показ своей функции ?
Допустим показа простого кол-ва: nCol / Len( ::aColSizes )
Я вызываю свою фоновую функцию WaitThreadSay(cVal) // вывод доп.информации
Если это сложно, то фиг с ним, не надо.


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




Пост N: 1230
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.01.18 11:53. Заголовок: SergKis пишет: С по..


SergKis пишет:

 цитата:
С пожеланием Ардрея, получилось так


Добавил эти правки в RC 2 новой сборки.
Благодарю за помощь

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

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




Пост N: 1710
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.01.18 18:23. Заголовок: gfilatov2002 еще не..


gfilatov2002
еще немного правок в excel2
 
...
For nCol := 1 To Len( ::aColumns )

If ::aColumns[ nCol ]:lBitMap
Loop
Else
If Empty( ::aColumns[ nCol ]:hFont ) .and. Empty( ::aColumns[ nCol ]:hFontHead )
Loop
EndIf

hFont := ::aColumns[ nCol ]:hFont
...
For nRow := 1 To ( ::nLen )

If nRow == 1
...
For nCol := 1 To Len( ::aColumns )

If ::aColumns[ nCol ]:lBitMap
Loop
EndIf

uData := If( ValType( ::aColumns[ nCol ]:cHeading ) == "B", ;
...
EndIf
...


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




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


SergKis пишет:

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


OK, спасибо

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




Пост N: 1711
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.01.18 15:44. Заголовок: gfilatov2002 еще пр..


gfilatov2002
еще правки
 
METHOD LButtonDown( nRowPix, nColPix, nKeyFlags ) CLASS TSBrowse
...
oCol, ix

If ! ::lEnabled
Return 0
EndIf

Default ::lDontChange := .F.
...
METHOD LButtonUp( nRowPix, nColPix, nFlags ) CLASS TSBrowse

Local nClickRow, nDestCol

If ! ::lEnabled
Return 0
EndIf

If nKeyPressed != Nil
::DrawPressed( nKeyPressed, .F. )
EndIf
...


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




Пост N: 1232
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.01.18 18:40. Заголовок: SergKis пишет: еще ..


SergKis пишет:

 цитата:
еще правки


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

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




Пост N: 1233
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 22.01.18 12:14. Заголовок: Завершена подготовка..


Завершена подготовка очередной сборки 18.01, которая будет опубликована послезавтра.

В связи с необходимостью длительного лечения позвоночника (год и более) выпуск новых сборок будет приостановлен...



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



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 22.01.18 14:34. Заголовок: gfilatov2002 Но мы..


gfilatov2002

Но мы Вас ещё ведь услышим? Или лечение не позволит попасть на форум?

Спасибо: 0 
Vlad04
постоянный участник


Пост N: 757
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 22.01.18 14:55. Заголовок: длительного лечения ..



 цитата:
длительного лечения позвоночника



Будьте осторожны ! Никаких операций! Будьте здоровы.

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




Пост N: 1712
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.01.18 15:24. Заголовок: Мой опыт борьбы (бол..


Мой опыт борьбы (более 15 лет) с неисправностью позвоночника (без травм, из за сдвига дисков, от сидения - работа такая),
одна нога почти на 10 см. была короче другой. По каким только врачам, институтам не ходил, толку 0. Пока
3 женщины с лечебной физкультуры не стали делать растяжку мышц, сухожилий, дело чуть сдвинулось и по их
наводке, попал к мануалисту, занимающемуся со спортсменами, кикбоксеры, бойцы без правил, ...
Год ходил каждую неделю, потом раз в 2, месяц (мышцы, сухожилия обладают памятью). Он поставил меня на ноги.
Сейчас продолжаю ходить по самочувствию. А с операциями, Vlad04 прав, надо очень осторожно. Насмотрелся я в
реабилитационных центрах на людей после них ....
Удачи в лечении.

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




Пост N: 1234
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 22.01.18 15:38. Заголовок: SergKis пишет: Удач..


SergKis пишет:

 цитата:
Удачи в лечении


Благодарю за добрые слова!
Пока прописали "скорую помощь" - занятия на профилакторе Евминова

Alw Spencer пишет:

 цитата:
мы Вас ещё ведь услышим?


Обязательно

Просто сокращаетя до минимума время сидения перед монитором...

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




Пост N: 1235
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.01.18 11:02. Заголовок: Опубликована новая с..


Опубликована новая сборка 18.01 для BCC 5.51 для компиляторов Harbour и xHarbour

Базовый дистрибутив-инсталлятор находится по адресу

http://hmgextended.com/files/CONTRIB/hmg-18.01-setup.exe

Имеются в наличии также готовые сборки для следующих пар (Си-компилятор+Харбор):

- MinGW 7.2.0 32-bit для Harbour 3.2.0dev;

- MinGW 7.2.0 64-bit для Harbour 3.4.0dev;

- MS VisualC 2017 32-bit для Harbour 3.2.0dev;

- Borland/Embarcadero C++ 7.3 (32-bit) для Harbour 3.2.0dev.

ссылки на которые будут доступны по Вашему запросу

До новых встреч!

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




Пост N: 5702
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.01.18 17:18. Заголовок: Собрал на новой верс..


Собрал на новой версии несколько своих проектов ! Полёт нормальный !!!
Ждем новых встреч !!!

Обратите внимание на новый пример: MiniGUI\SAMPLES\Advanced\Tsb_array_3


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




Пост N: 1752
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.02.18 12:17. Заголовок: gfilatov2002 Немног..


gfilatov2002
Немного правок
 
CLASS TWndData
...
METHOD Release() INLINE iif( ::IsWindow, iif( ::lAction, PostMessage(::nHandle, WM_CLOSE, 0, 0), Nil ), Nil )

METHOD Restore() INLINE ShowWindow( ::nHandle, SW_RESTORE )
METHOD Show() INLINE _ShowWindow( ::cName )
METHOD Hide() INLINE _HideWindow( ::cName )

_METHOD DoEvent( Key, nHandle )
...
CLASS TCnlData INHERIT TWndData
...
METHOD PostMsg( nKey ) INLINE iif( ::oWin:Action, PostMessage( ::oWin:nHandle, ::WM_nMsgC, nKey, ::nHandle ), )
METHOD SendMsg( nKey ) INLINE iif( ::oWin:Action, SendMessage( ::oWin:nHandle, ::WM_nMsgC, nKey, ::nHandle ), )
...
...
METHOD Restore() INLINE ::Show()

METHOD Show() INLINE _ShowControl( ::cName, ::oWin:cName )
...


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