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


gfilatov2002
moderator




Пост N: 1309
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.06.18 17:46. Заголовок: SergKis пишет: при ..


SergKis пишет:

 цитата:
при потере фокуса по кнопке или клику по main окну, modal должна убраться.


Работает немного по-другому:
модальное окно закрывается при вызове после него любого дочернего окна.
Если свойство FlashExit у модального окна не определено, то оно не даст переключиться на новое окно и будет "мигать"

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




Пост N: 1887
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.06.18 18:09. Заголовок: gfilatov2002 пишет м..


gfilatov2002 пишет
 цитата:
модальное окно закрывается при вызове после него любого дочернего окна


Принимает только след. модальное wModal2 (wChild не проходит) и wModal не уходит, остается.

С FlashExit, думалось, будет работать, как костыль на modal -> child, т.е. modal -> modlal2,
при потере фокуса modal2 уходит, как child с ON LOSTFOCUS ThisWindow.Release.
Исп. это при замене COMBOBOX на окно с TsBROWSE

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




Пост N: 1888
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.06.18 18:11. Заголовок: PS Не ту кнопку нажа..


PS
Не ту кнопку нажал. Текст примера Скрытый текст


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




Пост N: 1310
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.06.18 20:04. Заголовок: SergKis пишет: Прин..


SergKis пишет:

 цитата:
Принимает только след. модальное wModal2 (wChild не проходит)


У меня работает с wChild такой пример (немного переработанный):

 цитата:
 #include "Minigui.ch"   

*************
function MAIN
*************

DEFINE WINDOW wMain AT 0 , 0 WIDTH 400 HEIGHT 300 TITLE "Main" MAIN

DEFINE BUTTONEX ButtonEX_1
ROW 225
COL 79
WIDTH 100
HEIGHT 30
CAPTION "Modal"
ICON NIL
ACTION MODAL()
END BUTTONEX

DEFINE BUTTONEX ButtonEX_2
ROW 225
COL 219
WIDTH 100
HEIGHT 30
CAPTION "&Quit"
ICON NIL
ACTION ThisWindow.release
END BUTTONEX

END window

wMain.center
wMain.activate

return NIL

*************************
static function MODAL()
*************************
DEFINE WINDOW wModal AT 0, 0 WIDTH 200 HEIGHT 200 TITLE "Modal" MODAL

_HMG_aFormFocused [ This.Index ] := .T.

DEFINE BUTTONEX ButtonEX_1
ROW 20
COL 40
WIDTH 100
HEIGHT 30
// CAPTION "Modal 2"
CAPTION "Child"
ICON NIL
// ACTION MODAL2()
ACTION CHILD()
END BUTTONEX

END window

wModal.center
wModal.activate

return NIL

*************************
static function MODAL2()
*************************
DEFINE WINDOW wModal2 AT 0 , 0 WIDTH 100 HEIGHT 100 TITLE "Modal 2" MODAL

END window

wModal2.center
wModal2.activate

return NIL

*************************
static function CHILD()
*************************

if IsWindowDefined(wChild)
doMethod("wChild", "HIDE")
doMethod("wChild", "SHOW")
doMethod("wChild", "SETFOCUS")
return NIL
endif

DEFINE WINDOW wChild AT 0 , 0 WIDTH 100 HEIGHT 100 TITLE "Child" CHILD ;
NOMAXIMIZE NOMINIMIZE

define timer t_1 interval 50 action doMethod("wChild", "SETFOCUS") once

END window

wChild.center
activate window wChild NOWAIT

DO MESSAGELOOP


return NIL



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




Пост N: 1889
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.06.18 20:54. Заголовок: gfilatov2002 пишет р..


gfilatov2002 пишет
 цитата:
работает с wChild такой пример


Работает

Вот тот же пример с костылем (child окно на модал и на main) Скрытый текст


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




Пост N: 1890
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.06.18 21:09. Заголовок: PS в CHILD2 добавить..


PS
в CHILD2 добавить (обработка потери фокуса)
 
DEFINE WINDOW wChild AT 0 , 0 WIDTH 100 HEIGHT 100 TITLE "Child" CHILD ;
NOMAXIMIZE NOMINIMIZE ;
ON LOSTFOCUS do_Obj(This.Handle, {|ow| ow:Release() })



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




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


SergKis пишет:

 цитата:
тот же пример с костылем


Так каков вердикт?
Нужен этот новый clause FlashExit или достаточно костыля

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




Пост N: 1891
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.06.18 21:52. Заголовок: gfilatov2002 пишет Н..


gfilatov2002 пишет
 цитата:
Нужен этот новый clause FlashExit или достаточно костыля


Не понимаю, надо осознать . Народ подтянуть.
Если активировать в примере строку
 
DEFINE WINDOW wModal AT 0, 0 WIDTH 200 HEIGHT 200 TITLE "Modal" MODAL

// _HMG_aFormFocused [ This.Index ] := .T.


модальное окно уберется, с др. стороны есть др. способы убрать модал. Я

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




Пост N: 5919
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.06.18 22:13. Заголовок: SergKis пишет: Не п..


SergKis пишет:

 цитата:
Не понимаю, надо осознать . Народ подтянуть.


Читаю как про инопланетян...
Для чего это хоть делаете ? На пальцах объясните, по простому, по русски...

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




Пост N: 1892
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.06.18 22:33. Заголовок: Andrey Работаем на ..


Andrey
Работаем на модальном окне, заменяем combobox модальным окном с тсб списком выбора (без заголовков, с Х).
Все работает, кроме клика за пределами окна-списка (только Х завершает).
Child окно из под модального - ку-ку. На нем можно делать lostfocus.
Вот вокруг запуска окна child из под модального и сыр-бор.
С FlashExit child запускается, модал убирается ВСЕГДА.
С костылем, child запускается, модал остается (сам убирай). Клик за пределами child и ON LOSTFOCUS окно child убирает.


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




Пост N: 1893
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.06.18 22:58. Заголовок: PS в CHILD2 добавит..


PS
в CHILD2 добавить (блокировку X окна wModal), иначе валится при его нажатии и наличии окна child
 
*************************
static function CHILD2( cFocusName )
*************************
LOCAL oParent := ThisWindow.Object
LOCAL lM
LOCAL hM

oParent:Action := .F.

If oParent:Type == 'M'
...
Endif

oParent:Action := .T.

oParent:SetFocus(cFocusName)

return NIL
и в функцию добавить
*************************
static function MODAL()
*************************
DEFINE WINDOW wModal AT 0, 0 WIDTH 200 HEIGHT 200 TITLE "Modal" MODAL ;
ON INTERACTIVECLOSE (This.Object):Action

...



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




Пост N: 1312
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.07.18 10:20. Заголовок: Выпущена новая сборк..


Выпущена новая сборка 18.06 для BCC 5.51 для компиляторов Harbour и xHarbour

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

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

Рекомендуется к использованию

Также имеются в наличии готовые сборки для:

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

- MinGW 8.1.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.

Благодарю за Ваше внимание и поддержку

P.S. Доступно зеркало домашней страницы по адресу

http://hmgextended.org

P.S. 2 Выпуск новых сборок приостановлен на неопределенное время
по материальным причинам

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




Пост N: 1268
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 04.07.18 13:53. Заголовок: SergKis пишет: Рабо..


SergKis пишет:

 цитата:
Работаем на модальном окне, заменяем combobox модальным окном с тсб списком выбора


Сергей, я свой вариант на классе допиливаю потихоньку . У меня с заголовками, но без [X] все работает.
В своих проектах заменяю сомбик везде. Для вызова используется oCol:PrevEdit() где обрабатывается примерно такой код
 
CASE cCol == "ID_CURR"
SQL("T1", "SELECT * FROM CNT_CUR") // Это из под ADS , в стандарте тупо меняется на USE cBase ALIAS 'T1'
T1->(OrdSetFocus("NAME"))

xLbx := LBX():New() // Создать объект
xLbx:cAlias := "T1" // Какой алиас в нем показать
xLbx:cRetField := "ID" // какое поле вернуть
xLbx:aHeaders := {'A', 'B'} // как назвать заголовки
xLbx:aWidth := {35, 100} // ширина колонок
xLbx:aAlign := {DT_CENTER, DT_LEFT} // как выровнять
xLbx:aField := {'NAME', 'FULLNAME'} // какие поля показать
xLbx:nHeightCell := 20 // соответствующие размеры
xLbx:nHeightHead := 0
xLbx:nHeightFoot := 0
xLbx:bPostBlock := {|| NIL } // блок который выполнить после выбора
xLbx:bSearch := {|| NIL } // блок поиска в таблице объекта

xLbx:ListBox( oBrw, xVal ) // непосредственно показ

T1->(DBCloseArea()) // убирается за собой
lRet := FALSE // не пускаем в режим редактирования



click here

Предусмотрены футинги и их выравнивание , но пока не делал

Если интересно , могу сюда сбросить скомпилированный пример, как это выглядит и исходники разумеется.
PS. у дураков мысли сходятся , у меня точно такие же переменные для отлова модала lM и hM

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




Пост N: 1905
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.07.18 16:20. Заголовок: Haz пишет Если интер..


Haz пишет
 цитата:
Если интересно , могу сюда сбросить скомпилированный пример, как это выглядит и исходники разумеется.


Конечно интересно. В итоге может стать заменителем родного ComboBox.

 цитата:
у дураков мысли сходятся , у меня точно такие же переменные для отлова модала lM и hM


Мне больше нравиться "краткость - сестра таланта" (c)
Свои переменные с именем > 4 символов напрягают. "Лень двигатель прогресса" (c)
Так что совпадения обоснованные

 цитата:
Для вызова используется oCol:PrevEdit() где обрабатывается примерно такой код


Аналогично поступаю, только через сообщение, тогда отрываемся от блока :bPrevEdit, имеем среду окна (можно контрола) This,
По мне более свободен в действиях, т.к. тсб "свободна" для приема др. сообщений.

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




Пост N: 1269
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 04.07.18 16:46. Заголовок: SergKis пишет: Коне..


SergKis пишет:

 цитата:
Конечно интересно


тут спрятал

PS. При сборке половина инклюдов в исходнике класса не нужна, просто дернул как есть из проекта

в поиске косячек с прорисовкой, только заметил. Сам использую ADS там другая логика. Но как предварительный пример как сделать поиск по справочнику сойдет, тем более что поиск скорее будет у каждого свой.
Для исправления достаточно в процедуре поиска добавить
  
oBrw:Reset()
oBrw:GoTop()
oBrw:Refresh(TRUE)


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


Пост N: 796
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 04.07.18 20:54. Заголовок: Вызов справочников в..


Вызов справочников ввиде TsBrows давно применяю , как основной способ. Combox так же имеет право на существование, смотря по обстоятельствам.
Окно модальное немодальное есть некоторые проблемы. Мысль, изложенная выше,закрывать окно справочника при потери фокуса - можно попробовать, но лучше, чтобы
окно могло вести как модальное
(при установке соответствующего параметра).
Описание справочника делаю в текстовом файле, из которого считываются параметры создания окна.
В функционале вызов справочника из формы предельно лаконичный

 цитата:

..
if ControlName == 'BtnTxt_IM' .or. ControlName == 'BtnTxt_IM_O'
Select IM
if !empty(sValue)
Seek Upper(sValue)
if Found()
nR:=Recno()
endif
endif
if CreaTBrows('IM.UKS',nR)
EditLudi.&(ControlName).Value:=IM->IM
endif

...


Из Tbrows
через :bPrevEdit


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




Пост N: 1920
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.07.18 20:23. Заголовок: gfilatov2002 Неболь..


gfilatov2002
Небольшая правка
 
METHOD KeyDown( nKey, nFlags ) CLASS TSBrowse
... line 6912
// uVal := Eval( ::aColumns[ nCol ]:bData )
uVal := ::bDataEval(::aColumns[ nCol ])

uVal := Eval( ::aColumns[ nCol ]:bPrevEdit, uVal, Self )
...


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




Пост N: 1313
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 07.07.18 21:01. Заголовок: SergKis пишет: Небо..


SergKis пишет:

 цитата:
Небольшая правка


Принято.
Благодарю за помощь

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




Пост N: 1921
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.07.18 13:30. Заголовок: gfilatov2002 Из это..


gfilatov2002
Из этой же темы
 
METHOD LDblClick( nRowPix, nColPix, nKeyFlags ) CLASS TSBrowse
... line 7469
::nColSpecHd := 0
// If ValType( Eval( ::aColumns[ nCol ]:bData ) ) == "L" .and. ;
If ValType( ::bDataEval( ::aColumns[ nCol ] ) ) == "L" .and. ;

::aColumns[ nCol ]:lCheckBox // virtual checkbox
::PostMsg( WM_CHAR, VK_SPACE, 0 )
ElseIf ::aColumns[ nCol ]:oEdit != Nil
...


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




Пост N: 1314
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.07.18 18:06. Заголовок: SergKis пишет: Из э..


SergKis пишет:

 цитата:
Из этой же темы




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