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

Dima: rvu Для IE не забываем oActiveX:Silent := 1

rvu: В html есть несколько фреймов. А как программным путем сделать конкретный фрейм активным? Хочу сделать кнопки печати сверху браузера, но чтобы они с разными фреймами работали. Или как вариант - узнать имя файла открытого именно в этом фрейме в данный момент времени. Это можно?

SergKis: rvu пишет А как программным путем сделать конкретный фрейм активным? на hb это не делал, пробовал на AoutoIt, думается суть работы должна быть похожа [pre2] 1. #include <IE.au3>; подключаем библиотеку $oIE=_IECreate("http://10.3.30.103:9080/Main/login.html") _IELoadWait($oIE) $oFrame=_IEFrameGetCollection($oIE) $oObj=_IEGetObjById($oFrame,'j_username'); здесь поле ввода логина _IEAction($oObj,'focus'); фокус на поле логина _IEAction($oObj,'CLICK'); клик на логине 2. $oInputs=_IETagNameGetCollection($oIE,'input') ;Наводим фокус на поле логина For $oInput In $oInputs If $oInput.type=='text' and $oInput.name=='j_username' Then _IEAction($oInput,"focus") ExitLoop EndIf Next [/pre2]


rvu: Засада оказалось в другом месте. Печать работает только для всех фреймов сразу. Как ее сделать для одного фрейма не понял. Пока что повесил кнопку прямо во фрейме, в html, хотя мне это и не нравится.

SergKis: rvu Может якорь белый текст на белом фоне вместо кнопки и его исполнять

Andrey: Чем отличается работа МиниГуи в Win7 от Win8.1 ? Сам пишу программу под Win8.1, ошибок нет, всё прекрасно работает. Под Win7 при показе вылетает и всё тут. Пытаюсь повторить эту ошибку у себя - нет ошибки. Совсем нет. Пример: Как поймать эти ошибки ? Сделать запись в текстовый лог всех нажатий мышки на формах ? А как ?

Haz: Andrey пишет: Чем отличается работа МиниГуи в Win7 от Win8.1 ? Как минимум разные версии виндовс могут в разном порядке обрабатывать события. Сталкивался на W7 и Server2003 Как поймать эти ошибки ? Установить себе W7

Dima: Andrey пишет: Сам пишу программу под Win8.1 А на ней кто то работает еще ? Народ в основном юзает XP(почти уходит на нет) ,7(как правило эту ось юзают) или 10(таких не много)

Andrey: Dima пишет: А на ней кто то работает еще ? Да нет, под Win8.1 мало кто сидит. В основном народ уже уходит на 10-ку. Просто Win8.1 как и 10-ка меньше проблем, МиниГуи - рулит ! На них прога работает отлично, под Windows Server 2008/2012 тоже проблем нет, а вот под 7-кой начинает вылетать моя прога. В самых неожиданных местах. Принудительно клиента перевести не могу. Видно придётся ждать, пока клиент созреет сам перейти на 10-ку.

Haz: Andrey пишет: вот под 7-кой начинает вылетать моя прога На работе 7ка и server2003 дома 10ка… Нигде ни чего не вылетает. Вернее все вылеты устранены.

Vlad04: Уважаемые коллеги! Пора двигаться вперед с Харбором, подтягивать программу к интернету. А то точно останемся на обочине. Всё чиним, чиним, деревянные колеса в своей телеге, когда все уже давно пересели на машины.

Andrey: Vlad04 пишет: Пора двигаться вперед с Харбором, подтягивать программу к интернету. А то точно останемся на обочине. Не понятное предложение, очень расплывчатое. Более подробнее опишите что нужно.

Andrey: Григорий давал такой код для показа иконок на форме: [pre2] DEFINE WINDOW Form_Main ... .... ON GOTFOCUS RefreshWin( ThisWindow.Handle ) ; .... DRAW ICON IN WINDOW Form_Main AT .... ...[/pre2] и функцию эту [pre2]// перересовка объектов на форме #define WM_PAINT 15 *--------------------------------------------------------* Static Procedure RefreshWin( hWnd ) *--------------------------------------------------------* SendMessage( hWnd, WM_PAINT, 0, 0 ) Do Events Return[/pre2] Надоело таскать это из проекта в другие проекты. Можно вставить эту функцию в МиниГуи ? Или можно по другому уже делать ?

Andrey: SergKis пишет: А RefreshWnd(hWnd), попробуй сделать в свой ch или prg #xtranslate RefreshWnd( <hWnd> ) => SendMessage( <hWnd> , 15 , 0 , 0 ) ; DoEvents() // WM_PAINT 15 Нет, не компилируется... Вот такая ошибка: [pre2]Harbour 3.2.0dev (r2104281802) Copyright (c) 1999-2021, https://harbour.github.io/ test-tsbview.prg(51) Error E0030 Syntax error "syntax error at 'ON'" 1 error No code generated.[/pre2] Исходник такой: [pre2] DEFINE WINDOW Form_Main WIDTH nW HEIGHT nH TITLE cTtl ; MAIN NOMAXIMIZE NOSIZE TOPMOST BACKCOLOR aBClr ; ON GOTFOCUS RefreshWin( ThisWindow.Handle ) ; ON INIT {|| This.TopMost := .F., This.Minimize ,; DoEvents(), _wPost(nEvent) /*, _wPost(99)*/ } [/pre2]

SergKis: Andrey пишет Нет, не компилируется... Вот такая ошибка Ты подумал , что получилось после подстановки или посмотрел файл после препроцессора, параметр -p... ? добавь скобки тут #xtranslate RefreshWnd( <hWnd> ) => ( SendMessage( <hWnd> , 15 , 0 , 0 ) ; DoEvents() ) или в ON GOTFOCUS ( ... ) или {|| ... }

Andrey: SergKis пишет: Ты подумал , что получилось после подстановки или посмотрел файл после препроцессора, параметр -p... ? добавь скобки тут Да я думал, что уже готовое решение ...

Andrey: [pre2]DRAW ICON IN WINDOW ....[/pre2] Можно ли добавить к этой программе возможности смены курсора на этом объекте и обработку клика мышки на этой иконке ?

gfilatov2002: Andrey пишет: возможности смены курсора на этом объекте и обработку клика мышки Да, это можно сделать Посмотри, как это работает в примере ниже (доработан пример из папки samples\Basic\Icons): [pre2]/* * Author: P.Chornyj <myorg63@mail.ru> * * A Quick & Easy guide to Microsoft Windows Icon Size * https://www.creativefreedom.co.uk/icon-designers-blog/windows-7-icon-sizes/ */ ANNOUNCE RDDSYS #include "hmg.ch" /////////////////////////////////////////////////////////////////////////////// procedure main() local cIcon := 'IconVista.ico', hIcon local aInfo PUBLIC w, h if IsVistaOrLater() hIcon := LoadIconByName( cIcon, 256, 256 ) elseif IsWinXPorLater() hIcon := LoadIconByName( cIcon, 128, 128 ) endif if Empty( hIcon ) quit endif aInfo := GetIconSize( hIcon ) w := aInfo[ 1 ] h := aInfo[ 2 ] define window Form_Main ; clientarea w, h + GetMenuBarHeight() ; title 'Icons Demo' ; main ; nomaximize nosize ; on release ; ( ; DestroyIcon( hIcon ) ; ) define main menu define popup "&File" menuitem "E&xit" action ThisWindow.Release end popup end menu CREATE EVENT ProcName _IconMouseClick() end window draw icon in window Form_Main at 0, 0 hicon hIcon width w height h on key Escape of Form_Main action ThisWindow.Release Form_Main.Center() Form_Main.Activate() return function _IconMouseClick( hWnd, nMsg, wParam, lParam ) LOCAL Flag := _IconMouseCursor() LOCAL RetVal := NIL #define WM_LBUTTONDOWN 513 IF nMsg == WM_LBUTTONDOWN .AND. Flag == .T. IF hWnd == GetFormHandle( "Form_Main" ) // Click in show page to print RetVal := 0 MsgInfo("Mouse Click!") ENDIF ENDIF RETURN RetVal function _IconMouseCursor() LOCAL hWnd, aPos, IsPoint, aCoords := { h/2-10, w/2-10, h/2+10, w/2+10 } STATIC s_Flag := .F. IF _IsWindowDefined ( "Form_Main" ) .AND. ValType( aCoords ) == 'A' hWnd := GetFormHandle( "Form_Main" ) aPos := GetCursorPos( hWnd ) IsPoint := PtInRect( aPos, aCoords ) IF IsPoint == .T. .AND. s_Flag == .F. s_Flag := .T. SetWindowCursor( hWnd, IDC_HAND ) ELSEIF IsPoint == .F. .AND. s_Flag == .T. s_Flag := .F. SetWindowCursor( hWnd, IDC_ARROW ) ENDIF ENDIF RETURN s_Flag [/pre2] В этом примере мышка меняет форму курсора и выполняет действие только в центре иконки

Andrey: gfilatov2002 пишет: Посмотри, как это работает в примере ниже Спасибо БОЛЬШОЕ !

Andrey: В 1С используют стандартный/системный бегунок копирования файлов. А на МиниГуи можно сделать так же ?



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