Форум » GUI » Чего мне не хватает в МиниГуи.... » Ответить

Чего мне не хватает в МиниГуи....

Andrey: Всех с праздниками !!! Предлагаю тем кто использует МиниГуи высказать свои предложения по улучшению данного продукта, да и в какую сторону двигаться дальше.... Вот то что мне не хватает (я имею в виду примеров): 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

gfilatov2002: Andrey пишет: А на МиниГуи можно сделать так же ? Да, это возможно с использованием моей библиотеки shell32, которая есть в дистрибутиве Минигуи вместе с исходниками. См. пример в папке \samples\Basic\Shell32 Сначала запусти тест 1, а затем тест 2, и увидишь на мгновение этот системный диалог.

SergKis: Andrey пишет В 1С используют стандартный/системный бегунок копирования файлов Для пользователя это "распальцовка" программиста, т.к. нужная инф. только в первых 2-х строках и возможно, в бегунке, если есть %, то и струя не обязательна. Время и скорость это не постоянная величина и может прыгать в процессе как в +, так и в - (особенно во внешней сети и плавающего объема инф.). Для пользователя важнее понимать (если он, как привязанный, вылупив глазки, следит за окном) сколько док-тов скопировано (приход\реализация\перемещения\... например в индикации), справочники (названия и кол-во строк\объектов в них в индикации). Соответственно протокол (возможно dbf), что бы с этого протокола что то вытащить, подав как список для выбора (не как из файла с именем blabla.dbf, а как логической структуры: документ, карточка, справочник, ..., могут располагаться в разных, связанных dbf). Копии можно делать в темную (без индикации), например, перед получением отчетной формы, которую клиент делает с подходящей периодичностью.

Andrey: SergKis пишет: Для пользователя это "распальцовка" программиста, т.к. нужная инф. только в первых 2-х строках Согласен на 100% Но пускай будет.... gfilatov2002 пишет: Да, это возможно с использованием моей библиотеки shell32 СПАСИБО БОЛЬШОЕ !


Andrey: Опять возвращаюсь к большим курсорам. Можно ли сделать курсор мышки 128х128 (типа движения по кругу, загрузка) ? Это нужно для ожидания, т.е. пока прога "прочухается", чтобы юзер видел что программа работает. Видел примеры SAMPLES\BASIC\CURSOR_2 и SAMPLES\BASIC\WindowBackground_2 - но они маленькие... Помогите пожалуйста ! Или нельзя в своей программе увеличить курсор мышки ? Пробовал через Настройку - размер увеличивается на все программы.

Andrey: А как ресурс (иконка - ассоциация файла) можно записать в поле базы в формате png или bmp ?

Andrey: А иконку в контекстное меню можно сразу выводить ? gfilatov2002 пишет: Уже можно... Посмотрел. Классно ! Только иконка на белом фоне. Можно его (фон иконки) как исправить, чтобы сливался с фоном меню ?

gfilatov2002: Andrey пишет: ак исправить, чтобы сливался с фоном меню ? Сделал, чтобы убрать белый фон, как было максимально возможно.

Andrey: Достаточно ! Спасибо ! А почему у формы программы МиниГуи углы закруглены ? Это как можно сделать ? Хочу такие же скруглённые формы у себя в программе....

Andrey: MENUITEM 'Menu-1' FONT hFont IMAGE "bDel.bmp" ACTION.... MENUITEM "Exit" FONT hFont ICON "iExit32.ico" ACTION... Имею уже готовые хендлы иконок для ТСБ и отображаю их. [pre2] aContMenu := {} // хендл картинки AADD( aContMenu, { 1 , "Menu-XXX", GETICONFROMRES("iRun32not") } ) AADD( aContMenu, { 2 , "Menu-XXX", GETICONFROMRES("iRun32intr") } ) [/pre2] Нужно делать контекстное меню по колонке ТСБ с этими хендлами Можно это сделать, или нужны только имена для контекстного меню ?

Andrey: Можно ли как то сделать кнопку - мигающей, или gif-ку туда за бабахать ? Юзера просто тупо не замечают красную кнопку появившуюся на форме. Блин и как с ними бороться...

SergKis: Andrey пишет Блин и как с ними бороться... Если смена BackColor не устраивает, то делаешь мамнадцать кнопок в одних координатах (разные цвета, image ...), только одна видимая, остальные hide и крути их в цикле по очереди hide\show, можешь и Label с кликом так же делать Юзера просто тупо не замечают красную кнопку появившуюся на форме А ты оставь только красную кнопку , остальные контролы убери в hide может заметят !? PS Windows update, если не делать, отказываться, через какое то время выключает мышку, клавиатуру ... и пока не начнешь делать перезагрузку (сразу цепляется update) ничего делать не получается.

Andrey: SergKis пишет: А ты оставь только красную кнопку , остальные контролы убери в hide Да это лучшее решение, не подумал об этом. Спасибо !

Andrey: Возвращаюсь к функциям AlertInfo() AlertStop() и т.д. Хотелось бы ещё добавить возможность к этим функциям, навести окончательную красоту для них. Хочется гибкости настроек для них и кнопки сделать с градиентом. Вот примерно так: Вот примерно код который бы хотелось добавить в СТАНДАРТНУЮ поставку МиниГуи. [pre2] ON KEY F2 ACTION {|| // тест кнопки LOCAL aBtnClr := { {189, 30, 73} } // светло-красный LOCAL aFntClr := MAROON LOCAL aBckClr := { 255, 178, 178 } LOCAL cMsg := HB_ValToExp(aTest)+REPL('#;',7) LOCAL cIco := "iStop64" LOCAL cTitle := "Ошибка" LOCAL bInit := Nil, lNoSound := Nil LOCAL aColors := _SetMsgAlertColors( aBackColor ) LOCAL nOldLine := HMG_Alert_MaxLines(5) SET MSGALERT FONTCOLOR TO aFntClr // не ставятся числовые цвета - CLR_HRED SET MSGALERT BACKCOLOR TO aBckClr AlertStop( cMsg, cTitle, cIco, 64, aBtnClr, .T., bInit, lNoSound ) // это текущий синтаксис SET MSGALERT BACKCOLOR TO aColors HMG_Alert_MaxLines(nOldLine) // ------ добавочные переменные -------- //LOCAL aBtnText := {" &Продолжить "} //, aBtnText := {" &Да "," &Нет "} //LOCAL aBtnFntClr := BLUE //SET MSGALERT BTNFONTCOLOR TO BLUE //SET MSGALERT BTNFONTBOLD TO .T. //aGrFill := { { 0.5, CLR_HRED , CLR_WHITE }, { 0.5, CLR_WHITE , CLR_HRED } } //aGrOver := { { 0.5, CLR_RED , CLR_HRED }, { 0.5, CLR_HRED , CLR_RED } } //SET MSGALERT BTNGradientFill TO aGrFill //SET MSGALERT BTNGradientOver TO aGrOver // или новый синтаксис // aBtnGrClr := { aGrFill, aGrOver } // lBtnBold := .T. // AlertStop( cMsg, cTitle, cIco, 64, aBtnGrClr, lTopMost, bInit, lNoSound, aBtnText, aBtnFntClr, lBtnBold ) Return Nil } // AlertStop ( Message, Title, Icon, nSize, aColors, lTopMost, bInit, lNoSound , aBtnFntClr )[/pre2] Григорий, можно это сделать ? Очень хочется... Синтаксис можно поменять, это просто моё видение синтаксиса.

SergKis: Andrey У тебя есть bInit во всех ф-ях AlertStop ( Message, Title, Icon, nSize, aColors, lTopMost, bInit, lNoSound , aBtnFntClr ) вызывается практически последней командой перед END WINDOW, выглядит [pre2] IF HB_ISBLOCK( bBlock ) Do_WindowEventProcedure( bBlock, This.Index, 'WINDOW_INIT' ) ENDIF [/pre2] т.е. блок кода выполняется со средой окна, возьми и замени не устраивающий контрол на свой, которой нравится, можно в тех же координатах, а можно все контролы переставить, поменяв координаты и добавить новые PS. Блок кода, как в событиях :Event(..., {|| ... }) без параметра. Можешь сделать в блоке, т.е. bInit := {|| my01() } STAT FUNCT my01() Local ow := This.Object, aControl Local cWnd := This.Name, aType Local hWnd := This.Handle ... aControl := HMG_GetFormControls (cWnd) aType := ow:GetListType() ... Draw_BtnEx( y, x, oBtn, nWBtn, nHBtn, nGBtn, lRow ) ... This.Width := ... This.Height := ... RETURN Nil

Andrey: SergKis пишет: У тебя есть bInit во всех ф-ях Хочется ГОТОВУЮ и практичную функцию в составе МиниГуи (из коробки), а не заниматься дописыванием уже имеющих функций. И самое ГЛАВНОЕ, я отказался ВЕЗДЕ от правки bInit в своих функциях. Большая прога тупо вылетает на них !!! Я тебе давал логи вылета и так не смог победить эти вылеты. Убрал код в bInit и вылеты прекратились. Так что этим bInit - нельзя пользоваться в БОЛЬШИХ программах, в маленьких работают.

SergKis: Andrey пишет Я тебе давал логи вылета и так не смог победить эти вылеты. Так стиль написания такой, что проще заменить, причем весь код, я тебе про это говорил и писал. Так что этим bInit - нельзя пользоваться в БОЛЬШИХ программах, в маленьких работают Вся hmg на блоках кода, события окон, контролов и ... А bInit простой код в теле окна и заменить BUTTON, на BUTTONEX в тех же или немного др. координатах + изменить размер окна снизу - это оч. простые действия, ты их постоянно делаешь добавляя ф-ии (список целый) после DEFINE TBROWSE ... до END TBROWSE и все это находится в блоке кода события окна\кнопки ...

SergKis: Andrey пишет Хочется ГОТОВУЮ и практичную функцию Можно попробовать вариант задания aBtnColors, для BUTTONEXT, каждый элемент массива задавать объектом THmgData. Тогда код может быть такой [pre2] ... aBtnColors[ n ] := oHmgData() aBtnColors[ n ]:cIcon := "..." aBtnColors[ n ]:aGrFill := { { 0.5, CLR_HRED , CLR_WHITE }, { 0.5, CLR_WHITE , CLR_HRED } } aBtnColors[ n ]:aGrOver := { { 0.5, CLR_RED , CLR_HRED }, { 0.5, CLR_HRED , CLR_RED } } или aBtnColors[ n ]:cIconName := "..." aBtnColors[ n ]:aGradientFill := { { 0.5, CLR_HRED , CLR_WHITE }, { 0.5, CLR_WHITE , CLR_HRED } } aBtnColors[ n ]:aGradientOver := { { 0.5, CLR_RED , CLR_HRED }, { 0.5, CLR_HRED , CLR_RED } } ... *-----------------------------------------------------------------------------* STATIC FUNCTION FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize, aBtnColors, bBlock, lClosable, cFont, nMaxLen ) *-----------------------------------------------------------------------------* ... FOR n := 1 TO nLenaOp cBtnName := "Btn_" + StrZero( n, 2 ) AAdd( aBut, cBtnName ) IF lExt IF Valtype( aBtnColors[ n ] ) == "O" // контейнер THmgData cIcon := aBtnColors[ n ]:cIcon aBthColor := aBtnColors[ n ]:aGrOver aGrFill := aBtnColors[ n ]:aGrFill Default cIcon := aBtnColors[ n ]:cIconName Default aBthColor := aBtnColors[ n ]:aGradientOver Default aGrFill := aBtnColors[ n ]:aGradientFill bGotFocus := aBtnColors[ n ]:bMouseHover bLostFocus := aBtnColors[ n ]:bMouseLeave Default bGotFocus := aBtnColors[ n ]:bGotFocus Default bLostFocus := aBtnColors[ n ]:bLostFocus ELSE cIcon := NIL aBthColor := aBtnColors[ n ] aGrFill := NIL bGotFocus := NIL bLostFocus := NIL ENDIF @ 0, 0 BUTTONEX ( cBtnName ) OF ( cForm ) CAPTION aOptions[ n ] ICON cIcon ; FONTCOLOR aFontColor BACKCOLOR aBtnColor GRADIENTFILL aGrFill NOXPSTYLE HANDCURSOR ; FONT cFont WIDTH nMaxBoton HEIGHT nVMARGIN_BUTTON + nChrHeight + nVMARGIN_BUTTON ; ACTION ( _HMG_ModalDialogReturn := This.Cargo, _SetGetGlobal( "_HMG_PressButton", .T. ), ThisWindow.Release() ) IF Valtype( bGotFocus ) == "B" ; SetProperty( cForm, cBtnName, "GOTFOCUS", bGotFocus ) ENDIF IF Valtype( bLostFocus ) == "B" ; SetProperty( cForm, cBtnName, "LOSTFOCUS", bLostFocus ) ENDIF ELSE ... Задаем значения: aBtnText := {" &Продолжить "} aBtnText := {" &Да "," &Нет "} aBtnClr := { oHmgData(), oHmgData() } aBtnClr[1]:cIcon := "..." aBtnClr[1]:aGrFill := { { 0.5, CLR_HRED , CLR_WHITE }, { 0.5, CLR_WHITE , CLR_HRED } } aBtnClr[1]:aGrOver := { { 0.5, CLR_RED , CLR_HRED }, { 0.5, CLR_HRED , CLR_RED } } aBtnClr[2]:cIcon := "..." aBtnClr[2]:aGrFill := { { 0.5, CLR_HRED , CLR_WHITE }, { 0.5, CLR_WHITE , CLR_HRED } } aBtnClr[2]:aGrOver := { { 0.5, CLR_RED , CLR_HRED }, { 0.5, CLR_HRED , CLR_RED } } ... AlertStop( cMsg, cTitle, cIco, 64, aBtnClr, .T., bInit, lNoSound ) [/pre2]

SergKis: Andrey пишет Хочется ГОТОВУЮ и практичную функцию в составе МиниГуи (из коробки) "Их есть у меня" (c) Ставим градиент на кнопку[и]. Пример тут https://TransFiles.ru/5n3ae Запуск: demo.exe 1 demo.exe 2 demo.exe 3 demo.exe

Andrey: Спасибо БОЛЬШОЕ !

Andrey: Сейчас на mail.ru сделано красиво - снежинки падают. Можно так же сделать на МиниГуи ?



полная версия страницы