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




Пост N: 4905
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.06.15 10:51. Заголовок: Вопросы новичка [MiniGUI]


MAIN окно не получило фокус ввода при запуске , почему ?
Пример самодостаточный.

 
#include "minigui.ch"
REQUEST HB_CODEPAGE_RU1251, HB_CODEPAGE_RU866, HB_LANG_RUWIN
REQUEST HB_LANG_RUWIN
REQUEST HB_LANG_RU866


Func Main()



DEFINE WINDOW Form_0 AT 321 , 491 WIDTH 558 HEIGHT 175 TITLE "Почему окно не в фокусе при запуске ?" ;
MAIN NOSIZE NOSYSMENU TOPMOST ON INIT {|| MdiMain()}


DEFINE BUTTONex Button_1
ROW 32
COL 424
WIDTH 110
HEIGHT 28
CAPTION "Вход"
ACTION { || ret:=.t., DoMethod("Form_0","Hide") , DoMethod("Form_1","show") }
FONTBOLD .t.
END BUTTONex

DEFINE BUTTONex Button_2
ROW 71
COL 424
CAPTION "Отмена"
ACTION { || DoMethod("Form_0","Release") }
WIDTH 110
HEIGHT 28
FONTBOLD .t.
END BUTTONex


END WINDOW
Form_0.Activate
Form_0.Setfocus
return nil
*****************************
Func Mdimain()


DEFINE WINDOW Form_1 at 0,0 ;
WIDTH 200 HEIGHT 300 TITLE "MDI windows" ;
MDI ;
NOSHOW


END WINDOW

Form_1.Center
Form_1.Activate
Form_0.Release
return



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 201 , стр: 1 2 3 4 5 6 7 8 9 10 11 All [только новые]


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




Пост N: 4261
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.06.15 11:35. Заголовок: Dima пишет: Form_0...


Dima пишет:

 цитата:
Form_0.Release


А зачем ты это делаешь ?

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




Пост N: 4906
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.06.15 11:41. Заголовок: Andrey пишет: А зач..


Andrey пишет:

 цитата:
А зачем ты это делаешь ?


Случайно вкралось. Но вопроса это не решило.

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




Пост N: 4263
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.06.15 11:43. Заголовок: Dima пишет: NOSHOW ..


Dima пишет:

 цитата:
NOSHOW


Не знаю правильно ли это сделано. Если окно не показывать - то фокус на нём и не будет !
Т.е. это окно скрытое, без показа !

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




Пост N: 4264
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.06.15 12:00. Заголовок: Попробуй ON INIT {&#..


Попробуй ON INIT {|| MdiMain(), Form_0.Setfocus }

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


Пост N: 575
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.06.15 12:02. Заголовок: Dima пишет: MAIN ок..


Dima пишет:

 цитата:
MAIN окно не получило фокус ввода при запуске , почему



Потому что в майн окне есть он инит , при выполнении которого выполняется Form_1.Activate.
Activate работает так ( упрощенно ) - дает окну ФОКУС ( в нашем случае Form_1 ) и вызывает состояние ожидания пока окно не закроется

Для решения вопроса нужно просто закоментить две строки
//Form_1.Activate
//Form_0.Release

Теперь зачем в коде Form_0.Release было - для того что бы после закрытия окна Form_1 автоматом закрывалось и майн окно . Теперь, когда две строки закомментили
фокус у майн будет , но после закрытия Form_1 задача не завершится и будет висеть в памяти ( окно то не видно , а в процессах есть ). Для решения этой проблемы в описании Form_1 нужно добавить ON INTERACTIVECLOSE {|| Domethod("Form_0","Release"), .T.}



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


Пост N: 576
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.06.15 12:05. Заголовок: Andrey пишет: Попро..


Andrey пишет:

 цитата:
Попробуй ON INIT {|| MdiMain(), Form_0.Setfocus }


не поможет

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




Пост N: 4907
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.06.15 13:12. Заголовок: Haz Да заработало ..


Haz
Да заработало

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




Пост N: 4912
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.06.15 21:41. Заголовок: Есть MAIN MENU , хоч..


Есть MAIN MENU , хочу в ниспадающее меню (в RUNTIME) добавлять и удалять пункты меню.
Пробовал _InsertMenuItem но оно добавляет не туда куда надо.
Хотел при открытии окон , "корректировать" эту менюшку ....то есть когда много
окошек открыто можно было тупо зайти в главное меню и выбрать нужное окошко
с переходом фокуса ввода на него. Окна открываются из MDI окна , окно не MAIN ,
окошки открываю MDICHILD.
Пример нужен или я понятно выразился ? ))

PS
MRU меню не предлагать так как создает MRU.INI там где прога живет.
А прога по идее жить будет на серваке , в папке только для чтения.


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




Пост N: 761
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.06.15 22:56. Заголовок: Dima пишет: MRU мен..


Dima пишет:

 цитата:
MRU меню не предлагать так как создает MRU.INI там где прога живет


Просто к сведению.
Команда MRU имеет дополнительный класс FILENAME <имя файла> для задания имени и пути для ини-файла, который можно создавать во временной папке, открытой для записи

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




Пост N: 4914
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.06.15 23:11. Заголовок: gfilatov2002 Понял ..


gfilatov2002
Понял , попробую. А если без MRU , как добавить корректно пункт в выпадающее меню.

PS
Сразу видно что ответил человек которому и пример не нужен и сразу понял мысль
Респект !

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



Пост N: 648
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.06.15 23:12. Заголовок: Dima Можно в status..


Dima
Можно в statusbar иметь icon, по клику делать окно (можно modal) со списком для выбора и перехода

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




Пост N: 4917
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 19.06.15 10:22. Заголовок: Меню с MRU заявлено ..


Меню с MRU заявлено так
 
.........
END POPUP

POPUP "Окна" NAME OPENWIND
MRU FILENAME System.TempFolder + "\temp.ini"

END POPUP

END POPUP

END MENU


В совершенно другом окне при его создании , добавляю
пунктик в MRU меню (Главного окна) так:
 
Func MyMditool(cforma,ctitle)
_InsertMenuItem ( "OPENWIND" , "Form_1" , ctitle , ;
{||DoMethod(mymenuhash[cforma],"Restore"),DoMethod(mymenuhash[cforma],"Setfocus")})
..........

И получаю следующий бред.
Картинка


Нужные пункты добавились и в MRU меню и в горизонтальное между
пунктом Настройки и Окна (о чем прогу я не просил собственно).
Кроме того добавленный мною Action срабатывает только в этих
не заявленных мною пунктах. Если те же пункты в MRU клацать
в пункте Окна то ни какой реакции.
По картинке (до кучи) хорошо видно что используется SET MENUSTYLE EXTENDED
и на добавленных в RunTime пунктах это свойство теряется.



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



Пост N: 649
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.06.15 10:57. Заголовок: Dima SergKis пишет:..


Dima
SergKis пишет:
 цитата:
Можно в statusbar иметь...


суть та же, а дизайн свой (отличный от mru). список можно делать горизонтально, вертикально, окно по краю или за пределами Mdi, по on change списка переключать mdichild окна сразу на показ ...

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




Пост N: 4918
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 19.06.15 10:59. Заголовок: SergKis В самплесах..


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

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



Пост N: 650
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.06.15 11:18. Заголовок: Dima в качестве спи..


Dima
в качестве списка может быть array TsBrowse, Grid (с картинками), примеры есть
при формировании окна modal надо отключить режим mdi по завершении работы окна включить снова
за базу можно взять и пример basic\msgmenu\*.*. Вот обрывки у меня из mdi надергал по быстрому:
Скрытый текст


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



Пост N: 651
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.06.15 11:44. Заголовок: может еще это: FUNCT..


может еще это:Скрытый текст


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




Пост N: 4919
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 19.06.15 13:13. Заголовок: SergKis Спасибо , б..


SergKis
Спасибо , буду разбираться !

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




Пост N: 4925
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.06.15 12:47. Заголовок: DEFINE CONTEXT MENU ..


DEFINE CONTEXT MENU OF FORM_1
его можно убить через RELEASE CONTEXT MENU OF Form_1
А как убить DEFINE CONTEXT MENU CONTROL StatusBar OF FORM_1
способ RELEASE CONTEXT MENU OF Form_1 не катит

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




Пост N: 4945
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.06.15 17:31. Заголовок: Есть MDI окно , в AC..


Есть MDI окно , в ACTION статусбара висит функция , которая создает MODAL окно и в котором живет GRID.
Это работает. Стоит вместо GRID сунуть туда TSBROWSE , при вызове функция падает и пишет нет парента ;)
Едем дальше.
Из MDI окна создаем MDICHILD окно. Снова топчем мышей по статус бару и если в функции живет GRID ,
то все работает. Если там живет TSBROWSE , тогда он начинает жить не в окне MODAL как ему и предписано
а в MDICHILD.
Григорий писал что MDI это темная история ;)
Не думал я что до такой степени ;)

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




Пост N: 4299
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.06.15 18:38. Заголовок: Да не используй MDIC..


Да не используй MDICHILD и всех делов.
Я тоже от них отказался...

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



Пост N: 654
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.06.15 21:11. Заголовок: Dima пишет:Не думал ..


Dima пишет:
 цитата:
Не думал я что до такой степени


попробовал простой пример Скрытый текст

ерунда получается со statusbar, да с окном main после modal, похоже разбираться надо по новой c mdi в последних версиях.
Работаем с mdi из версии 4.07 MiniGui и правили кое что под себя - все проги только с mdi интерфейсом и работают на ура.
Пример advanced\TsBrowse (mdi часть) вроде работает, но там только окна mdichild.


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




Пост N: 4946
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.06.15 21:30. Заголовок: SergKis пишет: ерун..


SergKis пишет:

 цитата:
ерунда получается со statusbar


да это так , еще и с тулбар тоже.
буду копать дальше пока не надоест ;)

Andrey пишет:

 цитата:
Да не используй MDICHILD и всех делов.


Так и сделаю пока все копья не сломаю ))
Просто зацепили меня MDICHILD так как живут внутри MDI , и это все что было мне надо.

Примерчик твой посмотрел. Код как бы в порядке.
Скрин MDI окна после закрытия MDICHILD окна (все съехало и уехало хз куда)


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



Пост N: 655
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.06.15 22:20. Заголовок: Dima я про это гово..


Dima
я про это говорил, думаю есть еще переменные _HMG_..., которые цепляются modalom и не восстанавливаются (это первая мысль, но может все и не так)
вот к меню C фун. (покрути), делал мой товарищ, он что то использовал, я обошелся. может помогут в дополнение к c_menu.c:
Скрытый текст

описание (очень краткое) Скрытый текст


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




Пост N: 4948
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.06.15 23:14. Заголовок: SergKis Спасибо..


SergKis Спасибо

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




Пост N: 4950
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.06.15 08:52. Заголовок: SergKis Не собрать ..


SergKis
Не собрать однако

obj/mmenu.o:mmenu.c:(.text+0x77): undefined reference to `hb_parc_t'
obj/mmenu.o:mmenu.c:(.text+0xf7): undefined reference to `hb_parc_t'
C:/MinGW12/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: obj/mmenu.o: bad reloc address 0x20 in s
ection `.eh_frame'
C:/MinGW12/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: error: ld returned 1 exit status
hbmk2[sklad]: Error: Running linker. 1

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




Пост N: 4951
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.06.15 10:52. Заголовок: SergKis пишет: Sav..


SergKis пишет:

 цитата:
Save_Rest_HMG(aHmg)


А вот эта функция все исцелила чудесным образом и TSBROWSE не падает и ложится куда надо.
Это костыль получается ?

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



Пост N: 656
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.06.15 11:37. Заголовок: Dima пишет:Не собрат..


Dima пишет:
 цитата:
Не собрать однако


извини, забываю, что у нас внутри все тексты в unicode, а это все конвертации в один байт.
хотел как лучше, но ...


 цитата:
Это костыль получается ?


типа да, родной mdi (minigui) работает с окнами mdichild, с модал запрещено, а без них как то не очень.
Если у тебя есть движение вперед, то обрати внимание на editbox, если окон > 2 фокус после ввода в нем улетал на др.окно (на mdichild мы используем только getbox вместо editbox), побороть это не смогли. А с mdichild окнами получилось так, в работе остаются где то 1-2 окна документа, а остальные разрушаем при потере фокуса (справочники). Еще есть установка SET PROGRAMMATIC OFF, при ней имена mdichild окон как ты задал, при ON имена динамические (добавляется счетчик окон к имени, заданному тобой), на что еще влияет эта установка не смотрел (в нашей версии этого нет).


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




Пост N: 4952
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.06.15 13:04. Заголовок: SergKis Спасибо , м..


SergKis
Спасибо , многое прояснил.
Про SET PROGRAMMATIC не знал и пока сам ловлю счетчик окон.


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




Пост N: 4953
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.06.15 13:30. Заголовок: SergKis Не могу соб..


SergKis
Не могу собрать Achoice (примерчик)
Не хватает функций
 
undefined reference to `HB_FUN_APPGET'
undefined reference to `HB_FUN_GETCLIENTWIDTH'
undefined reference to `HB_FUN_GETCLIENTHEIGHT'
undefined reference to `HB_FUN_GETTOOLBARHEIGHT'
undefined reference to `HB_FUN_GETTXTWIDTH'
undefined reference to `HB_FUN_FORMINDEX'
undefined reference to `HB_FUN_GETHEGHTBROWSE'
undefined reference to `HB_FUN_CONTROLHANDLE'
undefined reference to `HB_FUN_GETSTATUSBARHEIGHT'


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



Пост N: 659
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.06.15 14:49. Заголовок: Dima пишет:Не хватае..


Dima пишет:
 цитата:
Не хватает функций


тут: Скрытый текст


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



Пост N: 660
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.06.15 15:13. Заголовок: Dima вот так правил..


Dima
вот так правильней будет (в пред. тексте была еще функция, я ее заменил, но не удачно):

FUNCTION GetStatusBarHeight( cForm ) // высота StatusBar
DEFAULT cForm := _HMG_aFormNames [ _HMG_MainIndex ] // т.к. StatusBar на mdimain
RETURN GetWindowHeight(GetControlHandle('STATUSBAR', cForm))


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




Пост N: 4954
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.06.15 15:49. Заголовок: SergKis пишет: вот ..


SergKis пишет:

 цитата:
вот так правильней будет


Понял. Копаю пока дальше. Сенкс !

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




Пост N: 4958
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.15 21:27. Заголовок: SergKis Функция Sav..


SergKis
Функция Save_Rest_HMG то что надо
Но вылез нежданчик ))
Если в MDI или MDICHILD окне создать окно MODAL свое или вызвать что то типа функций MSG....() то
это модальное окно живет в других программах . Такого эффекта нет , если окно простое не MDI..
Что то можно подкрутить в этом плане (чую сырец надо переделывать) ?

ЗЫ
Чисто интереса ради юзанул FiveWin c MDI , там нет такой бяки , все норм с MODAL + MDI...

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



Пост N: 661
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.06.15 22:04. Заголовок: Dima попробуй HB_FU..


Dima
попробуй HB_FUNC( SETPARENT ) (в С текстах с меню выше)
поставь своему модал поставить handle родителя mdichild

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




Пост N: 4959
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.15 22:20. Заголовок: SergKis пишет: пост..


SergKis пишет:

 цитата:
поставь своему модал поставить handle родителя mdichild


Понял , пока не пробовал , а что делать с системными функциями Минигуи типа MSG...()
там же тоже модальное окно и эффект тот же ?
Объясню: есть модальное окно и в нем вызываю ну скажем MSGINFO() , ну все красиво ,
все вызвалось. Затем его не закрывая тихонько так переключаюсь совсем на другую
программу и с удивлением обнаруживаю в ней на переднем плане MSGINFO() из моей
задачи.

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



Пост N: 662
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.06.15 22:52. Заголовок: Dima пишет:MSGINFO()..


Dima пишет:
 цитата:
MSGINFO() из моей задачи.


по цепочке там заканчивается:
MessageBoxIndirect( <ТУТ>, cMessage, cTitle, nStyle, nIcon )
первым параметром дай handle parent нужного окна

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




Пост N: 4960
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.15 22:56. Заголовок: SergKis Понял , то ..


SergKis
Понял , то есть сырец править , да ?

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



Пост N: 663
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.06.15 23:07. Заголовок: Dima Напиши свой ан..


Dima
Напиши свой аналог MsgBox(), Msg..., используя тексты из h_msgbox.prg как "рыбу"

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




Пост N: 4961
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.06.15 08:09. Заголовок: SergKis пишет: попр..


SergKis пишет:

 цитата:
попробуй HB_FUNC( SETPARENT )


Попробовал.
Перед тем как создать MODAL окно , считал handle родителя
вот так GetActiveMdiHandle() (в переменую HTEST к примеру)
Далее создаю MODAL окно и в конце
ACTIVATE WINDOW Mchoice
SETPARENT(ThisWindow.Handle,HTEST)
и ни чего , MODAL живет без привязки.
Что я сделал не так ?

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



Пост N: 664
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.06.15 11:25. Заголовок: Dima пишет:ACTIVATE ..


Dima пишет:
 цитата:
ACTIVATE WINDOW Mchoice
SETPARENT(ThisWindow.Handle,HTEST)


после ACTIVATE команды сработают только после закрытия окна (ACTIVATE цикл ожидания сообщений)
между END WINDOW и ACTIVATE This... команды не пашут.
SETPARENT(ThisWindow.Handle,HTEST) надо в ON INIT или LOSTFOCUS, попробовал у себя ..., фигню получил, стал смотреть, что сам делаю - да ничего не делаю
Dima пишет:
 цитата:
Если в MDI или MDICHILD окне создать окно MODAL свое или вызвать что то типа функций MSG....() то
это модальное окно живет в других программах


у меня такого нет, окна привязаны к своему приложению и на чужие не лезут, что modal, что msg. То, что уменя hb2.0, MiniGui 4.07 и msvc влиять не должно. Не знаю что сказать ...



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




Пост N: 4962
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.06.15 11:28. Заголовок: SergKis Понял , спа..


SergKis
Понял , спасибо и на этом.
Минигуи не допилен как следует я так понял , потому как даже в старых версиях FW таких ляпов нет.

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




Пост N: 764
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.06.15 11:58. Заголовок: Dima пишет: Минигуи..


Dima пишет:

 цитата:
Минигуи не допилен как следует я так понял


Поддержку MDI интерфейса в Минигуи не одобрял автор библиотеки, поэтому ее добавил в расширенную сборку Януш Пора (как сумел).
Если будут предложены необходимые доработки от заинтересованных лиц, то они будут включены в актуальную версию (после проверки, конечно)

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




Пост N: 4963
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.06.15 12:06. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
поэтому ее добавил в расширенную сборку Януш Пора (как сумел)


Теперь все ясно а я копья ломаю

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



Пост N: 665
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.06.15 12:50. Заголовок: Dima Добавил в прим..


Dima
Добавил в пример (в начале темы, который ломал mdimain [hb 3.2 minigui 2.4.7 borland]) в modal окно
DEFINE WINDOW wModal AT 0,0 WIDTH 400 HEIGHT 300 MODAL
ThisWindow.Topmost := .T.
...
и получил модально окно в др. приложениях поверх, может у тебя такое есть ?

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




Пост N: 4964
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.06.15 13:16. Заголовок: SergKis Такого нет...


SergKis
Такого нет.
Основное окно у меня простое с запросом пароля , после его ввода окно прячу.
Затем вылазит MDI окно в котором живет статус бар и живут MDICHILD окна.
При нажатии на статус бар создается менюшка в окне MODAL , это окно живет
во всех приложениях ;)
Что касается TOPMOST то он да стоял но на окне с вводом пароля. Убрал временно.
Поведение MODAL окна изменилось. При переключении в другую программу все
нормально и нет этого окна. Но при возврате в свое приложение не видать MODAL
окна.

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



Пост N: 666
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.06.15 14:38. Заголовок: Dima пишет:Основное ..


Dima пишет:
 цитата:
Основное окно у меня простое с запросом пароля , после его ввода окно прячу. Затем вылазит MDI окно


т.е. у тебя основное окно main и потом mdi main, два окна типа A - не знаю как они уживуться по переммым _HMG_...
у меня есть такая ситуация, но mdi - отдельный exe, который запускаю.
Если пробнуть пустить только mdi часть (типа пароль уже ввели), что будет ?
Пример на borland (говорил выше) ведет себя с модал окном (без topmost) вполне адекватно, как должно быть (кроме отрисовки main после ...)

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




Пост N: 4965
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.06.15 14:41. Заголовок: SergKis пишет: и по..


SergKis пишет:

 цитата:
и потом mdi main


Нет просто MDI , ведь 2-х MAIN окон быть не может
Ладно , спасибо. Я не буду пока юзать MDI пока с ними не наведут порядок.

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




Пост N: 4306
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.06.15 16:11. Заголовок: Dima пишет: ведь 2-..


Dima пишет:

 цитата:
ведь 2-х MAIN окон быть не может


Было бы интересно посмотреть.
Очень удобно на панели задач иметь свои отдельные окна !
Юзера просят об этом.

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




Пост N: 4966
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.06.15 21:49. Заголовок: Пара простых вопросо..


Пара простых вопросов от новичка к знатокам.
1.
В самом начале программы стоит вот такая конструкция , что бы не запустить программу более одного раза
 
IF IsExeRunning( cFileNoPath( HB_ArgV( 0 ) ) )
hWnd := FindWindow( APP_TITLE )
IF hWnd > 0

IF IsIconic( hWnd )
_Restore( hWnd )
ELSE
SetForeGroundWindow( hWnd )
ENDIF
ELSE
MsgStop( "Cannot find application window!", "Error", , .f. )
ENDIF
quit
ENDIF

Да это работает.
Но в основном окне могут быть открыты другие окошки. Как можно попасть не на основное окно программы (хотя понятно что
ищем его в коде выше) а на активное (в фокусе окно) живущее в паренте главного окна ?
А если попасть еще бы в нужное окошко да еще и в последний в фокусе контрол , но это видимо я
уже фантазирую ;)

2. Пример C:\MiniGUI\SAMPLES\BASIC\REGIONS\ , почему такие "обгрызанные" углы в RoundRect ,
молчу уже про эллипс ?

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



Пост N: 667
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.06.15 23:13. Заголовок: Dima пишет:в нужное ..


Dima пишет:
 цитата:
в нужное окошко да еще и в последний в фокусе контрол


Не очень понятно желание попасть в контрол, который уже в фокусе (gotfocus, onchange уже были и ...), может про это спрашиваешь (последним был в фокусе):
 
// в процедуре LostFocus
IF ( i := AScan ( _HMG_aControlHandles, GetFocus()) ) > 0
cControlName := _HMG_aControlNames[ i ]
IF ( i := AScan ( _HMG_aFormHandles, _HMG_aControlParenthandles[ i ] ) ) > 0
cFormName := _HMG_aFormNames[ i ]
ENDIF
ENDIF
...
// потом где то
IF ! empty(cControlName) .and. ! empty(cFormName)
_SetFocus(cControlName, cFormName)
ENDIF


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




Пост N: 4967
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.06.15 09:35. Заголовок: Нет я не про это. ..


Нет я не про это.


В самом начале проги вот такой код
 
IF IsExeRunning( cFileNoPath( HB_ArgV( 0 ) ) )
hWnd := FindWindow( APP_TITLE )
IF hWnd > 0
IF IsIconic( hWnd )
_Restore( hWnd )
ELSE
SetForeGroundWindow( hWnd )
ENDIF
ENDIF
quit
ENDIF


Запустил программу , вылезло главное окно (обычное) , вызываю
в нем CHILD окно.
После этого снова запускаю программу и код который выше
сделает активным главное окно но не CHILD. Мне надо попасть
на CHILD. Возможно (это просто догадка) попадать нужно
на последнюю форму вызванную в программе.


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



Пост N: 668
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.06.15 10:42. Заголовок: Dima Запущена прога..


Dima
Запущена прога 2-раза сразу (первый раз уже где то работаем), или запустили, где то работали, вышли (запомнили где были), снова запустили и хотим попасть сразу в режим (окно, контрол) где были ?

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




Пост N: 4968
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.06.15 10:49. Заголовок: SergKis пишет: Запу..


SergKis пишет:

 цитата:
Запущена прога 2-раза сразу (первый раз уже где то работаем)


вот это

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




Пост N: 4969
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.06.15 10:58. Заголовок: Собственно идея взят..


Собственно идея взята тут C:\MiniGUI\SAMPLES\Advanced\IsExeRunning\demo.prg
Вторую копию проги не запустить. Но в примере окошко всего одно.
А если их будет больше то при повторном запуске мы все равно попадаем на главное окно
а попасть надо на последнее , которое было в момент повторного запуска программы.
Вроде понятно пояснил.

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



Пост N: 669
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.06.15 10:59. Заголовок: Dima Туплю. Если уж..


Dima
Туплю. Если уже в child работаешь, зачем манипуляции с hWnd - просто выходи и все из 2-го экз. проги.


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




Пост N: 4970
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.06.15 11:07. Заголовок: SergKis пишет: Если..


SergKis пишет:

 цитата:
Если уже в child работаешь, зачем манипуляции с hWnd - просто выходи и все из 2-го экз. проги.


Мы не ищем легких путей , хотел сделать красиво. В одной проге такой эффект видел.
При повторном запуске попадаем куда нужно.

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



Пост N: 670
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.06.15 11:28. Заголовок: Dima пишет:Мы не ище..


Dima пишет:
 цитата:
Мы не ищем легких путей


Если 1-е приложение свернуто (все окна) и надо развернуть 2-м запуском можно
- послать WM_COPYDATA 1-ому и пусть оно само все делает как надо (в sampes поищи)
- перебрать окна принадл. hWnd и раскрыть нужные (как определить ?) но где видел не помню

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




Пост N: 4971
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.06.15 11:38. Заголовок: Понял , бум копать. ..


Понял , бум копать. Спасибо !

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



Пост N: 671
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.06.15 12:15. Заголовок: Dima Если на окно 1..


Dima
Если на окно 1-го запуска повесить on gotfocus, с алгоритмом по развернутым окнам child, то будет срабатывать и твой код

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




Пост N: 4972
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.06.15 12:51. Заголовок: SergKis пишет: пер..


SergKis пишет:

 цитата:
перебрать окна принадл. hWnd и раскрыть нужные (как определить ?) но где видел не помню


Этот вариант предпочтительнее , будем искать примерчик....

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




Пост N: 4973
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.06.15 13:47. Заголовок: думаю вот этот приме..


думаю вот этот примерчик ;)
C:\MiniGUI\SAMPLES\Advanced\ExternalApp_3\demo2.prg

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




Пост N: 4974
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.06.15 14:53. Заголовок: Попробовал сделать и..


Попробовал сделать и не пашет как следует......
Скрытый текст



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




Пост N: 4309
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.06.15 13:55. Заголовок: Dima пишет: MAIN ок..


Dima пишет:

 цитата:
MAIN окно не получило фокус ввода при запуске , почему ?


Можно получить фокус на MAIN окно если в Func Mdimain() сделать так:
Form_1.Center
Activate Window Form_1 NoWait
Form_0.Release



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




Пост N: 4979
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.15 15:59. Заголовок: Andrey пишет: Activ..


Andrey пишет:

 цитата:
Activate Window Form_1 NoWait


Понял. А если у всех окон программы использовать NOWAIT , тут не может быть каких то подводных камней ?
Как выше Сергей писал ACTIVATE WINDOW без NOWAIT это цикл и живет пока окно не закроется , то есть
из функции в которой я создал окно я не выйду пока окно не будет закрыто.
Да и команды после ACTIVATE WINDOW не сработают пока окно не закроется.


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




Пост N: 4314
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.06.15 18:00. Заголовок: Dima пишет: А если ..


Dima пишет:

 цитата:
А если у всех окон программы использовать NOWAIT , тут не может быть каких то подводных камней ?


А каких ? Даже и не знаю, я сторонник попробовать...
Просто занялся этим прелодером вот и вспомнил, как Григорий показывал в примерах.

А окно можешь убить потом в любое время и в любом месте программ. Очень удобно.

Dima пишет:

 цитата:
1) из функции в которой я создал окно я не выйду пока окно не будет закрыто.
2) Да и команды после ACTIVATE WINDOW не сработают пока окно не закроется.


1) можешь там же в функции закрыть окно - команду ты знаешь.
2) Не пиши код после ACTIVATE WINDOW, сделай все в ON INIT {|| функция1(), функция2(), .... , ThisWindow.Release }

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




Пост N: 4986
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.15 19:34. Заголовок: Простой вопрос :) Ес..


Простой вопрос :)
Есть статус бар
 
DEFINE STATUSBAR FONT 'Verdana' SIZE 8
STATUSITEM "TEST"
STATUSITEM "123"
DATE
CLOCK
KEYBOARD
END STATUSBAR



Хочу в RUNTIME оставить только один ITEM на всю ширину статус бара.
Затем выставить ITEM по центру (изначально он по левому краю ориентирован)
Сменить фон статус бара , шрифт + его параметры и цвет ITEM

Знаний хватило только на это
Form_0.StatusBar.Item(1) := "Проверка"
Form_0.StatusBar.Width(1) := WidthWindow_MyApl // ширина главного окна
А как быть с остальными хотелками ? ;)


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




Пост N: 4987
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.15 19:59. Заголовок: Вроде понял ;) Приме..


Вроде понял ;)
Примерно таким макаром
SetProperty( "Form_0", "Statusbar","Item",1,"1111111111111" )


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




Пост N: 4318
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.06.15 20:00. Заголовок: Dima пишет: Form_0...


Dima пишет:

 цитата:
Form_0.StatusBar.Item(1) := "Проверка"


В TBROWSE налетишь на грабли, в StatusBar.Item(1) он выводит свои какие то данные и затирает, то что сам выводишь.
Я от StatusBar отказался, не очень он красивый получается...
Насчет фона и цвета шрифта смотри Пост N: 714 http://clipper.borda.ru/?1-1-0-00000431-000-20-0

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




Пост N: 4989
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.15 20:11. Заголовок: Andrey пишет: Насче..


Andrey пишет:

 цитата:
Насчет фона и цвета шрифта смотри Пост N: 714


Спасибо но это было до того как в статус бар ввели цвета. Так что сейчас видать все проще. Разбираюсь.

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




Пост N: 4991
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.15 21:41. Заголовок: Вообщем все решил. Ч..


Вообщем все решил.
Через
_HMG_aControlBkColor
_HMG_aControlSpacing
_HMG_aControlFontColor

С одним НО ;) это все пашет только если статуситем заявлен так , как минимум
STATUSITEM "TEST" FONTCOLOR BLACK
вот так фокус не сработает
STATUSITEM "TEST"
Вероятно косяк Минигуи.

PS
С этим Минигуи , не когда даже телик глянуть
5 часов пролетает как 5 минут ))

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




Пост N: 4321
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.06.15 22:06. Заголовок: Dima пишет: С этим ..


Dima пишет:

 цитата:
Вообщем все решил.
Через
_HMG_aControlBkColor
_HMG_aControlSpacing
_HMG_aControlFontColor


Как ? Напиши подробней.

Dima пишет:

 цитата:
С этим Минигуи , не когда даже телик глянуть
5 часов пролетает как 5 минут ))



Аналогично ! Читаешь как детектив и расследуешь - как будет работать или не работать !

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




Пост N: 4992
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.15 22:39. Заголовок: Andrey пишет: Как ?..


Andrey пишет:

 цитата:
Как ? Напиши подробней.


Кушать подано сэр

Во первых статусбар надо объявить примерно так
 
DEFINE STATUSBAR FONT 'Verdana' SIZE 8
STATUSITEM "TEST_SB" FONTCOLOR BLACK // без FONTCOLOR BLACK все что дальше не заработает , хз почему
STATUSITEM ""
DATE //WIDTH 80
CLOCK //WIDTH 90
KEYBOARD
END STATUSBAR


Далее
 
SetProperty( "Form_0", "Statusbar","Width",1,WidthWindow_MyApl )

Тут все ясно , этой командой как бы убиваются все STATUSITEM кроме первого так его расширили по самое не хочу
Команда хороша тем что можно точно указать нужный ITEM , без вопросов.
Дальше все будет в слепую без четкого указания ITEM
 
IF ( h := MyGetControlHandle('StatusBar' ) ) > 0 // опа а тут сразу вопрос , 'StatusBar' может жить и в другом окне
MySetSb( h ) // и как их отличать ? У меня живет только в главном , поэтому ладно..
ENDIF



Далее ставим новые фичи на STATUSITEM но в слепую без указания ITEM , как это сделать нормально не нашел. Но в случае
если видимый ITEM только один , это работает.
 
FUNC MySetSb( ParentHandle )
LOCAL h, i

FOR EACH h In _HMG_aControlContainerHandle
i := h:__enumIndex()
IF _HMG_aControlType [ i ] == "ITEMMESSAGE" .AND. h == ParentHandle
_HMG_aControlCaption [ i ]:="TEST-2" // Caption
_HMG_aControlBkColor [ i ]:= nRGB2Arr(RGB(159, 191, 236) ) // цвет заднего фона
_HMG_aControlSpacing [ i ]:=1 // по центру
_HMG_aControlFontColor [ i ]:=WHITE // цвет шрифта
ENDIF
NEXT

RETURN Nil



Поправка: я допер как делать не в слепую.


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




Пост N: 4993
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.06.15 08:14. Заголовок: Dima пишет: Поправк..


Dima пишет:

 цитата:
Поправка: я допер как делать не в слепую.


Итак в начале
 
SetProperty( "Form_0", "Statusbar","Width",1,WidthWindow_MyApl )

IF ( h := MyGetControlHandle('StatusBar',"Form_0" ) ) > 0 // находим хендл StatusBar на форме Form_0
MySetSb( h )
ENDIF



Функция MyGetControlHandle
 
FUNC MyGetControlHandle( cControlName ,cFormName)
Local Hc:=0
Local Hcf:=GetControlHandle ( cControlName ,cFormName )
Local Elem
Local i
for each Elem in _HMG_aControlNames

i:=Elem:__enumindex()

if Elem==cControlName

if _HMG_aControlHandles[ i ]==Hcf
Hc:=_HMG_aControlHandles[ i ]
endif

endif

next
RETURN Hc


Дальше красим так , потому что из SetProperty добраться к цветам
и ALIGN не удалось (может кто подскажет как....)
Было бы логичным добираться к Property ITEM через SetProperty и не
городить весь этот огород , ведь часть Property все же доступна из
SetProperty.
 
FUNC MySetSb( ParentHandle )
LOCAL h, i

FOR EACH h In _HMG_aControlContainerHandle
i := h:__enumIndex()
IF _HMG_aControlType [ i ] == "ITEMMESSAGE" .AND. h == ParentHandle
_HMG_aControlCaption [ i ]:="Всем привет ;)"
_HMG_aControlBkColor [ i ]:= nRGB2Arr(RGB(159, 191, 236) )
_HMG_aControlSpacing [ i ]:=1 // по центру
_HMG_aControlFontColor [ i ]:=YELLOW
ENDIF
NEXT

RETURN Nil


Функция MySetSb работает по умолчанию с ITEM 1 , как добраться к другим не понял.
Может кто подскажет как....

Полистал все елементы _HMG_SYSDATA (их больше 400)
Обратил внимание на 135 и 136 и как обратится к нужному ITEM статусбара понятно.
Вот только сдвиг там идет на 2. То есть если надо править ITEM 1 , то править нужно
3 элемент нужного массива.
Так все больше "флудить" не буду раз это ни кому не надо и ни кто не испытывает желание
подсказать (помочь).

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



Пост N: 672
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.06.15 11:16. Заголовок: Dima Вернусь к вопр..


Dima
Вернусь к вопросу с Modal на Mdi (если не выкинул еще)
h_windows.prg в _DefineModalWindow (...) есть такое
IF _HMG_InplaceParentHandle <> 0
Parent := _hmg_InplaceParentHandle
ELSEIF ! _HMG_BeginWindowMDIActive // срабатывает этот кусок кода
Parent := _hmg_MainHandle // после Save_Rest_HMG()
ENDIF

если не трудно проверь это на модал окне
hParent := _HMG_InplaceParentHandle
aHmg := Save_Rest_HMG()
_HMG_InplaceParentHandle := GetActiveMdiHandle()
... здесь модал окно
Save_Rest_HMG(aHmg)
_HMG_InplaceParentHandle := hParent

измениться ли поведение модал ?


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




Пост N: 4994
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.06.15 11:22. Заголовок: SergKis пишет: (есл..


SergKis пишет:

 цитата:
(если не выкинул еще)


Похоронил всё MDI

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



Пост N: 673
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.06.15 11:26. Заголовок: Dima пишет:Дальше кр..


Dima пишет:
 цитата:
Дальше красим так , потому что из SetProperty добраться к цветам


нашел
HB_FUNC( SETBKCOLOR )
{
hb_retnl( ( ULONG ) SetBkColor( ( HDC ) hb_parnl( 1 ), ( COLORREF ) RGB( hb_parni( 2 ), hb_parni( 3 ), hb_parni( 4 ) ) ) );
}
т.е. по идее если знаешь handle item StatusBar, то ...
для align используем свою
 
// BAA
HB_FUNC( CONTROLALIGN )
{
HWND hWnd = ( HWND ) hb_parnl(1);

LONG nStyle, nAlign=0, nAlignNew, nAlignMsk;

nAlignMsk = ES_LEFT | ES_CENTER | ES_RIGHT; // 0x0003

if( IsWindow(hWnd) ){

nStyle = GetWindowLong(hWnd, GWL_STYLE);
nAlign = nAlignMsk & nStyle;

if( HB_ISNUM(2) ){

nAlignNew = hb_parni(2);
nAlignNew &= nAlignMsk; // Что бы небыло лишнего

nStyle &= ( ~nAlignMsk ); // Снять
nStyle |= nAlignNew; // Поставить

// Только при прижатии влево
// Текст не сворачивается а обрезается
// Делается замена табуляции на пробелы

if(nAlignNew==ES_LEFT ) nStyle |= SS_LEFTNOWORDWRAP ;
else nStyle &= ( ~SS_LEFTNOWORDWRAP );

SetWindowLong(hWnd, GWL_STYLE, nStyle);
}
}

hb_retni( nAlign );
}

ControlAlign(hWnd) - читает значение
ControlAlign(hWnd, nAlign) - ставит

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




Пост N: 4995
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.06.15 11:28. Заголовок: SergKis Спасибо...


SergKis
Спасибо.
Пишу пока свою , закончу , выложу.

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



Пост N: 674
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.06.15 11:29. Заголовок: Dima пишет:Похоронил..


Dima пишет:
 цитата:
Похоронил всё MDI


Жаль, возможно это решило бы проблему modal

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




Пост N: 4996
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.15 15:44. Заголовок: Снова бяка. Толи у м..


Снова бяка. Толи у меня руки не оттуда растут или косячок в Минигуи.
 

#include "minigui.ch"

Function Main()

DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 500 ;
HEIGHT 200 ;
MAIN;
TITLE 'Test'


DEFINE BUTTONEX Button_1
ROW 20
COL 70
WIDTH 110
HEIGHT 30
CAPTION "Change With SB"
ACTION { || SetProperty("Form_1","StatusBar","Width",1,;
if( GetProperty("Form_1","StatusBar","Width",1)==50,GetProperty( "Form_1","Width"),50)) }
END BUTTONEX

DEFINE BUTTONEX Button_2
ROW 70
COL 70
WIDTH 110
HEIGHT 30
CAPTION "New Windows"
ACTION { || New_win() }
END BUTTONEX

DEFINE STATUSBAR OF Form_1
STATUSITEM "Test1" WIDTH 50 FONTCOLOR BLACK
DATE
CLOCK
KEYBOARD
END STATUSBAR


END WINDOW

CENTER WINDOW Form_1

ACTIVATE WINDOW Form_1

Return Nil
*********************
Func New_Win()
DEFINE WINDOW Form_2 ;
WIDTH 800 ;
HEIGHT 100 ;
CHILD;
TITLE 'Newwin'
DEFINE STATUSBAR OF Form_2
STATUSITEM "Test2" WIDTH 50 FONTCOLOR BLACK
DATE
CLOCK
KEYBOARD
END STATUSBAR



END WINDOW
Form_2.Center
ACTIVATE WINDOW Form_2
return



Топчем кнопку Change With SB , ширина 1 итема StatusBar меняется
Cтоит вызвать окно по кнопке New Windows и закрыть его , то ACTION в кнопке Change With SB
уже не фурычит , точнее не пашет SetProperty для StatusBar
Более того если открыть Child окно и не закрывая его переключится на главное
и потыкать кнопку Change With SB то все начинает меняться в StatusBar CHILD окна ))
Оно лечится ?

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




Пост N: 766
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.06.15 17:25. Заголовок: Dima пишет: Оно леч..


Dima пишет:

 цитата:
Оно лечится ?


Благодарю за наводку - это мой косяк

Поправил следующую процедуру
*-----------------------------------------------------------------------------* 
PROCEDURE _SetStatusWidth ( ParentForm , Item , Size )
*-----------------------------------------------------------------------------*
LOCAL nItem As Numeric, nSize As Numeric
LOCAL FormHandle, aWidths, h := GetControlHandle ( "StatusBar", ParentForm )

Assign nItem := Item
Assign nSize := Size

FormHandle := GetFormHandle ( ParentForm )
aWidths := _GetStatusItemWidth ( FormHandle )

_SetStatusItemWidth ( nItem, nSize, FormHandle )

aWidths [nItem] := nSize
SetStatusBarSize ( h, aWidths )

RefreshItemBar ( h, _GetStatusItemWidth ( FormHandle, 1 ) )

RETURN

Теперь Ваш пример работает нормально

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




Пост N: 4998
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.15 17:41. Заголовок: gfilatov2002 Спасиб..


gfilatov2002
Спасибо ! Все работает !

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




Пост N: 5000
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.15 21:38. Заголовок: gfilatov2002 Не ухо..


gfilatov2002
Не уходя далеко от вопроса о StatusBar , хотел узнать в том же ключе.
В справке пишется что бы изменить высоту этого контрола юзать надо
SetProperty ( <ParentWindowName>,<ControlName>, Height , nHeight )
Так и сделал ......не работает в рантайм .
Хотел было добраться к остальным параметрам конкретного ITEM , через
SetProperty с 5-ю параметрами по аналогии с шириной итема (SetProperty( cFormName, cControlName,"Width",nitem,nWidth )) ,
не получилось.
Добраться к некоторым из них удалось только через
_HMG_aControlCaption
_HMG_aControlBkColor
_HMG_aControlSpacing
_HMG_aControlFontColor
к шрифту добраться не получилось через _HMG_aControlFontAttributes
Не знаю фича это или косяк...

Спасибо за работу !!!



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




Пост N: 767
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.06.15 22:08. Заголовок: Dima пишет: В справ..


Dima пишет:

 цитата:
В справке пишется что бы изменить высоту этого контрола


Мы не можем установить высоту StatusBar, т.к. она устанавливается автоматически в зависимости от выбранного для StatusBar шрифта.

Dima пишет:

 цитата:
Хотел было добраться к остальным параметрам конкретного ITEM


Для установки свойства Caption конкретного ITEM надо использовать
SetProperty( cFormName, cControlName,"Item",nitem, cCaption )
Для установки новой иконки конкретного ITEM надо использовать
SetProperty( cFormName, cControlName,"Icon",nitem,"iconname" )
Для изменения действия по клику мыши можно использовать следующую команду

 цитата:
#command DEFINE STATUSITEM <n> ;
OF <Form> ;
ACTION <action> ;
=> ;
_SetStatusItemAction( <n>, <{action}>, GetFormHandle(<"Form">) )


Изменение остальных свойств в рантайм НЕ предусмотрено, они назначаются при определении этого ITEM

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




Пост N: 5001
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.15 22:45. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Мы не можем установить высоту StatusBar, т.к. она устанавливается автоматически в зависимости от выбранного для StatusBar шрифта.


Точно , мой косяк....виноват.
Про остальное понял. Спасибо !

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




Пост N: 5002
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.15 22:58. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Изменение остальных свойств в рантайм НЕ предусмотрено, они назначаются при определении этого ITEM


У меня получилось , исходник могу выложить. Имею в виду цвет шрифта , фон для итема , align .

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




Пост N: 768
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.06.15 23:09. Заголовок: Dima пишет: исходни..


Dima пишет:

 цитата:
исходник могу выложить


Конечно, выложи
Любые доработки в минигуи приветствуются

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




Пост N: 5003
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.07.15 09:28. Заголовок: gfilatov2002 Вот и ..


gfilatov2002
Вот и пример , Америку я конечно не открыл , но возможно кому то будет полезно.
Скрытый текст



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





Пост N: 34
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 09.02.17 15:21. Заголовок: SergKis пишет: FUN..


SergKis пишет:

 цитата:
FUNCTION GetWndMDIChildAll() // Получить массивом все имена доступных дочерних окон LOCAL i, k, aNames:={} k := Len( _HMG_aFormNames ) FOR i := 1 TO k IF _HMG_aFormType=='Y' AAdd(aNames, _HMG_aFormNames ) ENDIF NEXT RETURN aNames



SergKis - функция не работает Выдает ошибку - "Error BASE/1070 Argument error: =="
может чего не хватет ..?

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





Пост N: 35
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 09.02.17 15:22. Заголовок: SergKis пишет: FUN..


SergKis пишет:

 цитата:
FUNCTION GetWndMDIChildAll() // Получить массивом все имена доступных дочерних окон LOCAL i, k, aNames:={} k := Len( _HMG_aFormNames ) FOR i := 1 TO k IF _HMG_aFormType=='Y' AAdd(aNames, _HMG_aFormNames ) ENDIF NEXT RETURN aNames



SergKis - функция не работает Выдает ошибку - "Error BASE/1070 Argument error: =="
может чего не хватет ..?

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



Пост N: 1359
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.17 19:44. Заголовок: Alex_Cher пишет може..


Alex_Cher пишет
 цитата:
может чего не хватет ..?


такой текст
 
FUNCTION GetWndMDIChildAll() // Получить массивом все имена доступных дочерних окон
LOCAL i, k, aNames:={}

k := Len( _HMG_aFormNames )

FOR i := 1 TO k
IF _HMG_aFormType[ i ]=='Y'
AAdd(aNames, _HMG_aFormNames[ i ] )
ENDIF
NEXT

RETURN aNames


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





Пост N: 36
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 10.02.17 08:31. Заголовок: SergKis пишет: тако..


SergKis пишет:

 цитата:
такой текст



SergKis - посоветуй, я наверное не там капаю, задача - при переходе с дочернего окна на родительское дочернее
должно закрываться само. Функция GetWndMDIChildAll() при любом раскладе дает пустой массив.


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



Пост N: 1360
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.02.17 12:34. Заголовок: Alex_Cher пишет посо..


Alex_Cher пишет
 цитата:
посоветуй


1. GetWndMDIChildAll() для MDI MAIN окна
2. В вашем случае, думаю, надо в родительском окне сделать
 
DEFINE WINDOW WndOwner ...
ON GOTFOCUS OwnerGotFocus()
...

DEFINE WINDOW WndChild_1 ...

Func OwnerGotFocus()
If IsWindowDefined(WndChild_1)
WndChild_1.Release
EndIf
Return Nil


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





Пост N: 37
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 11.02.17 08:05. Заголовок: SergKis пишет: В ва..


SergKis пишет:

 цитата:
В вашем случае, думаю,



SergKis - еще раз огромное Вам спасибо, все оказывается так просто ...

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



Пост N: 96
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 24.04.17 09:07. Заголовок: Добрался до Минигуи,..


Добрался до Минигуи, всё очень круто, особенно примеры, большое спасибо за них!

Но вот такая ситуация: есть поля для ввода данных, переключение между ними по умолчанию клавишей Tab. Хочу сделать Enter. В консоли все было просто: set key to... и процедура с keyboard(). Предполагаю, что и здесь должно быть как-то не сложно, но пока не нашел ничего очевидного.

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




Пост N: 1090
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.04.17 09:59. Заголовок: Благодарю за добрые ..


Благодарю за добрые слова в адрес библиотеки!

rvu пишет:

 цитата:
переключение между ними по умолчанию клавишей Tab. Хочу сделать Enter


Это вохможно сделать, если добавить следующую команду в начало программы:

 цитата:
SET NAVIGATION EXTENDED


Кстати, полный список новых команд, добавленных в Минигуи, можно см. в файле Doc\Commands.txt

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



Пост N: 97
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 24.04.17 11:41. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
SET NAVIGATION EXTENDED



В самом деле очень просто. Спасибо!

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



Пост N: 98
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 24.04.17 18:03. Заголовок: Интересно, а можно у..


Интересно, а можно убрать самую верхнюю строчку? В которой пишется TITLE, где крестик для закрытия программы.

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



Пост N: 352
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 24.04.17 21:19. Заголовок: rvu Изучайте классы ..


rvu Изучайте классы : свойства и методы . Есть MiniGUI.chm - там всё описано достаточно неплохо
для Вашего вопроса :
DEFINE WINDOW <WindowName>
[ AT <nRow> ,<nCol> ]
[ ROW <nRow> ]
[ COL <nCol> ]
[ WIDTH <nWindth> ]
[ HEIGHT <nHeight> ]
[ CLIENTAREA <nClientWidth> , <nClientHeight> ]
[ VIRTUAL WIDTH <nVirtualWindth> ]
[ VIRTUAL HEIGHT <nVirtualHeight> ]
[ TITLE <cTitle> ]


[ NOMINIMIZE ] - не допускать сворачивание окна (соответственно и значёк этой команды недоступен в шапке )
[ NOMAXIMIZE ] - не допускать разворачивание во весь экран
[ NOSIZE ] - не допускать изменение размера
[ NOSYSMENU ] - не показывать системное меню окна
[ NOCAPTION ] - окно без заголовка ( просто рамка)





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




Пост N: 6386
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.04.17 21:29. Заголовок: rvu Изучать придетс..


rvu
Изучать придется много , так что смирись и копай , абы как не получится и Softlog86 прав !

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



Пост N: 353
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 25.04.17 19:53. Заголовок: Сам до сих пор регул..


Сам до сих пор регулярно "туплю" ..... Век живи - век учись .
Чем мне и нравится MiniGui - очень богатый инструментарий !

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



Пост N: 99
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 27.04.17 17:23. Заголовок: Dima пишет: смирись..


Dima пишет:

 цитата:
смирись и копай



Копаю, копаю...

Никак не найду, как меняются цвета данных в активном поле в DEFINE TEXTBOX
Там белый на синем по умолчанию видимо?



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




Пост N: 6390
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.04.17 17:28. Заголовок: есть справка вообще ..


есть справка вообще то и примеры
вот навскидку C:\MiniGUI\SAMPLES\Advanced\ComboSearchGrid\combosearchgrid.prg


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



Пост N: 100
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 28.04.17 10:15. Заголовок: Dima пишет: есть сп..


Dima пишет:

 цитата:
есть справка вообще то и примеры



В справке ничего не нашел. А про примеры, мы точно об одном и том же?
Я не про BACKCOLOR и FONTCOLOR в TEXTBOX.

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




Пост N: 6391
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.04.17 11:23. Заголовок: rvu Про это речь ? ..


rvu
Про это речь ?
DEFINE TEXTBOX &( textboxname )
ROW nR
Col nC
WIDTH nW
HEIGHT 24
ONGOTFOCUS SetProperty( ThisWindow.Name, textboxname, "FontColor", RED )
ONLOSTFOCUS SetProperty( ThisWindow.Name, textboxname, "FontColor", GRAY )
END TEXTBOX


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


Пост N: 1099
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 28.04.17 11:29. Заголовок: Dima пишет: ONGOTFO..


Dima пишет:

 цитата:
ONGOTFOCUS SetProperty( ThisWindow.Name, textboxname, "FontColor", RED )
ONLOSTFOCUS SetProperty( ThisWindow.Name, textboxname, "FontColor", GRAY )


Все верно, но можно проще если вместо TEXTBOX использовать GETBOX как более "продвинутый" контрол ввода.
Там эти цвета встроены по умолчанию
 
[ BACKCOLOR <anBackColor> ] // * or <anBackColor, anReadOnlyBackColor, anAciveBackColor>


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



Пост N: 1424
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.04.17 12:05. Заголовок: Haz пишет // * or &..


Haz пишет
 цитата:
[ BACKCOLOR <anBackColor> ] // * or <anBackColor, anReadOnlyBackColor, anAciveBackColor>


или новыми командами
SET GETBOX FOCUS BACKCOLOR [TO <backcolor>]
SET GETBOX FOCUS FONTCOLOR TO <fontcolor>
тогда anAciveBackColor не используем


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



Пост N: 101
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 28.04.17 12:12. Заголовок: Dima пишет: Про это..


Dima пишет:

 цитата:
Про это речь ?



Понятно. Мы о разном.

Это работает, если на поле мышкой кликать. А если по полям бегать клавишами Tab или Enter, то активное поле имеет цвет белый на синем. И как эти цвета менять пока не нашел.

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



Пост N: 102
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 28.04.17 12:30. Заголовок: Haz пишет: GETBOX ..


Haz пишет:

 цитата:
GETBOX



Какой там курсор страшный. А можно его размерами управлять? И можно ли его вообще убрать? Наверное, можно. Пошел искать...

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



Пост N: 104
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 05.05.17 10:19. Заголовок: Посмотрел образцы ку..


Посмотрел образцы курсоров (мышиных). А можно его вообще убрать простым способом? Чтобы при вождении мышью вообще ничего не было видно (в смысле, курсор).

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


Пост N: 1452
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 05.05.17 11:24. Заголовок: rvu пишет: А можно ..


rvu пишет:

 цитата:
А можно его вообще убрать простым способом?


Добавить в событие ON MOUSEHOVER | ON MOUSEMOVE (для control/window соответственно) вызов FileCursor('')

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



Пост N: 105
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 10.05.17 18:19. Заголовок: Петр пишет: ON MOUS..


Петр пишет:

 цитата:
ON MOUSEMOVE



Открываю окно, развернутое на весь экран. Если курсор на программе стоит, то это срабатывает. А если он после открытия откуда-то пришел, то вполне себе бегает.

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


Пост N: 1457
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.05.17 19:32. Заголовок: rvu пишет: Если ку..


rvu пишет:

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



И что?

Читайте документацию WinAPI (в данном случае SetCursor):
FileCursor('') - это эквивалент SetCursor( NULL ).
И дальше уже сами определяйтесь, возможно придется обрабатывать события ON GOTFOCUS / ON LOSTFOCUS, откуда я знаю, что и откуда к вам приходит.


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


Пост N: 1458
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.05.17 19:40. Заголовок: rvu пишет: А можно..


rvu пишет:

 цитата:
А можно его вообще убрать простым способом? Чтобы при вождении мышью вообще ничего не было видно (в смысле, курсор).


Кстати такое поведение не является типичным для програм Windows, сответственно никакой волшебной функции по гашению курсора в MiniGUI нет. И, надеюсь, не будет.

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



Пост N: 106
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 12.05.17 15:27. Заголовок: Петр пишет: возмож..


Петр пишет:

 цитата:
возможно придется обрабатывать события ON GOTFOCUS / ON LOSTFOCUS




Наверное. Но вообще, спасибо, за подробное объяснение!

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



Пост N: 1439
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.05.17 17:40. Заголовок: rvu пишет А можно ег..


rvu пишет
 цитата:
А можно его вообще убрать простым способом? Чтобы при вождении мышью вообще ничего не было видно (в смысле, курсор).


Возможно речь о GetBox-ах в состоянии ReadOnly и перевод в рабочее состояние на время ввода ?

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



Пост N: 107
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 16.05.17 14:06. Заголовок: Нет, тут идея другая..


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

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



Пост N: 1444
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.05.17 16:22. Заголовок: rvu пишет Ну и что о..


rvu пишет
 цитата:
Ну и что он будет бегать перед клиентами, надо бы его как минимум из видимости убрать.


Так может разделить окна:
1 - для основного монитора с курсором
2 - для др. мониторов с Getbox ReadOnly
Ввели в 1-м данные, отобразили во 2-м.
Если это возможно разделить, не имел счастья раб. с неск. мониторами

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



Пост N: 108
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 16.05.17 16:43. Заголовок: Курсор-то по всему р..


Курсор-то по всему рабочему столу ходит. Я не то что окна, я программы разделил, одна для ввода, другая для показа.

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


Пост N: 1468
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 16.05.17 22:16. Заголовок: rvu пишет: Курсор-т..


rvu пишет:

 цитата:
Курсор-то по всему рабочему столу ходит.



Ну тогда вам сюда


Дополните c_cursor.c


 цитата:

#include "hbapiitm.h"

extern HB_EXPORT BOOL Array2Rect( PHB_ITEM aRect, RECT * rc );
extern HB_EXPORT PHB_ITEM Rect2Array( RECT * rc );

HB_FUNC( CLIPCURSOR )
{
RECT rc;

if( Array2Rect( hb_param( 1, HB_IT_ANY ), &rc ) )
hb_retl( ClipCursor( & rc ) ? HB_TRUE : HB_FALSE );
else
hb_retl( ClipCursor( NULL ) ? HB_TRUE : HB_FALSE );
}

HB_FUNC( GETCLIPCURSOR )
{
RECT rc;

hb_retl( GetClipCursor( &rc ) ? HB_TRUE : HB_FALSE );

hb_itemParamStoreRelease( 1, Rect2Array( &rc ) );
}


и перекомпилируйте библиотеку.

Пример использования

 цитата:

#include "minigui.ch"

Function Main

local oldRect := {0,0,0,0}
local newRect := {0,0,0,0}

DEFINE WINDOW Win_1 ;
CLIENTAREA 400, 400 ;
TITLE 'Hello World!' ;
WINDOWTYPE MAIN ;
ON INIT ;
( ;
GetClipCursor( @oldRect ), ;
GetWindowRect( ThisWindow.Handle, @newRect), ;
ClipCursor( @newRect ) ;
) ;
ON RELEASE ClipCursor( @oldRect )

END WINDOW

Win_1.Center
Win_1.Activate

Return Nil





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


Пост N: 1469
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 16.05.17 22:32. Заголовок: rvu пишет: Захотели..


rvu пишет:

 цитата:
Захотели подключить второй монитор к компьютеру, как информационное табло для клиентов компании.


И еще к вам один вопрос - пользуетесь ли вы встроенной в MiniGUI поддержкой работы с несколькими мониторами, насколько она удобна или неудобна?


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



Пост N: 109
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 17.05.17 14:08. Заголовок: Петр пишет: пользуе..


Петр пишет:

 цитата:
пользуетесь ли вы встроенной в MiniGUI поддержкой работы с несколькими мониторами




А я ничего про нее не знаю. Где посмотреть можно описание или примеры? Или какие команды смотреть?

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


Пост N: 1471
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 17.05.17 14:23. Заголовок: MiniGui\SAMPLES&..


MiniGui\SAMPLES\BASIC\Multi_Monitor


Процедуру ShowTxt можете изменить так

PROCEDURE ShowTxt( cText ) 

DEFINE WINDOW Form_1 ;
CLIENTAREA 800, 600 ;
TITLE 'Show output' ;
MODAL ;
ON INIT WindowToMonitor( ThisWindow.Handle, EnumDisplayMonitors()[1/*2*/][1] )


Что ж вы ChangeLog.txt не читаете


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



Пост N: 110
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 17.05.17 19:17. Заголовок: А я в пикселях задав..


А я в пикселях задавал расположение. Если монитор 2-й, а у первого ширина 1280 пикселей, то начинаю окно с 1281.

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



Пост N: 111
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 18.05.17 17:08. Заголовок: Петр пишет: Дополни..


Петр пишет:

 цитата:
Дополните c_cursor.c




Спасибо! Не знаю, то ли это, что в итоге потребуется, но очень здорово!

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



Пост N: 112
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 10.07.17 15:23. Заголовок: Опять у меня вопрос,..


Опять у меня вопрос, наверняка простой, но никак не найду способ. Высвечиваю переменную на экране:

@ 100,10 LABEL LABEL_D1 VALUE var1

потом она меняется, как ее на экране перерисовать?

Окно закрывать и делать снова? Наверняка есть более простой способ.

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




Пост N: 6492
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.07.17 15:34. Заголовок: какой то рефреш надо..


какой то рефреш надо сделать ему )

типа
Setproperty("SPR_REC","Message4","value",alltrim((o1:cAlias)->naim) )


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



Пост N: 1578
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.07.17 16:13. Заголовок: rvu пишет потом она ..


rvu пишет
 цитата:
потом она меняется, как ее на экране перерисовать?


По мне, лучше сразу разделять, генерация формы (контролы на оке) и заполнение их значениями, т.е.
@ 100,10 LABEL LABEL_D1 VALUE "" WIDTH nWidth
@ 100+This.LABEL_D1.Height+2 LABEL LABEL_D2 VALUE "" WIDTH nWidth
...
FUNC Refr( cForm )
Default cForm := ThisWindow.Name
_SetValue( "LABEL_D1", cForm, cValToChar((o1->cAlias)->NAIM) ) или
_SetValue( "LABEL_D2", cForm, cValToChar((o1->cAlias)->EDIZM) ) или
SetProperty( cForm, "LABEL_D1", "Value", cValToChar((o1->cAlias)->NAIM) )
SetProperty( cForm, "LABEL_D2", "Value", cValToChar((o1->cAlias)->EDIZM) )
и так по всем контролам формы, тогда в любом нужном месте вызываете Refr(cForm)
RETURN Nil


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





Пост N: 46
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 11.07.17 11:56. Заголовок: Мужики, а так разве ..


Мужики, а так разве не проще -

FORM_MAIN.LABEL_D1.VALUE := var2

где FORM_MAIN - имя текущего окна, var2 - новая переменная.

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



Пост N: 1579
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.07.17 14:19. Заголовок: Alex_Cher пишет а та..


Alex_Cher пишет
 цитата:
а так разве не проще


Вы привязались к конкретному названию окна, если окон много и все они содержат (в той или иной степени) одни и те же контролы, то проще This.LABEL_D1.Value := xValue, но иногда препроцессор, что то не понимает и приходится писать функциями, поэтому чтобы не заморачиваться, сразу пишешь функции. А при повторяющихся действиях собираешь в общую ф-ию и передаешь в нее имя окна. Все по ситуации.

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




Пост N: 6536
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.08.17 13:32. Заголовок: Есть таймер DEFINE T..


Есть таймер DEFINE TIMER Timer_1 OF Form1 INTERVAL 100 ACTION TimerProc()
Как на лету сменить INTERVAL со 100 на 300 скажем ?


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




Пост N: 5482
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.08.17 16:32. Заголовок: Попробуй через ..


Попробуй через
 SetProperty("Form1", "Timer_1", "Interval", 300 )


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




Пост N: 6537
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.08.17 16:43. Заголовок: Andrey Не работает ..


Andrey
Не работает , уже чекал так

Можно конечно убить таймер и снова создать но с новым Interval


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


Пост N: 1547
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.08.17 17:37. Заголовок: Dima пишет: Есть т..


Dima пишет:

 цитата:

Есть таймер DEFINE TIMER Timer_1 OF Form1 INTERVAL 100 ACTION TimerProc()
Как на лету сменить INTERVAL со 100 на 300 скажем ?



Form1.Timer_1.Value := 300

MiniGUI "убьет" таймер и создат новый сама

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




Пост N: 6539
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.08.17 17:55. Заголовок: Петр пишет: Form1.T..


Петр пишет:

 цитата:
Form1.Timer_1.Value := 300


Упало на _SETVALUE

PS
MiniGUI Extended Edition 16.10

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




Пост N: 1174
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 28.08.17 10:14. Заголовок: Dima пишет: Упало н..


Dima пишет:

 цитата:
Упало на _SETVALUE


Это не так

Проверил на простом примере ниже
#include "minigui.ch" 

Function Main

DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 400 ;
HEIGHT 400 ;
TITLE 'Timer Test' ;
MAIN

@ 10,10 LABEL Label_1

DEFINE TIMER Timer_1 ;
INTERVAL 1000 ;
ACTION Form_1.Label_1.Value := Time()

DEFINE TIMER Timer_2 ;
INTERVAL 2500 ;
ACTION PlayBeep()

END WINDOW

Form_1.Timer_1.Value := 300

Form_1.Center

Form_1.Activate

Return Nil


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




Пост N: 5486
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.08.17 10:26. Заголовок: Dima пишет: PS Mini..


Dima пишет:

 цитата:
PS
MiniGUI Extended Edition 16.10


Наверное у него старая версия...

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




Пост N: 6542
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.08.17 13:16. Заголовок: Andrey пишет: Навер..


Andrey пишет:

 цитата:
Наверное у него старая версия...


Так и есть.

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



Пост N: 127
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 29.01.18 13:04. Заголовок: Не найду как сделать..


Не найду как сделать новое окно без иконки. У меня из главного окна вызываются еще окна, к каждому появляется иконка. Мне они не нужны, нужна только иконка главного окна.

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




Пост N: 6708
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.01.18 13:15. Заголовок: rvu NOSYSMENU при о..


rvu
NOSYSMENU при объявлении окна

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



Пост N: 128
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 29.01.18 13:23. Заголовок: Dima пишет: NOSYSME..


Dima пишет:

 цитата:
NOSYSMENU при объявлении окна




Почему-то все равно значок появляется.

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




Пост N: 6709
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.01.18 13:34. Заголовок: rvu Пардоньте :) NO..


rvu
Пардоньте :)
NOSIZE NOSYSMENU

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


Пост N: 765
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 29.01.18 13:34. Заголовок: Значит в определении..


Значит в определении окна написано что-то подобное
[quote
....
TITLE "Трата та" ;
ICON mainIco ;

`

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



Пост N: 129
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 29.01.18 13:37. Заголовок: Вставил CHILD у не г..


Вставил CHILD у не главных окон и иконки пропали.

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



Пост N: 130
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 29.01.18 13:41. Заголовок: А как отменить закры..


А как отменить закрытие окон по Alt+F4?

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




Пост N: 6710
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.01.18 13:49. Заголовок: rvu При объявлении ..


rvu
При объявлении окна сделать например ON INTERACTIVECLOSE {|| .F. }

PS
Почитать что делает SET INTERACTIVECLOSE

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



Пост N: 131
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 29.01.18 13:52. Заголовок: Dima пишет: При объ..


Dima пишет:

 цитата:
При объявлении окна сделать например ON INTERACTIVECLOSE {|| .F. }




Не помогло...

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



Пост N: 132
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 29.01.18 13:58. Заголовок: Dima пишет: Почитат..


Dima пишет:

 цитата:
Почитать что делает SET INTERACTIVECLOSE



Спасибо!

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



Пост N: 133
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 19.02.18 13:38. Заголовок: А можно делать окна ..


А можно делать окна с прокруткой?
Хочу сделать большое окно, которое будет заведомо больше экрана.

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



Пост N: 1762
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.02.18 14:25. Заголовок: rvu пишет А можно де..


rvu пишет
 цитата:
А можно делать окна с прокруткой?

 
[ VIRTUAL WIDTH <vWidth> ] ;
[ VIRTUAL HEIGHT <vHeight> ] ;


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



Пост N: 1763
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.02.18 14:58. Заголовок: PS пример SAMPLES ..


PS
пример SAMPLES\BASIC\VIRTUALDIM

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




Пост N: 5730
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.02.18 15:47. Заголовок: Пример VirtualWinVs..


Пример VirtualWinVscroll2 (События и обработчики событий в МиниГуи) в http://abonent4.ru/minigui/


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



Пост N: 134
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 19.02.18 16:34. Заголовок: SergKis пишет: прим..


SergKis пишет:

 цитата:
пример SAMPLES\BASIC\VIRTUALDIM



Уже смотрю. Пытаюсь понять для каких окон это подходит. Наивная попытка подставить к любому окну не удалась. ))

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



Пост N: 139
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 08.03.18 16:28. Заголовок: А как можно поменять..


А как можно поменять сообщения, типа "Close not allowed" на свое? Посмотрел, оно берется из библиотеки minigui.lib

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



Пост N: 1775
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.03.18 16:42. Заголовок: rvu пишет А как можн..


rvu пишет
 цитата:
А как можно поменять сообщения, типа


Так
_HMG_MESSAGE [3] := 'Close not allowed'
см. h_init.prg
PROCEDURE InitMessages

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




Пост N: 6754
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.03.18 17:07. Заголовок: rvu пишет: Посмотре..


rvu пишет:

 цитата:
Посмотрел, оно берется из библиотеки minigui.lib


Лучше бы с помощью FAR поиск по сырцам устроил и вышел бы
на _HMG_MESSAGE [3] := 'Close not allowed' как SergKis и ответил.

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



Пост N: 141
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 31.07.18 11:37. Заголовок: Вопрос такой: интерф..


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

Базы с информацией делаю в UTF-8, а саму программу как делать?

Вопрос появился, собственно, потому что написал я пробную программу, сохранил файл программы в UTF-8, на экране вместо русского крякозябры.
Способы, которыми решались проблемы с кодировками 1251 и 866 не помогают. Куда копать хоть? Искать дальше возможность написания текста программы в UTF-8 или писать ее в 1251, а потом искать, как в ней иностранный текст показывать?

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




Пост N: 1335
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.07.18 11:38. Заголовок: rvu пишет: писать е..


rvu пишет:

 цитата:
писать ее в 1251, а потом искать, как в ней юникодный текст показывать?


Да.
Посмотри готовый пример в папке samples\Advanced\PdfView - как в нем организован вывод интерфейсных строк на русском языке

Подсказка:

 цитата:
hb_Translate( cText, "UTF8", "CP1251" )



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



Пост N: 206
Зарегистрирован: 19.05.05
ссылка на сообщение  Отправлено: 31.07.18 12:21. Заголовок: Мне кажется, или все..


Мне кажется, или все же правда, что когда указать use ... codepage 'UTF8'
то Harbour сам будет выполнять перекодировку меж базой и программой?
и не надо никаких телодвижений с hb_Translate ?

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



Пост N: 1952
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.07.18 15:05. Заголовок: rvu пишет Искать дал..


rvu пишет
 цитата:
Искать дальше возможность написания текста программы в UTF-8 или писать ее в 1251


Если инф. в базе для разных языков возможна в одном поле, то решения нормального не будет, иначе:
- если текст программы только на русском, оставляйте 1251.
- базу не помечайте codepage 'UTF8', но инф. в ней utf8 (кодируем при записи из опред. языка)
- декодируем по hb_Translate для нужного языка из опред. полей
- для показа инф. языков создаем фонты с CHARSET и уст. фонт опред. языка контролу или колонке TsBrowse
- если необходимо надписи\подсказки, то храним их в utf8 файлах (формата ini) с расширеинем языка .RU, .LT, .EN, ...


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



Пост N: 1953
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.07.18 15:12. Заголовок: PS Пример по исп. CH..


PS
Пример по исп. CHARSET фонтов тут https://my-files.ru/dofcn3
Пост 1940 из темы http://clipper.borda.ru/?1-1-0-00000532-000-60-0-1533019939

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



Пост N: 154
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 28.03.19 15:34. Заголовок: Хочется сделать крес..


Хочется сделать крестик для закрытия окон неактивным.
Пишу SET INTERACTIVECLOSE OFF - у окон CHILD это работает, а у окна MAIN продолжает быть активным, разве что при нажатии на него выдает, что так нельзя закрыть программу.
А можно ли убрать активность и там?
Подумалось, что можно сделать главное меню MAIN NOSHOW, а все видимые окна CHILD. Попробую так. Но может есть способ поизящнее?

И можно ли распространить этот SET INTERACTIVECLOSE OFF только на одно CHILD окно, оставив у остальных и у главного активность? Мне не удалось так сделать.

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



Пост N: 2296
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.03.19 16:54. Заголовок: для main можно делат..


для main можно делать без сообщения, но с X на окне
PUBLIC lMain_Close := .F.
DEWINE WINDOW ... MAIN ... ;
ON INTERACTIVECLOSE lMain_Close
...
по кнопке "Завершить" с ACTION ( lMain_Close := .T., ThisWindow.Release )

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



Пост N: 2297
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.03.19 16:56. Заголовок: PS с любого окна мож..


PS
с любого окна можно поставить lMain_Close := .T. и завершить программу

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



Пост N: 155
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 29.03.19 15:38. Заголовок: А можно изменить сво..


А можно изменить свойства TITLE в окне? Размер шрифта, например?

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




Пост N: 6223
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.03.19 15:52. Заголовок: rvu пишет: А можно ..


rvu пишет:

 цитата:
А можно изменить свойства TITLE в окне?


Справка по МиниГуи.
Set / Gets title of a window.. 

SYNTAX
Pseudo-OOP:

Set:
<WindowName>.Title := cTitle
Get:
<WindowName>.Title --> cTitle

Function syntax:
Set:
SetProperty ( <WindowName>,Title := cTitle )
Get:
GetProperty ( <WindowName>, Title ) --> cTitle


rvu пишет:

 цитата:
Размер шрифта, например?


ТОЛЬКО через настройки самой Винды.

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



Пост N: 2305
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.03.19 16:03. Заголовок: rvu Посмотрите Chan..


rvu
Посмотрите ChangeLog.txt
2018/06/06: HMG Extended Edition version 18.05.
и в указанный пример добавьте команду и соберите
 
END BUTTON

SET TITLEBAR HEIGHT TO 80

END WINDOW

CENTER WINDOW Win1

ACTIVATE WINDOW Win1


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



Пост N: 2306
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.03.19 16:07. Заголовок: PS при запуске имейт..


PS
при запуске имейте еще загруженные программы или Far, для интереса

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



Пост N: 35
Зарегистрирован: 20.10.15
ссылка на сообщение  Отправлено: 29.03.19 23:43. Заголовок: Добрый вечер всем! М..


Добрый вечер всем!
Может, кто подскажет дедушке, можно ли в функции FD81() каким-нибудь GetProperty
Получить текстовку 'бла-бла' ??

DEFINE WINDOW TEMPLATE AT 174 , 239 WIDTH Xwidth HEIGHT Xheight ;
TITLE Xtitle MAIN ICON "FDmain" NOMAXIMIZE
DEFINE MAIN MENU
DEFINE POPUP "Входные данные"
IF Xpredpr = 80
MENUITEM 'бла-бла' ACTION FD81()
MENUITEM 'Особисти карткi ЛПХ' ACTION FD_list(15)

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



Пост N: 2307
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.03.19 15:16. Заголовок: mshep ... MENUITEM ..


mshep
...
MENUITEM 'бла-бла' ACTION FD81() NAME _101
MENUITEM 'Особисти карткi ЛПХ' ACTION FD_list(15) NAME _102
...
FUNC FD81()
MsgInfo(ThisWindow.Name + CRLF + This.Name + CRLF + This.Caption)
RETURN
FUNC FD_list(nMode)
MsgInfo(ThisWindow.Name + CRLF + This.Name + CRLF + This.Caption)
RETURN

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



Пост N: 36
Зарегистрирован: 20.10.15
ссылка на сообщение  Отправлено: 30.03.19 17:11. Заголовок: Нее... Из экранной ..


Нее... Из экранной формы все котит, а из DEFINE MAIN MENU -
там же не Button, надписи нет... (((
Дает FDMain, DummyMenuName9, ""
Через MESSAGE не берет, как к текстовке обращаться...

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



Пост N: 2308
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.03.19 18:34. Заголовок: тогда так Define..


тогда так
 
Define main menu

Popup 'File'

Item 'Open' Action MsgInfo ( This.Name+CRLF+_HMG_aControlCaption[ This.Index ] ) NAME _101
...

NAME добавьте, с ним лучше чем с Dummy...

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



Пост N: 37
Зарегистрирован: 20.10.15
ссылка на сообщение  Отправлено: 30.03.19 22:45. Заголовок: Пасибки, уже ближе...


Пасибки, уже ближе. Только This.Index там почему-то нет, что-то другое надо. This.value тоже не идет... (((

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



Пост N: 2309
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.03.19 22:57. Заголовок: mshep Хорошо бы пол..


mshep
Хорошо бы полный тест. Мой на базе BASIC\Menu\menudemo.prg
 
Define window Form_1 ;
At 0, 0 ;
Width 400 ;
Height 200 ;
Title 'Menu Test' ;
Icon 'Demo.ico' ;
Main ;
NotifyIcon 'Demo.ico'

Define main menu

Popup 'File'

Item 'Open' Action MsgInfo ( This.Name+CRLF+_HMG_aControlCaption[ This.Index ] ) NAME _101
Item 'Save' Action MsgInfo ( This.Name+CRLF+hb_ntos(This.Index) ) NAME _102
Item 'Print' Action MsgInfo ( This.Name+CRLF+hb_ntos(This.Index) ) NAME _103
Item 'Save As...' Action MsgInfo ( This.Name+CRLF+hb_ntos(This.Index) )
Separator
Item 'Exit' Action Form_1.Release Image 'Exit.Bmp' Default

End Popup
...
выдает все как запрошено


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



Пост N: 38
Зарегистрирован: 20.10.15
ссылка на сообщение  Отправлено: 31.03.19 00:36. Заголовок: Понятно все... На В..


Понятно все... На Вашем примере у меня:
Harbour 3.2.0dev (r1509181115)
Copyright (c) 1999-2015, http://harbour-project.org/
C:\MiniGUI\IDE\FDmax07\FDMain.fmg(5) Error E0030 Syntax error "syntax error at '.'"
C:\MiniGUI\IDE\FDmax07\FDMain.fmg(6) Error E0030 Syntax error "syntax error at '.'"
C:\MiniGUI\IDE\FDmax07\FDMain.fmg(7) Error E0030 Syntax error "syntax error at '.'"
C:\MiniGUI\IDE\FDmax07\FDMain.fmg(8) Error E0030 Syntax error "syntax error at '.'"
4 errors
IDE у меня еще 15 год..... Значит, позже все эти фички появились.....

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



Пост N: 2310
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.03.19 00:49. Заголовок: mshep В своей верси..


mshep
В своей версии используйте вместо This. конкретное имя окна, к примеру
Item 'Open' Action MsgInfo ( Form_1.Name+CRLF+_HMG_aControlCaption[ Form_1.Index ] ) NAME _101

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



Пост N: 2311
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.03.19 06:32. Заголовок: ЗЫ Чуть погорячился ..


ЗЫ
Чуть погорячился в ночи (написанное для формы), через индекс контрола добывать в Вашей версии надо
Item 'Open' Action MsgInfo ( _HMG_aControlCaption[ Form_1._101.Index ] ) NAME _101
или переменные (подсветите их в функциях)
_HMG_ThisFormIndex
_HMG_ThisType
_HMG_ThisIndex
_HMG_ThisFormName
_HMG_ThisControlName
+ переменные контрола _HMG_aControl...

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



Пост N: 39
Зарегистрирован: 20.10.15
ссылка на сообщение  Отправлено: 01.04.19 20:20. Заголовок: Да уже закачал свеже..


Да уже закачал свежее, все здесь пошло теперь, спасибо.
Зато фички в старой программе начались:
Раньше для Excel работало
oEx:Cells(rc,1):SET( 'NumberFormat', '#####0') , теперь приходится:
oEx:Cells(rc,1):NumberFormat := '#####0'
Для ворда раньше работало для таблицы
oRow:Cells[05]:Font:Bold := .T. , теперь –
Error WINOLE/1009 Метод не экспортирован: FONT (DOS Error -2147352570
Called from TOLEAUTO:FONT(0)
<BR>
Called from OT33_WORD(159) in module: ot33_word.prg
Чего еще ждать?? (((

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




Пост N: 7031
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.04.19 21:12. Заголовок: mshep пишет: Чего е..


mshep пишет:

 цитата:
Чего еще ждать?? (((


хз

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


Пост N: 1445
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 01.04.19 22:33. Заголовок: mshep пишет: Чего е..


mshep пишет:

 цитата:
Чего еще ждать?? (((


Не так многого. К примеру присвоение пустой даты заканчивается вылетом. Может еще чего по мелочи, уже не помню.
Это не такая уж большая плата за замену усторевшей и более не поддерживаемой библиотеки, на обновляемую из поставки харбура.

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



Пост N: 40
Зарегистрирован: 20.10.15
ссылка на сообщение  Отправлено: 02.04.19 12:05. Заголовок: Ну да..... Exeшники..


Ну да..... Exeшники тоже на 7-8 процентов в размере подросли.....
Какой-нибудь добрый человек бросит еще дедешке назначение цвета фона, Bold'а и проч для ячейки в таблице Word по-новому?
Haz пишет:

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


Это в смысле Dt = CTOD(Space(8)) типа?

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


Пост N: 1446
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 02.04.19 12:16. Заголовок: mshep пишет: Это в ..


mshep пишет:

 цитата:
Это в смысле Dt = CTOD(Space(8)) типа?


да примерно так , только я использовал CTOD("")

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



Пост N: 2315
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.19 13:19. Заголовок: mshep пишет назначен..


mshep пишет
 цитата:
назначение цвета фона, Bold'а и проч для ячейки в таблице Word по-новому?


Посмотрите пример Advanced\Tsb_Export, там 2а пункта меню "Export" для Wordа

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



Пост N: 41
Зарегистрирован: 20.10.15
ссылка на сообщение  Отправлено: 02.04.19 21:57. Заголовок: Haz пишет: да приме..


Haz пишет:

 цитата:
да примерно так , только я использовал CTOD("")



В те старые времена, когда я увидел Clipper, было принято писать так. И не думать лишнего...

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


Пост N: 1447
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 02.04.19 23:11. Заголовок: mshep пишет: В те с..


mshep пишет:

 цитата:
В те старые времена, когда я увидел Clipper


Вот с тех времен так и пишу

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



Пост N: 42
Зарегистрирован: 20.10.15
ссылка на сообщение  Отправлено: 06.04.19 21:48. Заголовок: Мы в разных котелках..


Мы в разных котелках варились..... ((( У меня персоналки и клиппер - последняя лебединная песня после М33М,М32 (не путать категорически с предыдущим - абс разн система команд!!), АСВТ, ЕС, PDP, СМ1420(?), снова ЕС, персоналки+ЕС и потом своб поиск. В определенном возрасте какой-то штамп забивается в голову и потом его уже не выкурить... (((
А Tsb_Export из примеров у меня не пошел - что-то типа переполнения, отгуляю Благовещение и посмотрю....
Ох, доживете вы, ребята, до той поры, когда лень и в падлу что-то рассматривать и думать, у меня уже с десяток лет такое... (((

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



Пост N: 43
Зарегистрирован: 20.10.15
ссылка на сообщение  Отправлено: 06.04.19 21:50. Заголовок: P.S.. Минск 22М коне..


P.S.. Минск 22М конечно, клешни уже не попадают по фишкам... (((

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




Пост N: 6231
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.04.19 21:37. Заголовок: mshep пишет: Какой-..


mshep пишет:

 цитата:
Какой-нибудь добрый человек бросит еще дедешке назначение цвета фона, Bold'а и проч для ячейки в таблице Word по-новому?



Вот ссылки по Ворду и Экселю
http://hmgextended.com/applications.html

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



Пост N: 165
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 13.04.19 16:23. Заголовок: Dima пишет: Собстве..


Dima пишет:

 цитата:
Собственно идея взята тут C:\MiniGUI\SAMPLES\Advanced\IsExeRunning\demo.prg
Вторую копию проги не запустить.



Примера с таким названием уже нет, но неважно, я, наверное, нечто подобное использую, тоже из какого-то примера взял:

hWnd := FindWindowEx( ,,, cAppTitle )
if hWnd # 0
iif( IsIconic( hWnd ), _Restore( hWnd ), SetForeGroundWindow( hWnd ) )
ExitProcess( 0 )
endif

Но запустить много раз программу удается, обнаружилось это случайно. Таким путем: программу запускают из FARа, он активен, курсор стоит на программе. От компьютера отошли надолго. Его диск по неактивности отключился, потом пришли и нажали Enter много раз пока диск раскручивался. Получили много запущенных копий программ. Как я понял, они параллельно запускаются практически одновременно и обработка за этим не поспевает, при запуске у всех этих программ hWnd=0. Кто-нибудь с этим сталкивался, боролся? Готовые решения есть?

Запускать процедуру, которая через пару секунд будет анализировать эти окна? Но этих процедур тогда тоже будет запущено столько же, сколько и окон. Я впал в задумчивость. На форуме проблема закрытия окон поднималась много раз, может быть, кто-то уже об этом думал?

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




Пост N: 6249
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.04.19 17:14. Заголовок: rvu пишет: Примера ..


rvu пишет:

 цитата:
Примера с таким названием уже нет,


Есть, Григорий делал - C:\MiniGUI\SAMPLES\BASIC\SPLASHDEMO_3
В этом примере если есть такое окно, то оно поднимается на экран, а запускаемая новая прога завершается.

Попробуй ещё вот такое в программе:
   _HMG_MESSAGE[4] := "Попытка запуска второй копии программы:" + CRLF + ;  
App.ExeName + CRLF + ;
"Отказано в запуске." + CRLF + _HMG_MESSAGE[4]
SET MULTIPLE OFF WARNING

Ставить сражу же после объявления переменных в MAIN, до вызова всех функций и открытия файлов !!!

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



Пост N: 166
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 13.04.19 17:32. Заголовок: Andrey пишет: В это..


Andrey пишет:

 цитата:
В этом примере если есть такое окно, то оно поднимается на экран, а запускаемая новая прога завершается.



Так и у меня то же самое. И я написал как это обойти. Сейчас посмотрю, как его программа отрабатывает этот момент.

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




Пост N: 6250
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.04.19 17:37. Заголовок: rvu пишет: Так и у ..


rvu пишет:

 цитата:
Так и у меня то же самое. И я написал как это обойти.


Я не смог это обойти.

Попробуй пример Григория у себя.
Я тоже много времени убил на это.
Порядок вызовов функций очень важен !
Может у тебя в программе не так сделано.

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



Пост N: 2343
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.04.19 18:04. Заголовок: rvu пишет Примера с ..


rvu пишет
 цитата:
Примера с таким названием уже нет


Есть SAMPLES\Applications\Reservation

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


Надо получить ответ
- можно ли запускать программу с разных каталогов (разные базы) ?
- можно ли запускать программу с параметрами для выполнения ветки, к примеру ActiveX или еще какой режим (выполняя ShellExecute того же exe)
Если все это надо, то хорошо исп. мутексы ( в примере вышеуказанном есть)/
К примеру берем полный ExeName, меняем в нем спец сиволы на "_", добавляем ключевые слова (к примеру имя ini или команда\режим) и делаем mutex как в примере. Что бы не засорятся сообщениями повторный запуск без сообщений, просто выход без анализов и поднятий окон (мне так нравится)

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



Пост N: 2344
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.04.19 18:20. Заголовок: PS Пример лога с мут..


PS
Пример лога с мутексомб выделено цветом
 
16.01.19 16:35:00. LetoStart has been started. C__BK8_LETODB_LETO2011_04_21_BIN_LETO2011
16.01.19 16:35:00: Leto DB Server has been started.
22.01.2019 08:48:16: Leto DB Server has been closed.
22.01.19 08:48:17. LetoStart has been closed.
23.01.19 08:34:15. LetoStart has been started. C__BK8_LETODB_LETO2011_04_21_BIN_LETO2011
23.01.19 08:34:15: Leto DB Server has been started.
05.02.19 09:47:00. LetoStart has been started. C__BK8_LETODB_LETO2011_04_21_BIN_LETO2011
05.02.19 09:47:00: Leto DB Server has been started.
12.02.2019 21:31:23: Leto DB Server has been closed.
12.02.19 21:31:24. LetoStart has been closed.
04.03.19 15:26:54. LetoStart has been started. C__BK8_LETODB_LETO2011_04_21_BIN_LETO2011
04.03.19 15:26:54: Leto DB Server has been started.
13.03.2019 18:21:35: Leto DB Server has been closed.
13.03.19 18:21:37. LetoStart has been closed.
03.04.19 12:57:59. LetoStart has been started. C__BK8_LETODB_LETO2011_04_21_BIN_LETO2011
03.04.19 12:57:59: Leto DB Server has been started.


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



Пост N: 167
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 13.04.19 18:45. Заголовок: Andrey пишет: _H..


Andrey пишет:

 цитата:
_HMG_MESSAGE[4] := "Попытка запуска второй копии программы:" + CRLF + ;
App.ExeName + CRLF + ;
"Отказано в запуске." + CRLF + _HMG_MESSAGE[4]
SET MULTIPLE OFF WARNING



Вот это, похоже, помогло сразу.

SergKis пишет:

 цитата:
- можно ли запускать программу с разных каталогов (разные базы) ?
- можно ли запускать программу с параметрами для выполнения ветки, к примеру ActiveX или еще какой режим (выполняя ShellExecute того же exe)



Ни того, ни другого не надо.

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



Пост N: 168
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 13.04.19 21:10. Заголовок: Andrey пишет: _HMG_..


Andrey пишет:

 цитата:
_HMG_MESSAGE



А вот, кстати, в разных информационных сообщения английский язык. Я могу, конечно, изменить h_init.prg, но в нем же предусмотрена и русская страница.

REQUEST HB_LANG_RUWIN я в программу вписал, не помогло.

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



Пост N: 2345
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.04.19 22:18. Заголовок: rvu пишет А вот, кст..


rvu пишет
 цитата:
А вот, кстати, в разных информационных сообщения английский язык


Вроде рус. язык сообщения устанавливаются, сообщения из массивов на русском Скрытый текст


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



Пост N: 169
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 13.04.19 22:35. Заголовок: SergKis пишет: ..


SergKis пишет:

 цитата:

SET CODEPAGE TO RUSSIAN
SET LANGUAGE TO RUSSIAN



Это уже помогло.

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



Пост N: 2346
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.04.19 22:42. Заголовок: rvu пишет Это уже по..


rvu пишет
 цитата:
Это уже помогло


Если не помогло, то
SET CODEPAGE TO RUSSIAN
SET LANGUAGE TO RUSSIAN

Init()

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



Пост N: 170
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 14.04.19 09:08. Заголовок: Andrey пишет: _HMG_..


Andrey пишет:

 цитата:
_HMG_MESSAGE[4] := "Попытка запуска второй копии программы:" + CRLF + ;
App.ExeName + CRLF + ;
"Отказано в запуске." + CRLF + _HMG_MESSAGE[4]




Русский язык в сообщениях появился, но здесь title "Stop". Как здесь вызвать MsgStop со своими параметрами? Передать ему не только сообщение, но и title.

Или, если возможно, вообще установить ему свой title по умолчанию.

В файле h_msgbox.prg я этот title заменил, это несложно. Но просто интересно, может можно это сделать другим способом.

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



Пост N: 2347
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.04.19 12:52. Заголовок: rvu пишет может можн..


rvu пишет
 цитата:
может можно это сделать другим способом.


По идее, надо бы добавить в языковый массив
_HMG_MESSAGE [10] := 'Attention'
_HMG_MESSAGE [11] := 'Information'
_HMG_MESSAGE [12] := 'Stop'
и применить в Msg...(), Hmg_Alert()
или добавлять в своей проге, к примеру в Init2() тексты в массив, используя в своих же функциях, к примеру, MyMsg...(), как комплект на базе Msg...() и исп. их со значениями Default Title := ... из массива

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




Пост N: 1492
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.04.19 11:38. Заголовок: SergKis пишет: доб..


SergKis пишет:

 цитата:
добавить в языковый массив
_HMG_MESSAGE [10] := 'Attention'
_HMG_MESSAGE [11] := 'Information'
_HMG_MESSAGE [12] := 'Stop'
и применить в Msg...(), Hmg_Alert()


Благодарю за подсказку
Сделал

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

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