Автор | Сообщение |
|
| постоянный участник
|
Пост N: 3882
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.01.15 18:29. Заголовок: Чего мне не хватает в МиниГуи....
Всех с праздниками !!! Предлагаю тем кто использует МиниГуи высказать свои предложения по улучшению данного продукта, да и в какую сторону двигаться дальше.... Вот то что мне не хватает (я имею в виду примеров): 1. Очень мало примеров для работы с DLL (хотя это и не относиться к МиниГуи, но как делать не знаю). 1.1 Как собирать свои ресурсы к программе в отдельную dll-ку. Как подключать её при запуске, показ картинок из dll (я может и догадываюсь, но пока не могу сделать этого) ? 1.2. Как сделать отдельный свой ехе-ник, а Харбор и Минигуи затолкать в отдельную dll-ку, ну и LetoDB в отдельную dll. Как подключать при запуске эти отдельные dll и пользоваться функциями из этих dll ? 1.3. Как использовать чужие dll (допустим на Дельфи) в своих программах на МиниГуи (хотя FastReport'ом пользуюсь, но он специально сделан под Харбор) ? Разные примеры из МиниГуи на эту тему смотрел, кое что понятно, кое что нет. 2. Полноценная работа с иконками 2.1. Сейчас приходиться каждый размер иконки (16х16, 32х32 и т.д.) хранить отдельно в ресурсном файле и выводить на кнопки по отдельности. Нужна функция вывода из ОДНОГО файла иконки (содержащий все размеры от 16х16 до 128х128) выбранного размера. 2.2. Как из shell32.dll (она содержит все размеры иконок) можно выбрать и показать иконку отличную от размера 32х32 ? 2.3. Как вывести на форму ( не на кнопку) иконку заданного размера ? Вот пока часть чего хочется... Может на Рождество желания сбудутся ?
|
|
|
Ответов - 201
, стр:
1
2
3
4
5
6
7
8
9
10
11
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 7652
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.01.24 12:01. Заголовок: Вывожу авишку на фор..
Вывожу авишку на форму ANIMATEBOX Avi_1 ... AUTOPLAY После прорисовки формы проходит секунд 30 и только потом АВИ начинает двигаться. Почему так ? Как сделать чтобы сразу анимация пошла ?
|
|
|
|
| постоянный участник
|
Пост N: 7654
Зарегистрирован: 12.09.06
|
|
Отправлено: 10.01.24 16:34. Заголовок: Вопрос по подвисанию..
Вопрос по подвисанию программы на МиниГуи. Есть программа на С# из неё вызывается карточка из проги на МиниГуи по GetMessageData(). Однако программа на МиниГуи может быть занята длительной операцией, а юзер тупо кликнул вызов карточки. Прога на МиниГуи виснет наглухо. Как избавиться/блокировать вызов по GetMessageData() из проги на С# ?
|
|
|
|
| постоянный участник
|
Пост N: 4489
Зарегистрирован: 17.02.12
|
|
Отправлено: 10.01.24 18:03. Заголовок: Andrey пишет Как изб..
Andrey пишет цитата: | Как избавиться/блокировать вызов по GetMessageData() из проги на С# ? |
| 1. Ставишь переменную длительной операции .T. (все работы, кроме приема от C#, клики, ... игнорируешь, повесив modal окно, например) 2. Принимаешь данные от C# в стек всегда 3. Проверяешь переменную длительной операции на .T., если да -> ничего не делаешь 4. Длительная операция завершилась, ставишь .F., смотришь стек, если не пустой исполняешь его или исполнение стека всегда по глобальному таймеру (проверка, если не пуст стек)
|
|
|
|
| постоянный участник
|
Пост N: 7655
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.01.24 07:23. Заголовок: Можно изменить кодек..
Можно изменить кодек показа AVI-файлов в МиниГуи ? А то очень многие авишки не показываются на форме....
|
|
|
|
| постоянный участник
|
Пост N: 7656
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.01.24 10:58. Заголовок: А как можно передать..
А как можно передать хендл иконки для показа в функции AlertInfo() ? Там же нужно указать явное имя ресурса. А я хочу показать ранее открытую иконку из коллекции. This.Cargo:hIcon64 := LoadIconByName( "1MG_ICO", 64, 64 ) ... hIcon := ow:Cargo:hIcon64 ... AlertInfo( Message, Title, Icon, nSize, aColors, lTopMost, bInit, lNoSound )
|
|
|
|
| постоянный участник
|
Пост N: 4490
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.01.24 12:31. Заголовок: Andrey пишет А как м..
Andrey пишет цитата: | А как можно передать хендл иконки для показа в функции AlertInfo() ? |
| FUNCTION HMG_Alert( cMsg, aOptions, cTitle, nType, cIcoFile, nIcoSize, aBtnColors, bInit, lClosable, cFontName ) ... IF ISNUMBER( cIcoFile ) DRAW SYSICON IN WINDOW ( cForm ) ; AT nRow + GetBorderHeight(), MARGIN / 1.4 ; ICON cIcoFile WIDTH nIcoSize HEIGHT nIcoSize TRANSPARENT ELSE DRAW ICON IN WINDOW ( cForm ) ; AT nRow + GetBorderHeight(), MARGIN / iif( nIcoSize == 32, 1.4, iif( nIcoSize == 48, 1.7, 2 ) ) ; PICTURE cIcoFile WIDTH nIcoSize HEIGHT nIcoSize TRANSPARENT ENDIF
|
|
|
|
| постоянный участник
|
Пост N: 7657
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.01.24 12:41. Заголовок: Блин... СПАСИБО ! :..
Блин... СПАСИБО !
|
|
|
|
| постоянный участник
|
Пост N: 4491
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.01.24 18:43. Заголовок: Andrey пишет Показ н..
Andrey пишет цитата: | Показ на форме есть, а в AlertInfo() нет. |
| Если поправить h_alert.prg, то работает IF ISNUMBER( cIcoFile ) DRAW ICON IN WINDOW ( cForm ) ; AT nRow + GetBorderHeight(), MARGIN / iif( nIcoSize == 32, 1.4, iif( nIcoSize == 48, 1.7, 2 ) ) ; HICON cIcoFile WIDTH nIcoSize HEIGHT nIcoSize TRANSPARENT /*DRAW SYSICON IN WINDOW ( cForm ) ; AT nRow + GetBorderHeight(), MARGIN / 1.4 ; ICON cIcoFile WIDTH nIcoSize HEIGHT nIcoSize TRANSPARENT */ ELSE
|
|
|
|
| moderator
|
Пост N: 2238
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.01.24 20:15. Заголовок: SergKis пишет: Если..
SergKis пишет: цитата: | Если поправить h_alert.prg |
| Добавил такую возможность Контрольный пример: цитата: | hIcon := LoadIconByName( "demo.ico", 32, 32 ) ... AlertInfo ( "MiniGUI Alert Boxes demo", , hIcon ) |
| Благодарю за подсказку
|
|
|
|
| постоянный участник
|
Пост N: 7658
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.01.24 16:21. Заголовок: Можно ли управлять B..
Можно ли управлять BORDER и CLIENTEDGE после построения LABEL ?
|
|
|
|
| moderator
|
Пост N: 2239
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.01.24 17:00. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно ли управлять BORDER и CLIENTEDGE после построения LABEL ? |
| Да, это возможно. См. рабочий пример ниже Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo */ #include "minigui.ch" #include "i_winuser.ch" FUNCTION MAIN DEFINE WINDOW Form_1 ; AT 0, 0 ; WIDTH 640 HEIGHT 380 ; TITLE 'Harbour MiniGUI Demo' ; MAIN ; FONT 'Arial' SIZE 10 ; NOMAXIMIZE ; NOMINIMIZE ; NOSIZE DEFINE STATUSBAR STATUSITEM ' HMG Power Ready!' END STATUSBAR ON KEY ESCAPE ACTION ThisWindow.RELEASE DEFINE LABEL Label_1 COL 10 ROW 30 WIDTH 100 HEIGHT 30 VALUE 'Label Test 1' BORDER .T. CLIENTEDGE .F. CENTERALIGN .T. VCENTERALIGN .T. END LABEL DEFINE LABEL Label_2 COL 120 ROW 30 WIDTH 100 HEIGHT 30 VALUE 'Label Test 2' BORDER .F. CLIENTEDGE .T. CENTERALIGN .T. VCENTERALIGN .T. END LABEL DEFINE BUTTON B ROW 240 COL 10 CAPTION 'Remove Border' ACTION ( ChangeStyle( GetControlHandle( 'Label_1', 'Form_1' ), , WS_BORDER ) ) END BUTTON DEFINE BUTTON B2 ROW 240 COL 120 WIDTH 140 CAPTION 'Remove ClientEdge' ACTION ( ChangeStyle( GetControlHandle( 'Label_2', 'Form_1' ), , WS_EX_CLIENTEDGE, .T. ) ) END BUTTON END WINDOW Form_1.Center() Form_1.Activate() RETURN NIL
|
|
|
|
|
|
| постоянный участник
|
Пост N: 7659
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.01.24 18:53. Заголовок: Спасибо БОЛЬШОЕ ! :..
Спасибо БОЛЬШОЕ !
|
|
|
|
| постоянный участник
|
Пост N: 7660
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.01.24 13:59. Заголовок: На форме куча ави-фа..
На форме куча ави-файлов. Получаю список этих ави aName := HMG_GetFormControls(ow:Name, "ANIMATEBOX") А как получить имена файлов из которого состоит этот объект ? @ ... ANIMATEBOX &cName ... File cResAvi ... P.S. Конечно можно сделать массив и запоминать там, но хочется попробовать сделать это через функции МиниГуи.
|
|
|
|
| постоянный участник
|
Пост N: 4492
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.01.24 14:24. Заголовок: А как получить имена..
цитата: | А как получить имена файлов из которого состоит этот объект ? |
| FOR EACH oAvi IN ow:GetObj4Type( "ANIMATEBOX" ) Default oAvi:Cargo := oHmgData() oAvi:Cargo:cFile := _HMG_aControlCaption[ oAvi:Index ] // avi file тут NEXT PS. в твоем варианте в цикле (в GetProperty(...) нет этого) ? _HMG_aControlCaption[ GetControlIndex(aName[ i ], ow:Name) ]
|
|
|
|
| постоянный участник
|
Пост N: 4493
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.01.24 15:09. Заголовок: PS. Если у тебя avi ..
PS. Если у тебя avi логически связаны с Label, то соединить их для совместной работы можно так Скрытый текст
@ y, x LABEL &cN VALUE "Info win" WIDTH nWBtn HEIGHT nHBtn ; FONTCOLOR aBtnFClr[1] BACKCOLOR aBtnBClr[1] ; CENTERALIGN VCENTERALIGN BORDER CLIENTEDGE ; ON MOUSEHOVER {|| MouseFocus_Label(.T., This.Cargo) } ; ON MOUSELEAVE {|| MouseFocus_Label(.F., This.Cargo) } ; ON CLICK {| | _wPost(This.Cargo:nPost, This.Index ) } ; ON INIT {|o| This.Cargo := oHmgData() o := This.Cargo o:oObj := This.Object o:cObj := o:oObj:Name o:nObj := 1 o:cAvi := "Avi_1" // на др. Label свои имена avi контролов o:lAction := .F. o:lHover := .F. o:lBorder := .T. o:lClientEdge := .T. Return Nil } ... в ON INIT окна сделать FOR EACH oLbl IN ow:GetObj4Type( "LABEL" ) Default oLbl:Cargo := oHmgData() IF Empty(oLbl:Cargo:cAvi) ; LOOP // label без avi пропускаем ENDIF oAvi := ow:GetObj( oLbl:Cargo:cAvi ) Default oAvi:Cargo := oHmgData() oAvi:Cargo:cFile := _HMG_aControlCaption[ oAvi:Index ] // avi file тут oAvi:Cargo:oLabel := oLbl // запомнили в avi объект label oLbl:Cargo:oAvi := oAvi // запомнили в label объект avi oLbl:Cargo:cAviFile := oAvi:Cargo:cFile // если надо, продублировали на label имя avi file NEXT ...
|
|
|
|
|
| постоянный участник
|
Пост N: 7661
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.01.24 23:36. Заголовок: А на LABEL положить ..
А на LABEL положить градиент можно ? Что то примеры не найду...
|
|
|
|
| moderator
|
Пост N: 2242
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.01.24 12:59. Заголовок: Andrey пишет: на LA..
Andrey пишет: цитата: | на LABEL положить градиент можно ? |
| Например, можно сделать так: в примере из папки \SAMPLES\Advanced\DrawGradient
|
|
|
|
| постоянный участник
|
Пост N: 7662
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.01.24 15:26. Заголовок: Классный пример, СПА..
Классный пример, СПАСИБО ! А после установки объекта на форме DRAW GRADIENT IN WINDOW &cForm AT 250, 20 TO 278, 300 ; VERTICAL BORDER PANEL Можно поменять следующие параметры и как поменять ? VERTICAL - убрать PANEL - заменить на BOX BEGINCOLOR - задать заново цвет ENDCOLOR - задать заново цвет
|
|
|
|
| moderator
|
Пост N: 2243
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.01.24 16:15. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно поменять следующие параметры и как поменять ? |
| Например, можно сделать так: Скрытый текст
/* * DrawBoxGradient.prg * * Author: P.Chornyj <myorg63@mail.ru> */ ANNOUNCE RDDSYS #include "minigui.ch" #define NONE 0 #define BOX 2 #define PANEL 3 PROCEDURE Main () LOCAL aColor := HMG_n2RGB( GetSysColor( 15 ) ) SET FONT TO "Arial", 12 DEFINE WINDOW x ; WIDTH 640 ; HEIGHT 420 ; TITLE "Draw Box and Panel Gradient Sample" ; MAIN ; NOMAXIMIZE NOSIZE ; BACKCOLOR aColor DRAW GRADIENT IN WINDOW x AT 20, 20 TO 200, 300 BORDER BOX @ 95, 110 LABEL Label_1 VALUE "Gradient Box In" AUTOSIZE TRANSPARENT FONTCOLOR YELLOW DRAW GRADIENT IN WINDOW x AT 20, 320 TO 200, 610 ; VERTICAL BORDER PANEL @ 95, 410 LABEL Label_2 VALUE "Gradient Panel" AUTOSIZE TRANSPARENT FONTCOLOR YELLOW DRAW GRADIENT IN WINDOW x AT 250, 20 TO 278, 300 ; VERTICAL BORDER BOX ; BEGINCOLOR { 255, 255, 255 } ; ENDCOLOR { 220, 220, 220 } @ 255, 110 LABEL Label_3 VALUE "Gradient Box In" AUTOSIZE TRANSPARENT DRAW GRADIENT IN WINDOW x AT 250, 320 TO 278, 610 ; VERTICAL BORDER PANEL ; BEGINCOLOR { 255, 255, 255 } ; ENDCOLOR { 200, 200, 216 } @ 255, 410 LABEL Label_4 VALUE "Gradient Panel" AUTOSIZE TRANSPARENT DRAW GRADIENT IN WINDOW x AT 300, 20 TO 302, 316 ; BORDER NONE ; BEGINCOLOR { 250, 0, 0 } ; ENDCOLOR { 130, 0, 0 } DRAW GRADIENT IN WINDOW x AT 300, 316 TO 302, 610 ; BORDER NONE ; BEGINCOLOR { 130, 0, 0 } ; ENDCOLOR { 250, 0, 0 } @ 330, 240 BUTTON Button_1 ; CAPTION "&Switch" ; ACTION SwitchBoxPanel() ; WIDTH 150 HEIGHT 26 END WINDOW CENTER WINDOW x ACTIVATE WINDOW x RETURN PROCEDURE SwitchBoxPanel() ERASE WINDOW x DRAW GRADIENT IN WINDOW x AT 20, 20 TO 200, 300 VERTICAL BORDER PANEL x.Label_1.VALUE := "Gradient Panel" DRAW GRADIENT IN WINDOW x AT 20, 320 TO 200, 610 ; BORDER BOX x.Label_2.VALUE := "Gradient Box In" DRAW GRADIENT IN WINDOW x AT 250, 20 TO 278, 300 ; VERTICAL BORDER PANEL ; BEGINCOLOR { 255, 255, 255 } ; ENDCOLOR { 200, 200, 216 } x.Label_3.VALUE := "Gradient Panel" DRAW GRADIENT IN WINDOW x AT 250, 320 TO 278, 610 ; VERTICAL BORDER BOX ; BEGINCOLOR { 255, 255, 255 } ; ENDCOLOR { 220, 220, 220 } x.Label_4.VALUE := "Gradient Box In" DRAW GRADIENT IN WINDOW x AT 300, 20 TO 302, 316 ; BORDER NONE ; BEGINCOLOR { 250, 0, 0 } ; ENDCOLOR { 130, 0, 0 } DRAW GRADIENT IN WINDOW x AT 300, 316 TO 302, 610 ; BORDER NONE ; BEGINCOLOR { 130, 0, 0 } ; ENDCOLOR { 250, 0, 0 } InvalidateRect( x.HANDLE, 0 ) RETURN
|
|
|
|
|
| постоянный участник
|
Пост N: 7663
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.01.24 16:25. Заголовок: Что-то мудрённый объ..
Что-то мудрённый объект этот... А обработку на этот объект можно сделать ? DRAW GRADIENT IN WINDOW x AT 20, 20 TO 200, 300 BORDER BOX < ACTION | ONCLICK > Да и имя бы иметь на этот объект было бы хорошо.... Да и синтаксис привести как у LABEL было бы лучше. А возможно разместить градиент на уже готовой кнопке ? Или расширить синтаксис LABEL ? у BUTTONEX же есть уже градиент - [ GRADIENTFILL <aGradInfo> [ HORIZONTAL ] ]
|
|
|
Ответов - 201
, стр:
1
2
3
4
5
6
7
8
9
10
11
All
[только новые]
|
|