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


Пост N: 976
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 25.08.16 16:39. Заголовок: Документация по HwGUI


Наконец-то созрел для того, чтобы обновить документацию по HwGUI и решил начать с русской версии, которой до сих пор не было.
Вот первая часть: http://www.kresin.ru/hwgdoc.html.
Обращаю ваше внимание, что там, как и на многих других страницах сайта есть message board - можно писать комментарии, ругать за недостатки, сообщать о том, чего недостает, и т.п.

Спасибо: 1 
ПрофильЦитата Ответить
Ответов - 94 , стр: 1 2 3 4 5 All [только новые]


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




Пост N: 1180
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.08.16 14:40. Заголовок: PS строки с текстом ..


PS
строки с текстом Pavisam - это footer, строки самые верхние (2-е) это Super header

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


Пост N: 986
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 29.08.16 09:50. Заголовок: SergKis пишет: Вот ..


SergKis пишет:

 цитата:
Вот и получаются "пляски с бубном" во WHEN (востановить), VALID (сохранить), на GOT FOCUS окна (массив сохранить) и т.д. и т.п.,
а просится добавить в HEDIT
DATA tColorinFocus
DTA bColorinFocus


Вы вместо двух старых известных кодоблоков (WHEN и VALID) предлагаете сделать для этой цели два новых: tColorinFocus, bColorinFocus. Не вижу упрощения.
А что за массив надо сохранять в GOT FOCUS ?

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


Пост N: 987
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 29.08.16 10:05. Заголовок: SergKis пишет: Прим..


SergKis пишет:

 цитата:
Пример http://my-files.ru/4tcwwc (DbcHw.txt переименовать в DbcHw.exe


Увы, не успел скачать - файл удален как "вредоносный"

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


Пост N: 988
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 29.08.16 10:09. Заголовок: SergKis пишет: 1. м..


SergKis пишет:

 цитата:
1. многострочный заголовок есть
2. многострочный подвал есть


:) На днях задумывался, не убрать ли это дело, нужно ли оно кому-нибудь, знает ли кто о нем... Сам ни разу не пользовался.

[quote]3. многострочной строки нет (однострочная)
4. Super header отсутствует [.quote]
Отсутствует. Если бы кто-нибудь попросил, подумал бы на эту тему.

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


Пост N: 989
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 29.08.16 10:55. Заголовок: SergKis пишет: 1. Н..


SergKis пишет:

 цитата:
1. На диалоговом окне работает VK_TAB перемещая фокус, на чилд окне фокус на get надо мышой установить


Можно сразу после oChildWnd:Activate() поставить oGet1:SetFocus().


 цитата:
VK_TAB работает только на get на кнопки не прерходит


Да, действительно. Странно. Похоже на какую-то фишку в winapi, там таких неожиданных эффектов немало. Надо посмотреть.


 цитата:
2. "Танец с бубнами".
- запускаем пункт меню Create DlgGet window. Имеем один цвет первого get в фокусе
- запускаем пункт меню Get using SetcolorinFocus. Имеем то что и должно по установке
- запускаем пункт меню Create DlgGet window снова. Имеем цвет первого get в фокусе из пред. пункта


А... Ну это, сами понимаете, следствие использования hwg_SetColorinFocus(), который устанавливает цвета глобально для всех GET'ов. Разумно, наверное, делать это на 3-х уровнях: глобально, для окна (диалога) и для конкретного GET-элемента. Сам я никогда этим не пользовался (и не я это реализовывал), поэтому и не сразу даже понял, о чем речь. Да, тут есть о чем подумать.

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




Пост N: 1181
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.08.16 11:36. Заголовок: alkresin пишет Вы вм..


alkresin пишет
 цитата:
Вы вместо двух старых известных кодоблоков (WHEN и VALID) предлагаете сделать для этой цели два новых: tColorinFocus, bColorinFocus. Не вижу упрощения.


Дело не в упрощении, а в "все свое ношу с собой", т.е. имеем объект Get и все относящееся к нему должно находится в нем, а цвет в фокусе - это свойсво объекта, так же как и цвет не в фокусе, можно подумать о цветах в READONLY, но для начала хорошо бы отвязаться от static переменных (два-три одновременно отображаемых окна, с разными стилями Getов - это ...)
А если в этих свойствах иметь блоки кода (не только числа\масссив rgb) - решает все проблеммы с цветами

 цитата:
1. сумма < 0 один цвет
2. сумма > 0 < 1000 другой
3. сумма от 1000-5000 еще цвет
5. сумма > 5000 еще


в одном Get объекте


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




Пост N: 1182
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.08.16 12:05. Заголовок: alkresin пишет Отсут..


alkresin пишет
 цитата:
Отсутствует. Если бы кто-нибудь попросил, подумал бы на эту тему


То что сейчас есть в HEdit, к сожалению, годится в основном для справочников и очень ограниченного списка документов.
Я, конечно, говорю только о себе, возможно у др. не так. В clipper задачах, которые надо переводить в Gui такая потребность:
- многострочный super header
- многострочный header
- многосточные (было мах 3) строки
- многострочный footer
замечательно иметь сразу и многострочный footer (по аналогии с super header), но это уже хотелка, можно реализовывать через label или иными способами
Та картинка, данная выше - это раб.место по приему xml заказов и это средняя потребность от browse.
Реализована на cpp+Htmlayout монитор отображения и в hide режиме hb 2.0 работа с базой.
Хотелось бы уйти на чистый hb с уникодом (в hwg это есть и три языка LV866 встроилось на ура и большой респект за проделанную работу)

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




Пост N: 1183
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.08.16 12:31. Заголовок: alkresin пишет Увы, ..


alkresin пишет
 цитата:
Увы, не успел скачать - файл удален как "вредоносный"


Это у была утилита dbc с LV866 и база с лат., рус. языками в которой 201 поле первое 10 байт, второе 40, остальные поля 2-3 байта (на первом экране). Эффект мерцания проявляется на selected строке при движении курсора по узким плям.
Причина, вероятно в прорисовке цветов всей строки, а не только ячеек, учавствующих в смене цветов фокус\не фокус, но в целом это мелочь.

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


Пост N: 990
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 29.08.16 16:21. Заголовок: Запостил сейчас изме..


Запостил сейчас изменения. касающиеся ColorInFocus, сделал 3 уровня:
1) глобальный: все работает как раньше, для всех GET, для всех окон;
2) уровень окна: можно определить эти цвета для конкретного окна той же функцией hwg_SetColorinFocus(), только в качестве первого параметра передается объект окна;
3) уровень отдельного GET: для него добавлена новая переменная :bColorBlock. Этот кодоблок вызывается при получении фокуса и ему передается в качестве параметра объект соответствующего GET. Кодоблок должен, по идее, использовать :setColor() для установки нужных цветов.

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




Пост N: 1184
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.08.16 18:37. Заголовок: alkresin пишет Запос..


alkresin пишет
 цитата:
Запостил сейчас изменения. касающиеся ColorInFocus


Это где ?
С вашего сайта и HwGUI на Sourceforge одно и то же
/*
* $Id: Changelog 2526 2016-02-01 13:13:00Z alkresin $
*/


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


Пост N: 991
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 29.08.16 20:16. Заголовок: На SVN, конечно. Нов..


На SVN, конечно. Новый релиз я еще не формировал.
Впрочем, можно скачать так называемый "снапшот": https://sourceforge.net/p/hwgui/code/HEAD/tree/ и там нажать на "Download Snapshot".

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




Пост N: 1185
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.08.16 22:28. Заголовок: alkresin Спасибо за..


alkresin
Спасибо за ссылку.
Нашел свои опыты с hbrowse, где видно, как мерцает переотображение selected строки при горизонтальном перемещении
http://my-files.ru/h192y7

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




Пост N: 1186
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.08.16 06:10. Заголовок: alkresin пишет Запос..


alkresin пишет
 цитата:
Запостил сейчас изменения. касающиеся ColorInFocus


SerKis пишет
 цитата:

1. сумма < 0 один цвет
2. сумма > 0 < 1000 другой
3. сумма от 1000-5000 еще цвет
5. сумма > 5000 еще
в одном Get объекте


Может не все понял.
1. При переходе фокуса с Get на др. Get блок кода должен срабатывать и поставив в нем :SetColor... цвет в фокусе должен меняться. А будет ли срабатывать блок кода в ситуации
oGet:Value( -100 ); oGet:Refresh()
oGet:Value( 100 ); oGet:Refresh()
oGet:Value( 1001 ); oGet:Refresh()
...
2. Может облегчить жизнь и не внутри блока кода делать :SetColor, а пусть блок кода возвращает цвет и внутри HEdit делать :SetColor...
3. Не добавлять DATA bColorBlock, а сделать как то так:
Local bC := ::bColor
Local tC := ::tColor
If hb_IsBlock(bColorinFocus)
bC := Eval(bColorinFocus, Self)
EndIf
If hb_IsBlock(tColorinFocus)
tC := Eval(tColorinFocus, Self)
EndIf
::SetColor(tC, bC)


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


Пост N: 992
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 30.08.16 09:24. Заголовок: SergKis пишет: буде..


SergKis пишет:

 цитата:
будет ли срабатывать блок кода в ситуации
oGet:Value( -100 ); oGet:Refresh()


Нет. Он срабатывает только при получении фокуса. И, вообще-то, мне всегда казалось, что значение GET элемента, когда он находится в фокусе ввода, меняет человек, вводящий информацию, а не программа. Но на крайний случай можно написать что-то вроде:
Function RefreshColor( oGet ) 
IF hwg_Isptreq( oGet:handle, hwg_Getfocus() )
Eval( oGet:bColorBlock, oGet ) )
ENDIF
Return oGet:Refresh()

и вызывать эту функцию вместо oGet:Refresh()


 цитата:
2. Может облегчить жизнь и не внутри блока кода делать :SetColor, а пусть блок кода возвращает цвет и внутри HEdit делать :SetColor.
3. ...


Не люблю добавлять переменные в класс на всякий случай жизни - тогда он в конце концов вырастет в монстра.. Один :bColorBlock, IMO, лучше чем два, для текста и фона отдельно. И я не понимаю, почему написать 2 кодоблока, каждый с Return nColor, легче, чем один с Return o:SetColor( tColor,bColor ).
Я исповедую минималистический подход. На мой взгляд, класс должен предоставлять минимальный, но достаточный инструментарий для разработчика, а уж его дело использовать этот инструментарий в соответствии со своими вкусами и потребностями. Ну а баланс между минимальным и достаточным - дело тонкое, конечно, и иногда субъективное ).

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




Пост N: 1187
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.08.16 12:16. Заголовок: SerKis пишет мне вс..


SerKis пишет
 цитата:
мне всегда казалось, что значение GET элемента, когда он находится в фокусе ввода, меняет человек, вводящий информацию, а не программа


Вот одна из простых карточек http://shot.qip.ru/00QSeG-111709ntXja/
вправа от списка л.счетов Getы в Readonly, при перемещении они заполняются данными из базы, по клавише\кнопке\двойной клик на тексте у Get или сам Get, если разрешено, переводим в режим редактирования от первого Get или от того, по которому кликнули. Еще с s87 такие карточки были.

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


Пост N: 993
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 30.08.16 15:33. Заголовок: Что-то не отображает..


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

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




Пост N: 5988
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.08.16 15:42. Заголовок: alkresin пишет: Чт..


alkresin пишет:

 цитата:

Что-то не отображается у меня эта картинка, ну да ладно


А так ?


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


Пост N: 994
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 30.08.16 16:38. Заголовок: Это она и есть ? Я п..


Это она и есть ? Я подумал, что какое-то сопутствующее бизнес-предложение от qip.ru. Но где тут текстовый GET, все равно не вижу.

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




Пост N: 1188
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.08.16 17:57. Заголовок: alkresin пишет: Но г..


alkresin пишет:
 цитата:
Но где тут текстовый GET, все равно не вижу


Все светлозеленые клеточки это GetBox MiniGui (Get аналоги hwg) в состоянии readonly

 цитата:
В любом случае простенькая ф-я типа приведенной выше RefreshColor() решит этот вопрос, а железно прописывать подобную функциональность в HEdit(), по-моему, будет неправильно.


Не соглашусь, имея объект, городить доп. функционал можно, но по мне нонсенс. А менять функционал сильно не недо
 
добавляем в класс
DATA tColorinFocus
DATA bColorinFocus

METHOD SetColorReal() CLASS HEdit
LOCAL tC := ::tColor
LOCAL bC := ::bColor
LOCAL xC

If lColorinFocus
tC := tColorinFocus
bC := bColorinFocus
Else
If ::tColorinFocus != NIL
tC := ::tColorinFocus
EndIf
If ::bColorinFocus != NIL
bC := ::bColorinFocus
EndIf
EndIf
If hb_IsBlock(tC)
xC := Eval(tC, Self)
If hb_IsNumeric(xC)
tC := xC
EndIf
EndIf
If hb_IsBlock(bC)
xC := Eval(bC, Self)
If hb_IsNumeric(xC)
bC := xC
EndIf
EndIf
::Setcolor( tC, bC, .T. )

RETURN

в Refresh() метод добавляем ::SetColorReal() и не надо больше никаких

DATA aColorOld INIT { 0,0 }
DATA bColorBlock

IF msg == WM_SETFOCUS
oParent := hwg_getParentForm( Self )
IF lColorinFocus .OR. oParent:tColorinFocus >= 0 .OR. oParent:bColorinFocus >= 0 .OR. ::bColorBlock != Nil
::aColorOld[1] := ::tcolor
::aColorOld[2] := ::bcolor
IF ::bColorBlock != Nil
Eval( ::bColorBlock, Self )
ELSE
::Setcolor( Iif( oParent:tColorinFocus >= 0, oParent:tColorinFocus, tColorinFocus ), ;
Iif( oParent:bColorinFocus >= 0, oParent:bColorinFocus, bColorinFocus ), .T. )
ENDIF
ENDIF
ELSEIF msg == WM_KILLFOCUS
oParent := hwg_getParentForm( Self )
IF lColorinFocus .OR. oParent:tColorinFocus >= 0 .OR. oParent:bColorinFocus >= 0 .OR. ::bColorBlock != Nil
::tcolor := ::aColorOld[1]
::bcolor := ::aColorOld[2]
::Setcolor( ::tcolor, ::bColor, .T. )
ENDIF
ENDIF

имеем два простых блока управления цветом от oGet:Value()

на скорую руку делал, может пропустил\не учел что, тогда сори

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


Пост N: 995
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 31.08.16 10:05. Заголовок: SergKis пишет: Все ..


SergKis пишет:

 цитата:
Все светлозеленые клеточки это GetBox MiniGui (Get аналоги hwg) в состоянии readonly


Странно. Всматривался во все глаза несколько раз, но светлозеленых клеточек не увидел.


 цитата:
и не надо больше никаких
DATA aColorOld INIT { 0,0 }


Увы, надо. Метод :SetColor() устанавливает новые значения :tColor, :bColor - а, значит, нужен :aColorOld и нужна обработка WM_KILLFOCUS. Нужна также и обработка WM_SETFOCUS, так как именно в это время надо поместить в :aColorOld старые значения, а :Refresh() может быть вызван в любое время.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 94 , стр: 1 2 3 4 5 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 91
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет