Форум » 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

Vlad04: Да....Совсем не просто!

SergKis: Vlad04 пишет:Совсем не просто! В чем затруднения ? Знать классы в рамках описания от А. Кресина надо, понимания MiniGui тоже, это минимум от которого плясать. В примере еще много мусора (пробы разные), а так до PVN*.PRG - это базовые (абстрактные) заготовки классов, а PVN*.PRG - уже наследование и сама задача, там 2-окна (mdi main и mdi child) и 3-и browse в child, отображаемые по одному в зависимости от режима.

digikv: есть ли onKeyDown в TSBrowse?


Haz: digikv пишет: есть ли onKeyDown в TSBrowse в исходнике ... METHOD KeyChar( nKey, nFlags ) METHOD KeyDown( nKey, nFlags ) METHOD KeyUp( nKey, nFlags )

digikv: Я ищу event onKeyDown в TSBrowse нет Method

Haz: digikv пишет: Я ищу event onKeyDown в TSBrowse В TSBrowse есть method KeyDown , в этом методе есть обработка ::bUserKeys. event onKeyDown можно отловить через ::bUserKeys. Использование ::bUserKeys есть в примерах по TSBrowse Примерно так : где xRet - это или код клавиши которую обработает метод ::KeyDown() или логическое значение ( см обработку в исходнике ::KeyDown() ) [pre2] oBrw:bUserKeys := { || onKeyDown(nKey, nFlag, oBrw) } FUNCTION onKeyDown( nKey, nFlag, oBrw ) local xRet DO CASE CASE nKey == ... END RETURN xRet [/pre2]

digikv: благодарю вас

digikv: Почему nRecNo всегда 0 в LOCAL nRecNo := GetProperty( "oDlg", 'oBrw', 'VALUE' ) #include "minigui.ch" #include "tsbrowse.ch" STATIC oDlg, oFind, nOrd, nRet FUNCTION dbChoice( cAlias, bBlock, cTitle, bWork, cOrder ) Local oFont nOrd := (cAlias)->( ordSetFocus( cOrder ) ) DEFINE WINDOW oDlg AT 0,0 WIDTH 410 HEIGHT 510 TITLE cTitle ICON "KASA" CHILD DEFINE LABEL oFind ROW 0 COL 0 WIDTH 410 HEIGHT 24 FONTNAME 'Times New Roman' FONTSIZE 14 VALUE "" END LABEL @ 25,0 TBROWSE oBrw ALIAS cAlias; OF oDlg ; WIDTH 380; HEIGHT 400 ; HEADERS "" ; WIDTHS 400; FIELDS (cAlias)->Naziv; FONT 'Times New Roman' SIZE 12 oBrw:bUserKeys := { |nKey, nFlag| onKeyDown(nKey, nFlag, cAlias ) } END WINDOW oDlg.Center ACTIVATE WINDOW oDlg RETURN nRet FUNCTION onKeyDown( nKey, nFlag, cAlias ) LOCAL cFind := GetProperty( "oDlg", 'oFind', 'VALUE' ) LOCAL nRecNo := GetProperty( "oDlg", 'oBrw', 'VALUE' ) IF nKey==VK_RETURN (cAlias)->(dbGoTo(nRecNo)) nRet := (cAlias)->Sifra msginfo('nRet='+STR(nRet)+' RecNo()='+STR(nRecNo) ) (cAlias)->(ordScope( 0, )) (cAlias)->(ordScope( 1, )) (cAlias)->( ordSetFocus( nOrd ) ) RELEASE WINDOW oDlg ELSEIF nKey==VK_ESCAPE nRet:=0 (cAlias)->(ordScope( 0, )) (cAlias)->(ordScope( 1, )) (cAlias)->( ordSetFocus( nOrd ) ) RELEASE WINDOW oDlg ELSEIF nKey == VK_UP ELSEIF nKey == VK_LEFT ELSEIF nKey == VK_RIGHT ELSEIF nKey == VK_DOWN ELSEIF nKey == VK_NEXT ELSEIF nKey == VK_PRIOR ELSEIF nKey == VK_END ELSEIF nKey == VK_HOME ELSEIF nKey == VK_INSERT ELSEIF nKey == VK_BACK SetProperty( "oDlg", 'oFind', 'VALUE', LEFT( cFind, LEN( cFind ) - 1) ) oDlg.oFind.REFRESH() cFind := GetProperty( "oDlg", 'oFind', 'VALUE' ) (cAlias)->(ordScope( 0, cFind )) (cAlias)->(ordScope( 1, cFind )) oDlg.oBrw.REFRESH() ELSEIF nKey >= 32 .AND. nKey <= 255 SetProperty( "oDlg", 'oFind', 'VALUE', cFind+UPPER(CHR( nKey )) ) oDlg.oFind.REFRESH() cFind := GetProperty( "oDlg", 'oFind', 'VALUE' ) (cAlias)->(ordScope( 0, cFind )) (cAlias)->(ordScope( 1, cFind )) oDlg.oBrw.REFRESH() ENDIF RETURN .T.

Haz: digikv пишет: Почему nRecNo всегда 0 в TS нет Value == Recno() Попробуйте так nRecNo := (oBrw:cAlias)->(RecNo()) PS dbGoTo(nRecNo) - не приведет к установке бровса на нужную запись, для этого там есть метод :GotoRecNo()

digikv: Я читал в MiniGui.chm PROPERTIES: · Value Set / Gets browse value - selected record number Теперь все работает правильно. Еще раз спасибо за вашу помощь.

Haz: digikv пишет: Я читал в MiniGui.chm PROPERTIES: · Value Set / Gets browse value - selected record number Это правильно для BROWSE , а не для TSBROWSE

Andrey: Григорий ! Возвращаюсь к вопросу по иконкам. Будут ли какие то улучшения в библиотеке для иконок ? Можно примерно так: Для любой иконки содержащиеся в своих ресурсах @ 10,10 ICON Icon_1 PICTURE "Calc64x1" WIDTH 64 HEIGHT 64 RESTYPE INTERNAL Для любой иконки содержащиеся в чужих ресурсах cFile := System.SystemFolder + "\shell32.dll" @ 10,10 ICON Icon_1 PICTURE "Icon_164" WIDTH 128 HEIGHT 128 RESTYPE EXTERNAL FILE cFile Можно и короче (WIDTH 128 HEIGHT 128) -> (SIZE 128) Народ, кто что думает по этому вопросу ? Кому не хватает простого вывода иконки на ЦВЕТНУЮ форму ?

krutoff: SergKis пишет: лови test Тоже хотел посмотреть, но ссылка битая. Файлообменник уже удалил... Andrey пишет: Кому не хватает простого вывода иконки на ЦВЕТНУЮ форму ? Я бы от такого тоже не отказался, поддерживаю.

SergKis: krutoff пишет: Тоже хотел посмотреть тут click here

gfilatov2002: Andrey пишет: Будут ли какие то улучшения в библиотеке для иконок ? Мечты сбываются Прямо сейчас прорабатываю новую команду с таким синтаксисом #xcommand DRAW ICON IN WINDOW <windowname> AT <row>,<col> ; PICTURE <filename> ; [ WIDTH <w> ] ; [ HEIGHT <h> ] ; [ COLOR <rgb> ] ; [ <transparent: TRANSPARENT> ] ; => ; drawicon(<"windowname">,<filename>,<row>,<col>,[<w>],[<h>],[<rgb>],<.transparent.>) где filename - это имя файла на диске или внутреннего ресурса программы Примечание. Вскрытие показало, что WinAPI-функция ExtractIcon() возвращает иконки только стандартного размера 32х32

Andrey: gfilatov2002 пишет: Прямо сейчас прорабатываю новую команду с таким синтаксисом Ура !

Andrey: gfilatov2002 пишет: DRAW ICON IN WINDOW <windowname> AT <row>,<col> ; PICTURE <filename> ; [ WIDTH <w> ] ; [ HEIGHT <h> ] ; [ COLOR <rgb> ] ; [ <transparent: TRANSPARENT> ] ; Что то не пашет, если на форме лежит ещё цветной LABEL ! Пример отправил на почту... И ещё одно - синтаксис урезать можно ? Сделать без "IN WINDOW Forma_1" и с ним ?

Vlad04: Похоже MiniGui достиг своего Эльбруса (вершины). Идет неспешное причесывание небольшой лохматости.

gfilatov2002: Vlad04 пишет: MiniGui достиг своего Эльбруса Это невозможно, поскольку WinAPI продолжает развиваться (особенно, с выходом Win10) Например, в библиотеке напрочь отсутствует поддержка toast-сообщений, основанных на вызове WinRT методов

Andrey: gfilatov2002 пишет: оддержка toast-сообщений, основанных на вызове WinRT методов Это для чего ? Нам инструмент нужен для создания полноценных приложений для бухов и т.д. Чего не хватает: 1) Редактора форм (то что есть уж очень негибкие), посмотрет тот же хХарбор - там редактор форм получше. 2) Работа с Png - чтобы картинки на форме не выглядели обгрызано !!! И можно тогда отказаться от иконок (.ico) 3) Работа с Png в Tsbrowse. Там вообще с png-непонятно... 4) Раздела (доки или примеров) работы с DLL. 4) Ну наверное в хелпер нужно дать короткое описание примеров, кто зачем и почему.



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