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. Как вывести на форму (не на кнопку) иконку заданного размера ? Вот пока часть чего хочется... Может на Рождество желания сбудутся ?
Vlad04: Мечты, мечты ..... Я хотел -бы чтобы работа в Ide МиниГуи была похожа на работу в дизайнере Делфи или V.Basic, чтобы поддерживались основные необходимые компоненты и их свойства( позиционирование, контейнера и т.д.). а программирование поддерживало все приемы ОПП, без псевдо GetProperty, SetProperty..
gfilatov2002: Vlad04 пишет: чтобы работа в Ide МиниГуи была похожа на работу в дизайнере Делфи или V.Basic Ide МиниГуи имеет открытые исходники - Вы можете добавлять недостающий функционал самостоятельно Vlad04 пишет: программирование поддерживало все приемы ОПП Существует незавершенный открытый проект от автора Minigui, датированный 2010 годом, под названием HMG OBJECTS, который поддерживает полноценное ОПП Пример использования: [pre2]/* HMG Nice OOP! Demo(Full OOP syntax) (c) 2010 Roberto Lopez <mail.box.hmg@gmail.com> - HMG OBJECTS is designed to give to the programmers a similar experience as one using Clipper's predefined classes - Windows and its controls are created at window activation unless 'Create()' method is invoked. - Create() method is available for windows and controls. - Control's 'Parent' property is optional. If not specified, the last window defined is its default value. - xBase and alternate syntax can be used. - Control's 'Name' property (optional): At control creation, an instance variable is dynamically added to its parent window object. The name of this instance variable, is the control's name and its content is the control object. So, you could access a particular control (ie) in the following way: oWindow:Frame_1:Caption := 'New Caption' MsgInfo ( oWindow:Frame_1:Caption ) Look at \samples\button for working samples. */ #include "..\..\include\objects.ch" Set Procedure To ..\..\source\objects Function Main Local oWindow , oButton1 With Object oWindow := Window():New() :Row := 10 :Col := 10 :Width := 400 :Height := 400 :Title := 'Nice OOP Demo!!!' :Type := WND_MAIN :OnInit := { || oWindow:Center() } With Object oButton1 := Button():New() :Row := 40 :Col := 40 :Caption := 'OOP Button!!!' :OnClick := { || Button1Click() } End With End With oWindow:Activate() Return Procedure Button1Click() Local oStandard With Object oStandard := Window():New() :Row := 10 :Col := 10 :Width := 600 :Height := 300 :Title := 'Nice OOP Standard Window!!!' :Type := WND_STANDARD :OnInit := { || ( oStandard:Center() ) } End With oStandard:Activate() Return [/pre2]
SergKis: Andrey пишет: Как собирать свои ресурсы к программе в отдельную dll-ку пример создания dll: http://tempfile.ru/file/3102753
SergKis: Vlad04 пишет:программирование поддерживало все приемы ОПП сам напиши классы, обвесив функции окон, контролов MiniGui - не так и сложно
Dima: Andrey пишет: 2.2. Как из shell32.dll (она содержит все размеры иконок) можно выбрать и показать иконку отличную от размера 32х32 ? Вероятно надо глянуть пример MiniGUI\SAMPLES\BASIC\ExtractIcon\demo2.prg + MiniGUI\SAMPLES\Advanced\IconView\IcoView.prg а в нем параметры передаваемые функции EXTRACTICONEX (EXTRACTICON) PS Если есть непонятки спросить у gfilatov
Dima: Dima пишет: EXTRACTICONEX возможно вместо нее нужно использовать SHGetFileInfo , так как у EXTRACTICONEX только 2 варианта или маленькая иконка или большая. PS Просто погуглил
Andrey: Dima пишет: возможно вместо нее нужно использовать SHGetFileInfo Вот я и об этом и пишу, что нет функций в МиниГуи для работы с иконками... Если была, то я бы закатал все ресурсы в отдельную DLL (уж больно большим мой ехе-ник стал) и выводил на кнопку или форму нужные мне/ВСЕМ иконки (заданного размера). Вот единственный пример с функцией SHGetFileInfo который помог мне сделать Григорий. А SergKis переделал под универсальную форму просмотра. Прикольный получился пример. Жалко, что нет его в библиотеке... Но эта функция используется для других целей. Вот пример IconAssociatedFile_4.7z - https://cloud.mail.ru/public/56155cb9fec5/MiniGui-Sample
XVar: В принципе можно строить отличный интерфейс, но возможнось таскать панели и невозможность указать минимальный (максимальный) размер удручает.
Andrey: Как в Минигуи сделать МойПроект.hbp для сборки нескольких .prg в МояБиблиотека.lib, чтобы потом прилинковывать к своему проекту ?
SergKis: Andrey пишет:Как в Минигуи сделать МойПроект.hbp для сборки нескольких .prg в МояБиблиотека.lib, чтобы потом прилинковывать к своему проекту ? Ты уверен, что при каждой компиляции, надо собирать lib ? Проект еще не отлажен, lib для работы не годится. Когда довел до ума, тогда и собирай ((пополняй lib), т.е. запустил bat\cmd и собрал new версию lib : [pre2] SET HB_INS_BCC=<путь к BCC> SET HBMK2_OBJ=<путь к объектникам проекта, создаваемых hbmk2> SET MYLIB_OUT=<путь и имя своей библиотеки> if not exist %MYLIB_OUT% goto Crt :Upd for %%i in ( %HBMK2_OBJ%\*.obj ) Do %HB_INS_BCC%\bin\tlib.exe %MYLIB_OUT -+%%i > nul goto e :Crt for %%i in ( %HBMK2_OBJ%\*.obj ) Do %HB_INS_BCC%\bin\tlib.exe %MYLIB_OUT %%i > nul :e [/pre2]
Andrey: SergKis пишет: Ты уверен, что при каждой компиляции, надо собирать lib ? Проект еще не отлажен, lib для работы не годится. Да я понимаю, что не нужно при каждой компиляции собирать свою lib. Просто хочу собрать уже свои отлаженные модули в lib. Вот и вопрос возник: Как в Минигуи сделать МойПроект.hbp для сборки нескольких .prg в МояБиблиотека.lib ?
Andrey: gfilatov2002 пишет: Посмотри мой проект, которым я сейчас собираю библиотеку: Спасибо БОЛЬШОЕ ! И поясни пожалуйста вот про эти 2 флага: -hbx=../include/hmg.hbx -cflag=-DWIN32_LEAN_AND_MEAN
gfilatov2002: Andrey пишет: поясни пожалуйста вот про эти 2 флага: -hbx=../include/hmg.hbx -cflag=-DWIN32_LEAN_AND_MEAN Ключ -hbx указывает утилите hbmk2 путь к файлу .HBX, который нужен для декларации всех функций библиотеки как EXTERNAL. Примечание. Используется в заголовке minigui\include\mgextern.ch Ключ -cflag указывает Си-компилятору дополнительный пользовательский переключатель. В данном случае это позволяет генерировать .OBJ модули меньшего размера. Если в твоей библиотеке НЕТ сишных модулей, то он НЕ нужен
Andrey: Спасибо !
Vlad04: gfilatov2002 цитата: программирование поддерживало все приемы ОПП Существует незавершенный открытый проект от автора Minigui, датированный 2010 годом, под названием HMG OBJECTS, который поддерживает полноценное ОПП Это , наверно было очень давно. В версиях hmg.3.4.1 и предыдущих нет следов HMG OBJECTS. Или я плохо искал ?
Vlad04: SergKis цитата: программирование поддерживало все приемы ОПП сам напиши классы, обвесив функции окон, контролов MiniGui - не так и сложно А примерчик небольшой можно? Окно с Бровсом и кнопочками
Dima: Vlad04 Да вот оно вроде http://sourceforge.net/projects/oohg/