On-line: PSP, гостей 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 [только новые]


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


Пост N: 840
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 06.07.20 18:56. Заголовок: Тест идет, а реальна..


Тест идет, а реальная то же вываливается с ошибкой
 цитата:
Error BASE/1132 Bound error: array access

, но в других местах.
Я её и раньше проверял - никогда она нормально не работала.

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




Пост N: 6743
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.07.20 19:24. Заголовок: Печально... :sm66:..


Печально...

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





Пост N: 257
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 07.07.20 05:17. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Добавил также архив для бесплатного Embarcadero C++ 10.2 'Tokyo' compiler

http://hmgextended.com/files/CONTRIB/hmg2003_bcc102.exe



Видимо, ссылка неправильная. Скорее всего должно быть http://hmgextended.com/files/CONTRIB/hmg2006_bcc102.exe

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




Пост N: 1735
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.07.20 10:55. Заголовок: Выложил обновление д..


Выложил обновление для сборки 20.06 (Update 2) с учетом последних наработок

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

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

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

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




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


gfilatov2002
Правка небольшая
 
METHOD Enabled( lEnab ) CLASS TSBrowse
...
If ::lDrawSuperHd
AEval( ::aSuperHead, {|as| AAdd( ::aOldEnabled[4], { as[4], as[5], as[11] } ) } )
EndIf
If !Empty(::oPhant)
::oPhant:SaveColor()
::oPhant:nClrHeadBack := ::nCLR_HGRAY
::oPhant:nClrFootBack := ::nCLR_HGRAY
EndIf

ENDIF
...
ELSE

IF ! ::lEnabled
For nI := 1 TO Len( ::aColumns )
::aColumns[ nI ]:RestColor()
SetColor( , ::aColumns[ nI ]:aColors, nI )
Next
If !Empty(::oPhant)
::oPhant:RestColor()
EndIf

...


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




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


SergKis пишет:

 цитата:
Правка небольшая


OK

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




Пост N: 6747
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.07.20 17:19. Заголовок: SergKis пишет: Прав..


SergKis пишет:

 цитата:
Правка небольшая
METHOD Enabled( lEnab ) CLASS TSBrowse



А курсор активный серым цветом можно сразу сделать в этом методе ?
Было бы удобней так.

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




Пост N: 1573
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 14.07.20 17:34. Заголовок: Andrey пишет: А кур..


Andrey пишет:

 цитата:
А курсор активный серым цветом можно сразу сделать в этом методе ?
Было бы удобней так.

курсор разный бывает. Я использую только рамочный, чтоб не терять подсветку ячеек ( обязательные поля и пр). И переключение с рамки на серый лайтбар будет не эстетично 😎

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




Пост N: 3281
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.07.20 18:04. Заголовок: Haz пишет Я использу..


Haz пишет
 цитата:
Я использую только рамочный, чтоб не терять подсветку ячеек ( обязательные поля и пр). И переключение с рамки на серый лайтбар будет не эстетично


Не только не эстетично, но главное теряется фокус, с какой строкой тсб идет манипуляция (заблокировав тсб), что визуально важно. А сменить цвет для выбранной строки, поставь нужный всем колонкам (старый ты знаешь или сохрани), сделай
:DrawSelect()
:Enabled(.F.)
потом
:Enabled(.T.)
Старый цвет restore
:DrawSelect()

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




Пост N: 1574
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 14.07.20 22:00. Заголовок: SergKis пишет: Не т..


SergKis пишет:

 цитата:
Не только не эстетично,

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

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




Пост N: 3282
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.07.20 22:21. Заголовок: Haz пишет я о том же..


Haz пишет
 цитата:
я о том же ... Мне пока проще вместо :enabled()


Полностью с тобой согласен, а :Enabled() совсем не использую, окно модал, не закрывая тсб с вертушкой\градусником достаточно в районе StatusBar. Часто надо что бы тсб "шевелилось" в это время, а :Enabled() отрубает некоторые методы.

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




Пост N: 1575
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.07.20 14:36. Заголовок: SergKis пишет: а :E..


SergKis пишет:

 цитата:
а :Enabled() совсем не использую


Сергей, подумал есть вариант быстро затенять весь бровс , не заботясь о сохранении изначального цвета.
Суть в следующем:
Весь объект рисуется через TSDrawCell(), цвета передаются параметрами. Можно задать флаг lGreyScale в переменных бровса , а цвета переопределять в зависимости от флага.
к примеру nClrBack завернуть как if( ::lGrayScale, RgbToGray(nClrBack), nClrBack ) и так везде.

Сама RgbToGray() - простое преобразование цвета в градации серого
 
Static function RgbToGray(RGBColor)
local nGray
nGray := Round((0.30*GetRgb(RGBColor)[1])+(0.59*GetRgb(RGBColor)[2])+(0.11*GetRgb(RGBColor)[3]),0)
Return RGB(nGray, nGray, nGray)

Static Function GetRGB(nColor)
LOCAL nR := 0
LOCAL nG := 0
LOCAL nB := 0
LOCAL cColor := NTOC(nColor, 16)
nR := CTON(SUBSTR( cColor, 5, 2 ), 16)
nG := CTON(SUBSTR( cColor, 3, 2 ), 16)
nB := CTON(SUBSTR( cColor, 1, 2 ), 16)
RETURN {nR, nG, nB }




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

ЗЗЫ проверил - криво работает преобразование в грей, нужен алгоритм другой

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




Пост N: 1576
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.07.20 15:13. Заголовок: Haz пишет: ЗЗЫ пров..


Haz пишет:

 цитата:
ЗЗЫ проверил - криво работает преобразование в грей, нужен алгоритм другой



Все работает , цвета в серый преобразовываются поменял в базовом примере ColorsTable функцию GetColumnBackColor() на это
 
Function GetColumnBackColor( n )
Local cColor
Local nGray

cColor := aColors [ n ] [ 2 ]
nGray := Round(0.3*Val( Token( cColor, " ", 1 ) ) + 0.59*Val( Token( cColor, " ", 2 ) ) + 0.11*Val( Token( cColor, " ", 3 ) ),0 )

Return { nGray, nGray, nGray }


и получил все серенькое , значит идея жива

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




Пост N: 3283
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.07.20 15:45. Заголовок: Haz пишет есть вариа..


Haz пишет
 цитата:
есть вариант быстро затенять весь бровс , не заботясь о сохранении изначального цвета.


Может не врубаюсь, вариантов покрасить тсб много, от ф-й в блоках кода на колонку, "Enabled(.T.\.F.) и то что предлагаешь, а еще можно переменные иметь (вдруг не серый свет надо, а зеленый и .т.д.) и от них плясать. В чем смысл и цель ? То что есть, хватает, а усложнять ... и так приходится, то в кусок кода лезть, то в сам h_tbrowse.prg, что бы вспомнить детали. Есть еще oCol:Cargo, доп. к oBrw:Cargo можно для каждой колонки определить все что хочешь и отрабатывать. На мой взгляд, то что есть достаточно, а красить в серый, зеленый, синий, ... это уже как кому хочется, варианты есть.

 цитата:
Все работает , цвета в серый преобразовываются поменял в базовом примере ColorsTable функцию GetColumnBackColor() на это


Что то не нашел такую ф-ю в примерах. О каком примере речь ?

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




Пост N: 1577
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.07.20 16:27. Заголовок: SergKis пишет: На ..


SergKis пишет:

 цитата:
На мой взгляд, то что есть достаточно, а красить в серый, зеленый, синий, ... это уже как кому хочется, варианты есть.


Просто интересно стало можно ли цветной бровс показать в градациях серого без переопределения всех цветов. Попробовал функцию конвертации цвета в серый- работает.
Тренировался тут MiniGUI\SAMPLES\BASIC\ColorsTable\demo.prg
 цитата:
GetColumnBackColor()

живет там.

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




Пост N: 3284
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.07.20 16:48. Заголовок: Haz пишет Просто инт..


Haz пишет
 цитата:
Просто интересно стало можно ли цветной бровс показать в градациях серого без переопределения всех цветов.


Большой разницы не вижу, делать как в :Enabled() с сохранением и восстановлением или через переменную предложенную, т.к. это надо проделывать в :DrawSuper(), :DrawHeader() (внутри нее :lDarawSpcHd, :lDrawFooter), :DrawLine(), DrawSelect() и учесть в последнем отрицательные цвета
 цитата:

Просто интересно стало можно ли цветной бровс показать в градациях серого без переопределения всех цветов. Попробовал функцию конвертации цвета в серый- работает.


Ф-я работает А пример искал в Advanced

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




Пост N: 6756
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.07.20 21:39. Заголовок: Haz пишет: Сергей, ..


Haz пишет:

 цитата:
Сергей, подумал есть вариант быстро затенять весь бровс , не заботясь о сохранении изначального цвета.



Я уже давно использую свою функцию ОТДЕЛЬНУЮ для этого. Выкладывал уже исходник.
Эта функция интересна ещё тем, что блокирует автоматом все дальнейшие нажатия на форме.
И картинки на форме четко затеняет.
Т.е. из Си вызывается окно с размерами формы и затеняет своё окно заданным цветом.
После того как нужно убрать затенение вызываем другую функцию. Параметр - хендл затеняющего окна.
Вот примерно так:
      :aColumns[nI]:bPrevEdit := {|| Darken2Open(hWin)        ,;   // Затенение на форме 
myColorEditTsb(oBrw) ,;
Darken2Close(hWin) ,; // Убрать затенение на форме
oBrw:Setfocus(), FALSE }


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




Пост N: 1578
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 18.07.20 22:43. Заголовок: Andrey пишет: давно..


Andrey пишет:

 цитата:
давно использую свою функцию ОТДЕЛЬНУЮ для этого.

Речь не об этом. Андрей , то что ты предлагаешь, это поверх окна бровса открывать полупрозрачное в размер, как делают скринлокеры. Несколько лет назад с Димой попробовали это делать. Я делал тень окна, открывал полупрозрачное под окном и со смещением. Минусов больше чем плюсов. Во первых не на всех операционках корректно работало ( на каком-то вин сервере не сработала). Во вторых , по кнопкам альт-тав и пр идёт переключение .
Или твой пример не об этом этом?

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




Пост N: 3288
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.07.20 15:15. Заголовок: Andrey пишет Выклады..


Andrey пишет
 цитата:
Выкладывал уже исходник.


Может выложишь, т.к. в примерах hmg ее нет. Будет понятнее.

Haz пишет
 цитата:
Просто интересно стало можно ли цветной бровс показать в градациях серого без переопределения всех цветов.


Если вынести вызов TSDrawCell() в метод :TSDrawCell(), заменив локальные переменные на переменные объекта TSBcell и вызывать метод после заполнения объекта oColumn:oCell во всех местах, заменив вызов ф-ии, то можно проделывать разное в блоке кода :bTSDrawCell, примерно так new method
 
METHOD TSDrawCell( oColumn, nColumn )
LOCAL lDraw := .F.
LOCAL oCell := oColumn:oCell

IF ISBLOCK( ::bTSDrawCell )
IF ! empty( EVal( ::bTSDrawCell, nColumn, oColumn, Self ) )
RETURN lDraw
ENDIF
ENDIF
lDraw := TSDrawCell( oCell:hWnd, ; // 1
oCell:hDC, ; // 2
oCell:nRowPos, ; // 3
oCell:nStartCol, ; // 4
...
RETURN lDraw

Вопрос надо ли ?

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




Пост N: 6757
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.07.20 16:41. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может выложишь, т.к. в примерах hmg ее нет. Будет понятнее.


Вот - https://cloud.mail.ru/public/2PS7/4oMjm4KTR

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