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




Пост 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 
ПрофильЦитата Ответить
Ответов - 289 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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 
ПрофильЦитата Ответить
администратор




Пост 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 
ПрофильЦитата Ответить
администратор




Пост 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 
ПрофильЦитата Ответить
администратор




Пост 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 
ПрофильЦитата Ответить
администратор




Пост 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 
ПрофильЦитата Ответить
администратор




Пост 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 
ПрофильЦитата Ответить
администратор




Пост 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 
ПрофильЦитата Ответить





Пост N: 185
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 15.11.19 07:45. Заголовок: rvu пишет: SET INTE..


rvu пишет:

 цитата:
SET INTERACTIVECLOSE OFF - у окон CHILD это работает, а у окна MAIN продолжает быть активным, разве что при нажатии на него выдает, что так нельзя закрыть программу.



А как сделать, чтобы вместо стандартного окна Стоп выполнялась моя собственная процедура?

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





Пост N: 187
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 26.11.19 15:48. Заголовок: Такой вопрос: Делаю ..


Такой вопрос:
Делаю LISTBOX, хочу чтобы при нажатии на отдельно стоящую кнопку BUTTON его содержимое менялось. Как это сделать?
Первая мысль была, что-то вроде: SetProperty(ThisWindow.Name, "List_1" , "ITEMS", aList0), но так это не работает.
Дальше мысли вообще менять окно, но как-то это муторно, наверное есть простой способ, который я не нашел.

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




Пост N: 1505
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.11.19 16:27. Заголовок: rvu пишет: наверно..


rvu пишет:

 цитата:
наверное есть простой способ, который я не нашел.


Удалить все элементы form_1.ListBox_1.DeleteAllItems и добавить по одному новые form_1.ListBox_1.AddItem( 'new item1' ) ) ... form_1.ListBox_1.AddItem( 'new item2' ) ) ...

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




Пост N: 6521
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.11.19 20:28. Заголовок: rvu пишет: хочу что..


rvu пишет:

 цитата:
хочу чтобы при нажатии на отдельно стоящую кнопку BUTTON его содержимое менялось. Как это сделать?


На кнопку вешаешь вызов:
  ACTION {|| UpdateList2() }

И ставишь готовую функцию свою (в качестве примера считывание файлов по маске):
FUNCTION UpdateList2() 
LOCAL aDimDir, nI, cFile

// Считываю массив DBF-файлов ...
aDimDir := Directory( M->cPubPathTo + "*.dbf" )
aDirTo := {}
IF Len( aDimDir ) > 0
FOR nI := 1 TO Len( aDimDir )
cFile := aDimDir[ nI, 1 ]
AAdd( aDirTo, cFile )
NEXT
ENDIF

FormaMain.List_2.DeleteAllItems()

IF Len(aDirTo)>0
FOR nI:=1 TO Len(aDirTo)
FormaMain.List_2.AddItem(ADirTo[nI])
Next
ENDIF

RETURN Nil


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




Пост N: 1506
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.11.19 21:12. Заголовок: Andrey пишет: Forma..


Andrey пишет:

 цитата:
FormaMain.List_2.DeleteAllItems()
IF Len(aDirTo)>0
FOR nI:=1 TO Len(aDirTo)
FormaMain.List_2.AddItem(ADirTo[nI])
Next
ENDIF


Можно проще двумя строчками
 
FormaMain.List_2.DeleteAllItems()
Aeval( aDirTo, { ¦e¦ FormaMain.List_2.AddItem(e)})

Да и всю эту функцию можно в этот Aeval засунуть. Расписывать по действиям конечно нагляднее, но не всегда оптимально.

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




Пост N: 6523
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.11.19 21:29. Заголовок: Haz пишет: Можно пр..


Haz пишет:

 цитата:
Можно проще двумя строчками


Согласен. Это конечно лучше.
Свой код писал ещё в 2016, когда начинал разбираться с МиниГуи.
Только проверку нужно на нулевой массив сделать.

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




Пост N: 1507
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.11.19 21:31. Заголовок: Andrey пишет: Тольк..


Andrey пишет:

 цитата:
Только проверку нужно на нулевой массив сделать.

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

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





Пост N: 188
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 26.11.19 21:57. Заголовок: Спасибо всем откликн..


Спасибо всем откликнувшимся! Заработало.

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





Пост N: 189
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 27.11.19 09:57. Заголовок: Я как-то про UTF8 уж..


Я как-то про UTF8 уже спрашивал. С русским понятно:

gfilatov2002 пишет:

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



А как всякие знаки показывать? Стрелочки, например?

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




Пост N: 6527
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.11.19 10:04. Заголовок: rvu пишет: А как вс..


rvu пишет:

 цитата:
А как всякие знаки показывать? Стрелочки, например?



Смотри пример MiniGUI\SAMPLES\BASIC\ScreenMode
Там кнопка со значком папки.

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





Пост N: 190
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 27.11.19 11:10. Заголовок: Andrey пишет: Там к..


Andrey пишет:

 цитата:
Там кнопка со значком папки.



Да, все гениальное просто, и UTF даже не нужна.

А дальше хотелось поместить на кнопку надпись со стрелкой. А это разные шрифты. Так можно? Там же фонт сразу для всей кнопки задается.

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




Пост N: 6528
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.11.19 11:36. Заголовок: rvu пишет: А дальше..


rvu пишет:

 цитата:
А дальше хотелось поместить на кнопку надпись со стрелкой. А это разные шрифты. Так можно? Там же фонт сразу для всей кнопки задается.


Я не знаю, можно ли задать 2 шрифта на одной кнопке,
но на кнопке можно задать иконку и текст одновременно.
Это самый простой и лучший вариант.

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





Пост N: 191
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 28.11.19 11:40. Заголовок: Andrey пишет: на кн..


Andrey пишет:

 цитата:
на кнопке можно задать иконку и текст одновременно.
Это самый простой и лучший вариант.



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

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




Пост N: 6529
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.11.19 12:00. Заголовок: rvu пишет: Могут бы..


rvu пишет:

 цитата:
Могут быть проблемы, если пользователю разрешено менять размер шрифта.


Задай автоматом максимальный шрифт на кнопках и запрети юзеру это делать.
Как это сделать смотри пример MiniGUI\SAMPLES\BASIC\ButtonEx_DynamicMenu

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





Пост N: 192
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 29.11.19 12:45. Заголовок: Можно ухватить мышко..


Можно ухватить мышкой окно за край и менять его размер. А можно ли соответственно менять LISTBOX? Т.е. чтобы он при расширении окна тоже расширялся или сужался?

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




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


rvu пишет
 цитата:
А можно ли соответственно менять LISTBOX? Т.е. чтобы он при расширении окна тоже расширялся или сужался?


Поищите в примерах ON SIZE, будет много вариантов, к примеру такой BASIC\DirSelect\...
Меняте от размера клиентской части окна размеры ListBox

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





Пост N: 193
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 29.11.19 14:21. Заголовок: SergKis пишет: к пр..


SergKis пишет:

 цитата:
к примеру такой BASIC\DirSelect\...



Здорово!

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





Пост N: 219
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 11.02.20 16:22. Заголовок: В окне отображается ..


В окне отображается какой-то текст, допустим, LABEL-ами. Хочу что-то из него скопировать, но нет, текст мышкой даже не выделяется. То же с окнами ошибок, что совсем неудобно. А можно сделать, чтобы выделялся и копировался?

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




Пост N: 3053
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.02.20 21:35. Заголовок: rvu А можно сделать,..


rvu
 цитата:
А можно сделать, чтобы выделялся и копировался?


Самое простое для label назначить
 
[ <dummy2: ACTION, ON CLICK, ONCLICK> <action> ] ;
[ ON DBLCLICK <dblclick> ] ;
вызов меню, как в примере Advanced\App_OopReport или см. другие примеры с меню Скрытый текст

Но проще исп. EditBox пример Advanced\LetoDbf\Client
 

@ y, x EDITBOX Edit WIDTH w HEIGHT h VALUE '' ;
FONT "Courier New" Size 12 READONLY
...
:Event(21, {| | This.Edit.Value := hb_memoread('_Msglog.txt') })
...

Будет работать посимвольное выделение

`

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




Пост N: 6586
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.02.20 22:14. Заголовок: SergKis пишет: Буде..


SergKis пишет:

 цитата:
Будет работать посимвольное выделение


Выделение работает, но нельзя вызвать стандартное меню "копировать", приходиться клавишами Ctrl+C пользоваться.
А можно сделать показ стандартного меню ?

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




Пост N: 3054
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.02.20 23:37. Заголовок: Andrey пишет А можно..


Andrey пишет
 цитата:
А можно сделать показ стандартного меню ?


Запусти сервер, запусти\собери клиента, добавив READONLY, как выше, нажми кл. 1
Нажми правую кн. мыши - будет меню стандартное, а выделишь текст (клавишами или мышкой)
будет доступна строка меню Copy
Все есть, ничего не надо делать

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





Пост N: 220
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 12.02.20 17:23. Заголовок: LISTBOX Хочу получа..


LISTBOX

Хочу получать результат от одинарного клика, двойного клика и Enterа.
ON CHANGE и ON DBLCLICK все это получаю, но еще и от движения стрелок.
Убираю ON CHANGE, стрелки нормально ходят, но и одинарный клик пропадает.

А если ли способ?..

В консольных программах я с подобным боролся с помощью set key и lastkey(). Здесь это, похоже, не работает, по-крайней мере в известном мне виде.

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





Пост N: 221
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 13.02.20 10:48. Заголовок: Неужели никак нельзя..


Неужели никак нельзя установить на какую клавишу клавиатуры или мыши среагировал listbox?
Или вообще нужно как-то по-другому все делать?
Кстати, странно, почему есть реакция на on dblclick, а просто на on click нет. Но это, наверное, нужно спрашивать в разделе "Чего мне не хватает в МиниГуи".

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




Пост N: 3060
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.02.20 12:33. Заголовок: rvu пишет Неужели ни..


rvu пишет
 цитата:
Неужели никак нельзя установить на какую клавишу клавиатуры или мыши среагировал listbox?


Думаю, что никто в таком ключе с листбох не работает. Поищите в примерах LISTBOX и анализируйте.
Есть что то в Advance\ACHOICE\demo.prg, но что надо смотреть.
Есть механизм
SET EVENTS FUNCTION TO MYEVENTS
свой обработчик сообщений, посмотрите в эту сторону.

Лично у меня ListBox не используется от слова совсем.

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





Пост N: 222
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 13.02.20 13:34. Заголовок: Понятно. Нужно как-т..


Понятно. Нужно как-то по-другому все делать. Буду смотреть. Но немного жалко, такой удобный инструмент...

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




Пост N: 3061
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.02.20 13:53. Заголовок: rvu Но немного жалко..


rvu
 цитата:
Но немного жалко, такой удобный инструмент...


Есть еще удобные инструменты - GRID, BROWSE, TBrowse для работы с таблицами

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




Пост N: 6588
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.02.20 15:25. Заголовок: SergKis пишет: TBro..


SergKis пишет:

 цитата:
TBrowse для работы с таблицами


Это лучшее решение !
Я тоже раньше боялся его использовать.
Но потом изучил и очень жалею, что сразу им не воспользовался.

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





Пост N: 223
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 14.02.20 06:58. Заголовок: SergKis пишет: GRID..


SergKis пишет:

 цитата:
GRID, BROWSE, TBrowse



А их можно для моих хотелок приспособить? Или нужно копать в сторону

SergKis пишет:

 цитата:
свой обработчик сообщений

?


SergKis пишет:

 цитата:
Есть что то в Advance\ACHOICE\demo.prg, но что надо смотреть.



Я смотрел его и даже стал на его основе что-то делать, но потом решил, что в listbox уже все есть. Оказалось, что не все.

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




Пост N: 1657
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.02.20 10:51. Заголовок: rvu пишет: можно дл..


rvu пишет:

 цитата:
можно для моих хотелок приспособить?


Да, вот готовое определение ListBox с помощью TBrowse:

 цитата:
Function TestLbx() 

Local oBrw, ;
aItems := { Padr("One", 12), Padr("Two", 12), Padr("Three", 12) }

DEFINE WINDOW Form_15 At 140,160 ;
WIDTH 300 HEIGHT 250 ;
TITLE "TSBrowse Like a ListBox" ;
ICON "Demo.ico";
CHILD

@ 20, 50 TBROWSE oBrw ITEMS aItems WIDTH 100 HEIGHT 100 COLOR CLR_BLACK, CLR_HGRAY EDITABLE

oBrw:aEditCellAdjust[3] := -2 // correction of cell width
oBrw:lNoVScroll := .T.

oBrw:bKeyDown := { |nKey| If( nKey == VK_DELETE, oBrw:Del(), If( nKey == VK_INSERT, oBrw:Insert( Padr("New", 12) ), Nil )) }

END WINDOW
ACTIVATE WINDOW Form_15

Return Nil


Обработчик для всех клавиш находится в блоке :bKeyDown

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




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


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


Не очень понятны они, в плане что потом хотите делать, с тем же левый одинарный клик,
в таблицах, как правило это переставить фокус на строку\колонку (от режима CELL зависит).
Но поймать переключение и сделать что то вполне можно, пример Advanced\Tsb_Basic_2\demo5.prg
Смотрите примеры Advanced\Tsb_* + Advanced\OOP_* все основное показано

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





Пост N: 225
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 14.02.20 11:43. Заголовок: SergKis пишет: Не о..


SergKis пишет:

 цитата:
Не очень понятны они, в плане что потом хотите делать



Есть список документов, есть программа, которая с ним работает. Там просмотр документа делается одним кликом или Enterом. Программа устарела, я сейчас делаю аналогичную. Стараюсь максимально сохранить интерфейс, опыт с только двойным кликом показал, что пользователи путаются, тупят, привычка она такая.

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




Пост N: 3063
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.02.20 12:09. Заголовок: rvu пишет Там просмо..


rvu пишет
 цитата:
Там просмотр документа делается одним кликом или Enterом


Примерно так будет выглядеть замена стандартного поведения одинарного клика
 
... тут создание TBrowse в переменной oBrw
oBrw:bEvents := {|ob,nMsg,nWParam,nLParam| iif( nMsg == WM_LBUTTONDOWN, ob:PostMsg(WM_KEYDOWN, VK_RETURN, 0), ), .T. })
т.е. левый клик будет заменен на нажатие Enter
На VK_ENTER повесите процедуру карточки


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




Пост N: 3064
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.02.20 17:06. Заголовок: SergKis пишет Пример..


SergKis пишет
 цитата:
Примерно так будет выглядеть замена стандартного поведения одинарного клика


А вариант работающий так
 
:bLButtonUp := {|| DoEvents(), PostMessage(oBrw:hWnd, WM_KEYDOWN, VK_RETURN, 0 ) }
:bLDblClick := {|| DoEvents(), oBrw:PostMsg( WM_KEYDOWN, VK_RETURN, 0 ) }
:UserKeys( VK_RETURN, {|ob| MsgBox(ob:cParentWnd+'.'+ob:cControlName, 'INFO'), .F. } )


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




Пост N: 3065
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.02.20 10:17. Заголовок: rvu SergKis пишет Н..


rvu
SergKis пишет
 цитата:
Но поймать переключение и сделать что то вполне можно, пример Advanced\Tsb_Basic_2\demo5.prg


У меня этот пример немного отличается от базового (в нем нет обработки смены колонки)
Вот мой вариант примера Скрытый текст

Команды
 
oBrw:bChange := {|ob| _wPost(1, ob, ob) }

FOR EACH o IN oBrw:aColumns
o:bGotFocus := {|no,nc,ob| _wPost(1, ob, ob) }


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





Пост N: 234
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 22.03.20 19:28. Заголовок: Вопрос по GRID. Как ..


Вопрос по GRID.
Как я понял COLUMNSORT и ON HEADCLICK вместе не работают.
При этом COLUMNSORT в заголовках рисует треугольники-стрелочки.
А в ON HEADCLICK этого добиться можно? Или еще какой способ есть?

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





Пост N: 235
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 22.03.20 22:15. Заголовок: В C:\MiniGUI\..


В C:\MiniGUI\SAMPLES\Advanced\GridSort\ отыскал примерно подходящий пример.
Только треугольник этот выдается наверху и очень мелко. Вот бы перенести его вправо-влево от текста.
Копался в docs.microsoft.com, но не разобрался.

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




Пост N: 3093
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.03.20 23:52. Заголовок: rvu Попробуйте прим..


rvu
Попробуйте пример Advanced\Tsb_SetArrayTo, поправив строку 214
 
...
/////////////////////// Параметры TsBrowse ///////////////////////////////////
oBrw52:nWheelLines := 4 // тип линий (от 1-5)
oBrw52:nClrLine := COLOR_GRID
oBrw52:lNoChangeOrd := .F. // TRUE
oBrw52:lCellBrw := TRUE
...

двойной клик (цвета шапки настраиваются) по шапке будет переключать сортировку колонки туда-сюда и будет треугольник (можно и свой вариант, у Андрея есть\был пример с кликом по superhead - вкл.\выкл. режим сортировки по колонкам со своими bmp)
От Grid и Browse отказался в пользу TBrovse

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





Пост N: 236
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 23.03.20 07:57. Заголовок: SergKis Я правильно..


SergKis

Я правильно понимаю, что если я всю программу переведу в UTF-8, то я смогу эти треугольники писать просто как обычный текст?

А вообще есть ли смысл держать ее в 1251? Это дает какое-то преимущество перед UTF-8?

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




Пост N: 3094
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.03.20 08:32. Заголовок: rvu пишет Я правильн..


rvu пишет
 цитата:
Я правильно понимаю, что если я всю программу переведу в UTF-8, то я смогу эти треугольники писать просто как обычный текст?


Нет. Треугольники - это зашитые в hmg bmp, можете вместо ни исп. свои варианты bmp.

 цитата:
А вообще есть ли смысл держать ее в 1251? Это дает какое-то преимущество перед UTF-8?


HMG Ext. не уникодная и делая базы в utf-8, надо перекодировать инф. их в одно байтовую кодировку для отображения.
Если у вас только русский, то 1251 в базах все упрощает.

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




Пост N: 3095
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.03.20 08:37. Заголовок: PS Базы в utf-8, про..


PS
Базы в utf-8, программа в 1251 hb сам будет делать перекодировку

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




Пост N: 3096
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.03.20 09:05. Заголовок: PS2 В примере Tsb_Us..


PS2
В примере Tsb_UserKeysEvent line 290 ставим свой вариант bmp
:aSortBmp := { LoadImage("br_up"), LoadImage("br_dn") }

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





Пост N: 237
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 23.03.20 09:40. Заголовок: SergKis пишет: Нет...


SergKis пишет:

 цитата:
Нет. Треугольники - это зашитые в hmg bmp, можете вместо ни исп. свои варианты bmp.



Но ведь в UTF-8 есть и просто треугольники.

▼▽

Их-то можно в текст вставлять?

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





Пост N: 238
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 23.03.20 09:45. Заголовок: SergKis пишет: Базы..


SergKis пишет:

 цитата:
Базы в utf-8, программа в 1251 hb сам будет делать перекодировку



Кстати, мне это не очень нравится, я бы перекодировал сам. В базах у меня есть разные поля, и utf-8 и win-1251.

SergKis пишет:

 цитата:
Если у вас только русский



В интерфейсе пока да, но в перспективе возможны разные языки. А в базах у меня что угодно.

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




Пост N: 3097
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.03.20 10:22. Заголовок: rvu пишет В интерфей..


rvu пишет
 цитата:
В интерфейсе пока да, но в перспективе возможны разные языки. А в базах у меня что угодно.


Не забывайте HMG Ext. не уникодная и в одном контроле (font) разные языки не прокатят

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




Пост N: 3098
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.03.20 10:29. Заголовок: rvu пишет Их-то можн..


rvu пишет
 цитата:
Их-то можно в текст вставлять?


Вставлять можете только те символы, которые есть в используемом фонте контрола.
Т.е. используя кодировку RU866 в контролах, можете исп. символы треугольников и вставлять в текст.

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





Пост N: 239
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 23.03.20 10:39. Заголовок: SergKis пишет: Не з..


SergKis пишет:

 цитата:
Не забывайте HMG Ext. не уникодная и в одном контроле (font) разные языки не прокатят



Т.е. для каждого элемента свой font? Для которого его возможно задавать. Это, если я правильно ваш ответ понял.

И, есть ли здесь ограничения по поддержке фонтов. Или не всякий язык вообще можно использовать?

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




Пост N: 3099
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.03.20 11:06. Заголовок: rvu пишет Т.е. для к..


rvu пишет
 цитата:
Т.е. для каждого элемента свой font? Для которого его возможно задавать. Это, если я правильно ваш ответ понял.


Контрол имеет только один назначенный фонт, к примеру
 
#command @ <row>,<col> LABEL <name> ;
...
[ FONT <fontname> ] ;
[ SIZE <fontsize> ] ;
[ <bold : BOLD> ] ;
[ <italic : ITALIC> ] ;
[ <underline : UNDERLINE> ] ;
[ <strikeout : STRIKEOUT> ] ;
...

т.е. 2а назначить не можете, имеем контрол -> язык.
Для разных языков в фонте исп. charset
 
#command DEFINE FONT <name> ;
FONTNAME <fontname> ;
[ SIZE <fontsize> ] ;
[ <bold : BOLD> ] ;
[ <italic : ITALIC> ] ;
[ <underline : UNDERLINE> ] ;
[ <strikeout : STRIKEOUT> ] ;
[ CHARSET <charset> ] ;

[ ANGLE <Angle> ] ;
[ <default : DEFAULT> ] ;
=> ;
_DefineFont ( ;
<"name">, ;
<fontname>, ;
<fontsize>, ;
<.bold.>, ;
<.italic.>, ;
<.underline.>, ;
<.strikeout.>, ;
<Angle>, ;
<.default.>, ;
<charset> )

Тогда создав для разных языков свои фонты с charset используете их по имени в контролах по конкретному языку и данные в контрол даете в нужной языковой кодировке

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





Пост N: 240
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 23.03.20 13:44. Заголовок: SergKis пишет: 2а ..


SergKis пишет:

 цитата:



Это что?

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




Пост N: 3100
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.03.20 14:10. Заголовок: Это 2а фонта контрол..


Это 2а фонта контролу не назначить

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





Пост N: 241
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 01.04.20 07:25. Заголовок: Очередные вопросы на..


Очередные вопросы накопились:

Нажимаю F1, появляется "Почему не удается получить справку по этой программе?
Справка для этой программы была создана в формате справки Windows, который зависит от компонента, не входящего в данную версию Windows...."

Как это убрать?
Можно ли по F1 сделать вызов своей справки? Наверное, можно, но как? Как вообще можно использовать клавиши F?

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




Пост N: 3103
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.04.20 16:11. Заголовок: rvu пишет Как вообще..


rvu пишет
 цитата:
Как вообще можно использовать клавиши F?


1.
Посмотрите примеры BASIC\ButtnEx_DinamicMenu\*.prg строки такие
 
...
IF ! Empty( aN ) // Define HotKey
IF HB_ISARRAY( aN )
FOR nK := 1 TO Len( aN )
_DefineHotKey( This.Name , 0 , aN[ nK ] , hb_MacroBlock( "_wPost(2, , '"+cN+"')" ) )
NEXT
ELSE
_DefineHotKey( This.Name , 0 , aN , hb_MacroBlock( "_wPost(2, , '"+cN+"')" ) )
ENDIF
ENDIF

nY += nBtnH + nG // Row следующей кнопки

NEXT

ON KEY F10 ACTION _wPost(10)
...
2.
Если на окне TsBrowse то я предпочитаю, клавиши ставить на него и держать тсб всегда в фокусе, при работе с окном, т.к. иногда клавиши по ON KEY ... перехватывает Far, с тсб такого не происходит.
Advanced\Tsb_UserKeysEvent\demo.prg
...
:bLDblClick := {|up1,up2,nfl,obr | up1 := up2 := nfl := Nil, ;
obr:PostMsg( WM_KEYDOWN, obr:nFireKey, 0 ) }
:UserKeys(VK_RETURN , {|obr | obr:PostMsg( WM_KEYDOWN, obr:nFireKey, 0 ) })
:UserKeys(VK_F2 , {|obr,nky,cky| Rec_Addr(obr,nky,cky)})
:UserKeys(VK_F3 , {|obr,nky,cky| Rec_Delr(obr,nky,cky)})
:UserKeys(VK_F5 , {|obr,nky,cky| Rec_Prn1(obr,nky,cky)})
:UserKeys(VK_F6 , {|obr,nky,cky| Rec_Ordn(obr,nky,cky)})
:UserKeys(VK_F7 , {|obr,nky,cky| Rec_Find(obr,nky,cky)})
:UserKeys(VK_F8 , {|obr,nky,cky| Rec_Expo(obr,nky,cky)})
:UserKeys(VK_F9 , {|obr,nky,cky| Set_Mode(obr,nky,cky)})
...


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




Пост N: 3104
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.04.20 17:02. Заголовок: PS вариант для F1 ..


PS
вариант для F1
 
:UserKeys(VK_F1 , {|obr,nky,cky| Msg_Keys(obr,nky,cky), .T.})
...
END TBROWSE

ON KEY F1 ACTION oBrw1:PostMsg( WM_KEYDOWN, VK_F1, 0 )
...


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





Пост N: 246
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 19.04.20 18:22. Заголовок: Есть картинка: @ ..


Есть картинка: @ <nRow> ,<nCol> IMAGE <ControlName>
Кликаю, вызываю функцию. Можно ли определить в какое именно место картинки я кликнул?

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




Пост N: 1677
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.04.20 20:01. Заголовок: rvu пишет: определи..


rvu пишет:

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


Лови рабочий пример:

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

PROCEDURE Main()

LOCAL nWidth, nHeight

IF GetImageInfo( "logo.jpg", @nWidth, @nHeight )

DEFINE WINDOW Form_1 ;
MAIN ;
CLIENTAREA nWidth, nHeight + 30 ;
TITLE "Test a mouse click on the one picture which is divided into 3 parts (" + __FILE__ + ")"

@ 0,0 IMAGE Img_Logo PICTURE "logo.jpg" WIDTH nWidth HEIGHT nHeight ;
ON MOUSEHOVER RC_CURSOR( "MINIGUI_FINGER" ) ;
ACTION Determine_the_portion_of_the_picture()

END WINDOW

CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1

ENDIF

RETURN

/////////////////////////////////////////////////////////////////////////////
#ifdef __XHARBOUR__
#define ENUMINDEX hb_EnumIndex()
#else
#define ENUMINDEX aPart:__EnumIndex
#endif

PROCEDURE Determine_the_portion_of_the_picture()

STATIC aImage := {}

LOCAL nY, nX, aCoords := GetCursorPos()
LOCAL cMsg, aPart, nLeft, nWidth

IF Empty( aImage )
AADD( aImage, { 0,000,149,200, "Part 1 of a picture" } )
AADD( aImage, { 0,202,149,488, "Part 2 of a picture" } )
AADD( aImage, { 0,693,149,239, "Part 3 of a picture" } )
ENDIF

nY := aCoords[1] - Form_1.Row - GetTitleHeight() - GetBorderHeight()
nX := aCoords[2] - Form_1.Col - GetBorderWidth()

cMsg := "Pos y: " + hb_NtoS( nY ) + " Pos x: " + hb_NtoS( nX )

FOR EACH aPart IN aImage
nLeft := aPart[2]
nWidth := aPart[4]

IF nX > nLeft .AND. nX < nLeft + nWidth
cMsg += CRLF + CRLF + "Area #" + HB_NtoS( ENUMINDEX )
cMsg += CRLF + CRLF + aPart[5]

MsgInfo( cMsg )
ENDIF
NEXT

RETURN

STATIC FUNCTION GetImageInfo( cPicFile, nPicWidth, nPicHeight )

LOCAL aSize := hb_GetImageSize( cPicFile )

nPicWidth := aSize[1]
nPicHeight := aSize[2]

RETURN ( nPicWidth > 0 )



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





Пост N: 247
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 20.04.20 07:52. Заголовок: Спасибо!..


Спасибо!

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





Пост N: 252
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 26.05.20 13:53. Заголовок: А можно в AlertInfo(..


А можно в AlertInfo() убрать иконку? Как костыль могу прописать пустую, тогда ее не видно, но и текст сдвинут некрасиво.

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




Пост N: 3247
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.05.20 14:04. Заголовок: rvu AlertInfo( &..


rvu
AlertInfo( "MessageBox Info", "INFO", , 0 )

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





Пост N: 253
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 26.05.20 14:18. Заголовок: SergKis пишет: Aler..


SergKis пишет:

 цитата:
AlertInfo( "MessageBox Info", "INFO", , 0 )



Спасибо! Т.е. nSize к иконке относится. Так сразу и не догадаешься...

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




Пост N: 3248
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.05.20 15:01. Заголовок: rvu пишет Так сразу ..


rvu пишет
 цитата:
Так сразу и не догадаешься...


10.05.20 08:59. SergKis пишет
 цитата:
Предложение по hmg_alert(), AlertInfo() и др.
- hmg_alert() значение nIcoSize сделать равным 0, тогда на окне нет DRAW ICO ...
- в AlertInfo(), AlertExclamation(), AlertStop() добавить параметр lNoPlay, для отключения звук. сигнала


gfilatov2002 пишет
 цитата:
Все правки приняты



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





Пост N: 254
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 26.05.20 15:37. Заголовок: SergKis пишет: nIco..


SergKis пишет:

 цитата:
nIcoSize



Вот это понятно. А у Григория написано nSize.

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





Пост N: 258
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 22.07.20 20:24. Заголовок: Такая проблема возни..


Такая проблема возникла. Есть некий список, вывожу его гридом. В первом столбце порядковые номера: 1, 2, 3... Они нужны больше для красоты, особого смысла в них нет, но пользователи к этому привыкли.
Когда по какому-нибудь столбцу происходит сортировка, этот столбец тоже меняется соответственно. А можно его оставлять неизменным? Чтобы там всегда было 1, 2, 3...

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




Пост N: 6760
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.07.20 21:01. Заголовок: Самое простое - посл..


Самое простое - после сортировке заново в столбец занеси 1,2,3...
По другому никак.
Если переделаешь вывод на TsBrowse, то там море возможностей.
Сам раньше боялся переходить, сейчас одно удовольствие с таблицами работать.

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





Пост N: 259
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 23.07.20 03:36. Заголовок: Andrey пишет: Самое..


Andrey пишет:

 цитата:
Самое простое - после сортировке заново в столбец занеси 1,2,3...



Вместе с COLUMNSORT это не сделать?
Надо ON HEADCLICK использовать со своей функцией?

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




Пост N: 6761
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.07.20 07:03. Заголовок: Давно уже не пользую..


Давно уже не пользуюсь этим Гридом, уже и не помню.
Нужно по твоему событию сделать сортировку массива, а где используешь нумерацию, занеси числа по порядку.
А потом перестрой ЗАНОВО массив грида, типа так:
 
// перечитаем/reread Grid_1
aList := LoadDim() - уже готовый массив
Form_6.Grid_1.DeleteAllItems
IF Len(aList) > 0
Form_6.Grid_1.DisableUpdate
FOR nI := 1 to LEN(aList)
Form_6.Grid_1.AddItem( aList[nI] )
NEXT
Form_6.Grid_1.EnableUpdate
ENDIF


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





Пост N: 260
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 23.07.20 12:09. Заголовок: Вот еще проблема - п..


Вот еще проблема - почему-то этот грид всё выдает в переменных UE. Даже такое - Win_1.Grid_1.Value.
Почему так? И как этими данными воспользоваться?

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




Пост N: 6762
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.07.20 12:18. Заголовок: rvu пишет: почему-т..


rvu пишет:

 цитата:
почему-то этот грид всё выдает в переменных UE


Не понял что это такое...
Примеры по ГРИДУ смотрели ?
Там всё понятно.
Если у вас что-то не работает, делайте самодостаточный пример.
А так объяснять и понять что нужно - сложно.
Сам многие вещи здесь на форуме не могу правильно сформулировать.

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





Пост N: 261
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 23.07.20 12:20. Заголовок: Andrey пишет: Не по..


Andrey пишет:

 цитата:
Не понял что это такое...



Это я тут немного запутался и стал их TYPE() смотреть. VALTYPE() нормально показывает. Прошу прощения.

В итоге заработало.

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





Пост N: 265
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 01.08.20 18:42. Заголовок: Andrey пишет: Если ..


Andrey пишет:

 цитата:
Если переделаешь вывод на TsBrowse



gfilatov2002 пишет:

 цитата:
вот готовое определение ListBox с помощью TBrowse



В справке по Минигуи таких нет, но есть BROWSE.

Помогите разобраться, какая между ними разница и что в итоге брать?

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




Пост N: 7224
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.08.20 18:59. Заголовок: rvu тут живет C: ..


rvu
тут живет C:\MiniGUI\Doc\TSBrowse.chm

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




Пост N: 3304
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.08.20 19:30. Заголовок: rvu пишет В справке ..


rvu пишет
 цитата:
В справке по Минигуи таких нет, но есть BROWSE.


Есть отдельный TSBrowse.chm в Doc каталоге

rvu пишет
 цитата:
какая между ними разница и что в итоге брать?


BROWSE - стандарный контрол List_View имеет Header и таблицу ячеек (однострочные данные и там и там)
Колонки назначаются на данные поля dbf или элемент массива, т.е. нет FIELD->( LAST+" "+FIRST )
Примеры в BASIC\Browse...
TSBrowse - адаптированный из FiveWin Class TSBrowse 9.0
Имеет
SuperHeader (объединяет колонки header),
Header (заголовки ячеек),
SpecHeader (номерной заголовок ячеек),
ячейки,
Footer (подножие колонок)
Данные во всех перечисленных элементах могут быть многострочными,
задаваться блоками кодов с исп. цветов, image, ...
Примеры в Advanced\Tsb_...

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





Пост N: 266
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 01.08.20 21:24. Заголовок: SergKis пишет: BROW..


SergKis пишет:

 цитата:
BROWSE - стандарный контрол List_View имеет Header и таблицу ячеек (однострочные данные и там и там)



Чем-то принципиально от грида отличается?

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




Пост N: 3305
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.08.20 21:26. Заголовок: rvu пишет Чем-то при..


rvu пишет
 цитата:
Чем-то принципиально от грида отличается?


ничем, тот же контрол

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





Пост N: 313
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 18.03.21 20:10. Заголовок: Как-то давно спрашив..


Как-то давно спрашивал про

rvu пишет:

 цитата:
окно без иконки.



Тогда меня устроило:

Dima пишет:

 цитата:
NOSIZE NOSYSMENU



А сейчас хочется, чтобы стандартные средства окна, типа крестика, были, но без иконки. Так можно?

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




Пост N: 3615
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.03.21 22:16. Заголовок: rvu Это будут уже н..


rvu
Это будут уже не стандартные средства, добавляете
 цитата:

NOSIZE NOSYSMENU NOCAPTION


делаете Label вместо TITLE и свою image: icon\bmp\... вместо крестика
@ 0,0 LABEL myTitle VALUE ... WIDTH This.ClientWidth - 16 HEIGHT GetTitleHeight() BACKCOLOR ... FONTCOLOR ...
@ 0,0 ...
высоту myTitle и image делаете какую нужно и click-и делаете...

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




Пост N: 1838
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.03.21 23:22. Заголовок: SergKis пишет: Это ..


SergKis пишет:

 цитата:
Это будут уже не стандартные средства


И будет выглядеть примерно так


Если нужен код этого "чуда", то пишите

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




Пост N: 6921
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.03.21 00:13. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
И будет выглядеть примерно так


Там кнопки выхода круглые - хреново выглядят.
Нужно иконки ставить, тогда чётко и красиво будет круглая кнопка выглядеть.
Сейчас эту прогу я бы сделал совсем по другому !
Там кода дофига, можно в разы его короче сделать.
Это 2014 год, а сейчас уже 2021...

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





Пост N: 314
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 19.03.21 04:33. Заголовок: Сейчас пустую иконку..


Сейчас пустую иконку поставил, только она все равно место занимает. Может, и Title уберу, вернее тоже сделаю невидимым.

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




Пост N: 3617
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.03.21 08:18. Заголовок: rvu пишет Сейчас пус..


rvu пишет
 цитата:
Сейчас пустую иконку поставил, только она все равно место занимает.


С Title делайте как хотите, а image X можно делать кнопкой (любого типа) или Label с Value := "X" или из фонта Symbol и всегда можно ей делать hide и show (.Visible := .F.\.T.) только в нужный момент и в нужном месте, например слева вверху, сейчас часто именно так делают, контролы управления слева

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





Пост N: 315
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 19.03.21 10:11. Заголовок: SergKis пишет: С Ti..


SergKis пишет:

 цитата:
С Title делайте как хотите, а image X можно делать кнопкой



Я-то писал про стандартное окно винды. А вы, видимо, про нестандартное средство.

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




Пост N: 3618
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.03.21 11:57. Заголовок: rvu пишет Я-то писал..


rvu пишет
 цитата:
Я-то писал про стандартное окно винды


Тогда для кнопки X моете сделать
This.Closable := .T.

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


Пост N: 1603
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 19.03.21 12:36. Заголовок: Скорее всего сабж хо..


Скорее всего сабж хотят сделать like ToolWindow

#define WS_EX_TOOLWINDOW 0x00000080
ChangeStyle( Win1.Handle, WS_EX_TOOLWINDOW, , .T. )

но не факт..

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




Пост N: 1839
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.03.21 21:34. Заголовок: rvu пишет: Сейчас п..


rvu пишет:

 цитата:
Сейчас пустую иконку поставил


Ниже еще один вариант окна без иконки (исходники примера занимают 2,5 кБ)



rvu пишет:

 цитата:
вы, видимо, про нестандартное средство.


Да, это нарисованный заголовок окна со своими кнопками

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





Пост N: 316
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 23.03.21 08:52. Заголовок: В итоге мои коллеги ..


В итоге мои коллеги согласились на стандартное окно, только иконку для него изменил.
Но всем спасибо за идеи! Вообще приятно и хорошо, когда пути решения есть и их даже несколько.
Самое печальное, когда на вопрос ни у кого нет ответа.

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





Пост N: 88
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 27.05.23 07:15. Заголовок: Space()


Доброго дня всем ...

Space() возвращает символьную строку, которая состоит только из символов пробела (Chr(32)).
Максимальная длина такой строки в Xbase++ не ограничена - так сказано в описании...

По факту при создании переменной долее 850 Mb вылетает ошибка -

Application Internal Error - C:\MiniGUI\SAMPLES\MY_BASIC\EraseFail_2\EraseFail.exe
Terminated at: 2023-05-24 10:38:30
Info: Harbour MiniGUI Extended Edition 23.02.2 (32-bit) ANSI
Неисправимая ошибка 9006: hb_xgrab не может распределить память
Called from SPACE(0) in EraseFail.prg
Called from DELET_FI(174) in EraseFail.prg
Called from ERASE_OB(255) in EraseFail.prg
Called from (b)MAIN(58) in EraseFail.prg
Called from EVENTS(0) in h_events.prg
Called from DOMESSAGELOOP(0) in h_windows.prg
Called from _ACTIVATEWINDOW(0) in h_windows.prg
Called from MAIN(65) in EraseFail.prg
------------------------------------------------------------------------

Это можно как-нибудь обойти .... или Harbour сдулся ...?

Будут вопросы ... а на хера такая переменная, надо ...

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




Пост N: 2133
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.05.23 12:20. Заголовок: Alex_Cher пишет: In..


Alex_Cher пишет:

 цитата:
Info: Harbour MiniGUI Extended Edition 23.02.2 (32-bit) ANSI
Неисправимая ошибка 9006: hb_xgrab не может распределить память


Возможно, поможет решить проблему переход на 64-битный Си компилятор.
Варианты:
- Borland/Embarcadero C++ 7.40 (64-bit);
- Microsoft Visual C++ 2022 (64-bit);
- MinGW GNU C 13.1 (64-bit).

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




Пост N: 4277
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.05.23 13:18. Заголовок: Alex_Cher пишет Буду..


Alex_Cher пишет
 цитата:
Будут вопросы ... а на хера такая переменная, надо ...


И все таки задам такой вопрос, из любопытства. Что собираетесь делать с пустой строкой ?
Если хотите писать ее в файл, то лучше сделать это сразу в файл по открытому handle и можно даже по одному символу.

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





Пост N: 89
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 28.05.23 07:52. Заголовок: SergKis пишет: Если..


SergKis пишет:

 цитата:
Если хотите писать ее в файл, то лучше сделать это сразу в файл по открытому handle и можно даже по одному символу.


а можно по подробней ... есть ли примеры. Цель такая - затереть файл (в том числе видео) перед удалением.У начальника в конторе появилось
хобби, по выходным шарит по компам подчиненных и поднимает удаленные файлы ...

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




Пост N: 4278
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.05.23 08:48. Заголовок: Alex_Cher IF File(c..


Alex_Cher
 
IF File(cFile)
IF ( hFil := FOpen ( cFile, 2 ) ) > 0
nLen := FSeek( hFil, 0, 2 )
FSeek( hFil, 0, 0 )
FOR nI := 1 TO nLen
FWrite( hFil, chr(32) /*chr(0)*/ )
NEXT
FClose( hFil )
ENDIF
ENDIF

тоже можете проделать с ф-ями hb_vf... ( http://www.kresin.ru/hrbfaq_3.html#Doc12 )

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

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