Форум » GUI » Новая версия Расширенного релиза библиотеки MiniGUI (часть V) (продолжение) » Ответить

Новая версия Расширенного релиза библиотеки MiniGUI (часть V) (продолжение)

gfilatov: Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

gfilatov2002: Dima пишет: не вижу библы BosTaurus под MINGW , что делать ? Все верно. Эту библиотеку под MINGW можно взять в этом форке минигуи http://sourceforge.net/projects/hbpidew/

Dima: gfilatov2002 Понял , не понял пока одного , для чего выкладывать обрезанную версию под MINGW если есть полная ?

gfilatov2002: Dima пишет: для чего выкладывать обрезанную версию под MINGW Библиотека BosTaurus является сопутствующей (не основной) для минигуи, поэтому для уменьшения установочного файла она не была включена в поставку для компилятора MINGW Добавление этой либы самостоятельно - довольно простая задача Но если есть потребность, я могу добавить ее в поставку на постоянной основе. Пишите...


Dima: gfilatov2002 пишет: Но если есть потребность, я могу добавить ее в поставку на постоянной основе. Вопрос не в этом Я просто ожидал что сборка под BCC и MINGW будет одинакова , по меньшей мере в плане библиотек. PS Xharbour сборку не копал но судя по тому что она "компактная" в ней тоже нет всего того что есть в сборке под BCC , о либах я. С примерами все ясно.

gfilatov2002: Новый релиз библиотеки для компилятора BCC выложил, как и обещал, на официальном сайте библиотеки по адресу: http://hmgextended.com/files/CONTRIB/hmg-2.4.8-setup.zip Также доступна полная сборка для компилятора MinGW по адресу: http://hmgextended.com/files/CONTRIB/hmg248-mingw.exe и компактный архив для свежей версии компилятора xHarbour http://hmgextended.com/files/CONTRIB/xhmg248_xhb10128.zip Благодарю за внимание

Andrey: Пересобрал несколько проектов. Полёт нормальный !

Andrey: Григорий, смотрю что в новом релизе нет примера из Прием-передача данных5.7z между программами ? Классный пример же, можно присоединить к любой программе и записывать действия пользователя или делать обмен между своими программами.

Dima: gfilatov2002 METHOD ReSize Для правильной установки автоширины было [pre2] AEval( ::aColSizes, {|n| nTotPix += n } ) [/pre2] стало [pre2] AEval( ::aColumns, {|n| IF( n:lVisible, nTotPix += n:nWidth, nil ) } ) do events [/pre2] ******************************************* Что бы курсор не мигал при достижении верхней/нижней видимой границы бровса. METHOD GoUp было [pre2] If ! ::lHitTop If ! ::lAppendMode ::DrawLine() EndIf [/pre2] стало [pre2] If ! ::lHitTop If ! ::lAppendMode .and. ::nRowPos > 1 ::DrawLine() EndIf [/pre2] METHOD GoDown было [pre2] If ! ::lHitBottom If ! ::lAppendMode .and. ! ::lIsTxt ::DrawLine() EndIf [/pre2] стало [pre2] If ! ::lHitBottom If ! ::lAppendMode .and. ! ::lIsTxt .and. ::nRowPos < nLines ::DrawLine() EndIf [/pre2] Сырец c_TBrowse.c HARBOUR HB_FUN_TSBRWSCROLL () было [pre2] rct.bottom -= ( ( rct.bottom - rct.top ) % nHeightCell ); [/pre2] стало [pre2] rct.bottom -= ( ( rct.bottom - rct.top ) % nHeightCell ); if( iRows > 0 ) rct.bottom -= nHeightCell; else rct.top += nHeightCell; [/pre2] ************************************************************ Тот же сырец. void DrawBitmap Что бы BMP был прозрачным в бровсе было [pre2] dwRaster = SRCCOPY; [/pre2] стало [pre2] dwRaster = SRCAND; [/pre2] ********************************************************** Теперь глюк , METHOD PageUp Поймать его сложно. Но если (кол-во записей-1) делится на цело на кол-во строк что помещаются на экран , то его видно. Пролистываем несколько страниц вниз а затем жмем и держим PageUP , глюк на лицо. было [pre2] If nSkipped == 0 ::lHitTop := .T. Else If -nSkipped < nLines nRecNo := If( ::lIsDbf, ( ::cAlias )->( RecNo() ), ::nAt ) [/pre2] стало [pre2] If nSkipped == 0 ::lHitTop := .T. Else If -nSkipped < nLines .or. ::nAt == 1 nRecNo := If( ::lIsDbf, ( ::cAlias )->( RecNo() ), ::nAt ) [/pre2] ********************************************************** правки от SergKis добавление символьного имени колонки для возможности обращения по нему [pre2] TSCOLUMN DATA cName INIT "" // Имя колонки изменение метода GetColumn() TSBROWSE для поддержки символьного имени METHOD GetColumn( nCol ) CLASS TSBrowse Default nCol := 1 IF hb_IsString( nCol ) nCol := Max( AScan( ::aColumns, {|oCol| Upper(oCol:cName)==Upper(nCol) } ), 1) RETURN ::aColumns[ nCol ] // returns a Column object ENDIF If nCol < 1 nCol := 1 ElseIf nCol > Len( ::aColumns ) nCol := Len( ::aColumns ) EndIf Return ::aColumns[ nCol ] // returns a Column object изменение метода LoadFilds() TSBROWSE для автоматического назначения имен колонок по имени поля добавить в метод строку ATail( ::aColumns ):cName := FieldName( nE ) изменение метода SetColSize() - для понимания символьного имени METHOD SetColSize( nCol, nWidth ) CLASS TSBrowse Local nI, nSize If ValType( nCol ) == "A" For nI := 1 To Len( nCol ) nSize := If( ValType( nWidth ) == "A", nWidth[ nI ], nWidth ) ::aColumns[ nCol[ nI ] ]:nWidth := nSize ::aColSizes[ nCol[ nI ] ] := IF(::aColumns[ nCol[ nI ] ]:lVisible, ::aColumns[ nCol[ nI ] ]:nWidth, 0) Next Elseif ValType( nCol ) == "C" nI := ASCAN( ::aColumns, { |oCol| UPPER( oCol:cName ) == Upper(nCol) }) ::aColumns[ nI ]:nWidth := nWidth ::aColSizes[ nI ] := IF(::aColumns[ nI ]:lVisible, ::aColumns[ Ni ]:nWidth, 0) Else ::aColumns[ nCol ]:nWidth := nWidth ::aColSizes[ nCol ] := IF(::aColumns[ nCol ]:lVisible, ::aColumns[ nCol ]:nWidth, 0) EndIf If ::lPainted ::Refresh( .T. ) EndIf Return Self ************************************************************************************************* изменение метода KeyDown() добавиnm код перед Otherwise в основной do case чтобы по ENTER и SPACE вызывался код дабл клика мышкой Case !::lCellbrw .And. (nKey == 13 .Or. nKey == 32 ) If ::bLDblClick != Nil Eval( ::bLDblClick ) EndIf Otherwise [/pre2] -------------------------------------------------------------- PS С уважением Has ,SergKis , Dima

gfilatov2002: Has ,SergKis , Dima Благодарю за эти изменения Попробую включить эти правки в следующую сборку (под Вашу ответственность )

Dima: gfilatov2002 пишет: Попробую включить эти правки в следующую сборку хуже чем было не станет , плотно тестили )))

gfilatov2002: Просто к сведению. Выпустил сегодня RC 3 для следующей сборки 2.4.9. Финальный релиз запланирован на следующей неделе Dima Не все изменения в TSBrowse были одобрены и вошли в новую сборку [pre2] * Fixed: The wrong text color of a Label control which is placed on a Tab when 'FontColor' property of this Label is redefined at runtime. This happened in the themed OS only. Problem was reported by Henry Herrera <herrera.henry@gmail.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Fixed: The wrong StatusBar item's width handling in the function _SetStatusWidth(). Problem was reported by russian user. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Changed: The function GetProgramFilesFolder() is defined as pseudo- function. The definition is guarded by constant __WIN98__. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see i_pseudofunc.ch in folder \include) * Changed: ActiveX User Component was moved from the samples to MiniGUI core. A new property called 'Object' was added to manipulate the control. Syntax: @ <nRow>,<nCol> ACTIVEX <ControlName> [ OF | PARENT <ParentWindowName> ] WIDTH <nWidth> HEIGHT <nWidth> PROGID <cProgId> Or DEFINE ACTIVEX <ControlName> <PropertyName> <PropertyValue> <...> END ACTIVEX Based upon a contribution of Roberto Lopez <mail.box.hmg@gmail.com> (see demos in folder \samples\Basic\ActiveX) * Enhanced: Added possibility to modify a FontColor, BackColor and Align for the owner-draw colored status items at runtime. Requested by user on Russian HMG forum. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo4.prg in folder \samples\Basic\Status) * Enhanced: The OwnerDraw Horizontal top-level POPUP menu supports now an optional FONT clause. You can set/change the font of POPUP menu at runtime by function: _SetMenuItemFont( PopupName , FormName , GetFontHandle(FontName) ) Requested by Joe Fanucchi <drjoe@meditrax.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\MenuEx) * Updated: Further replacing of 'DEFAULT TO' command in MiniGUI core with the functions hb_default()/__defaultNIL() and hb_defaultValue(). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - correction of calculation of total column width in the Method ReSize; - minor correction in the Method GoUp; - correction of a rare bug in the Method PageUp; - used SRCAND raster in the C-function DrawBitmap(); - added handling of <Enter>/<Space> keys similar to LDblClick action; - added the new TSColumn variable cName for optional column name. Contributed by users from the Russian HMG forum. * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.8.11dev. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Harbour Compiler 3.2.0dev (SVN 2015-06-26 14:50). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * New: 'Console to GUI data exchange usage' sample. Contributed by Verchenko Andrey <verchenkoag@gmail.com>. (see in folder \samples\Basic\COMM_2) * New: 'WAIT WINDOW with an expectation' sample. Contributed by Verchenko Andrey <verchenkoag@gmail.com>. (see in folder \samples\Basic\WAIT_WINDOW_2) * New: 'NetIO Server and Client: usage of server's stored procedure' sample. Based upon a contribution of Roberto Lopez <mail.box.hmg@gmail.com> (see in folder \samples\Basic\NETIO) [/pre2]

Dima: gfilatov2002 Понял. По поводу починки C модуля. Смотрю этого нет. Обратите внимание https://cloud.mail.ru/public/HtfA/HnzaTizqW в собранном EXE курсор при достижении верхней/нижней границы , когда ездим клавишами вверх/вниз то есть зажали и держим. В моем EXE мерцания курсора нет. В актуальной есть. А если колонок сделать больше то курсор будет мигать как мигалка у Гаи (© Has)

Andrey: Григорий, при больших разрешениях экрана 1680x900 ..... 1920x1080 Фонт на кнопках и еще кое где - очень мелкий. А в меню нормальный. Можно по умолчанию увеличить фонт на большое разрешение экрана ? Если нельзя, то и фиг с ним... Вот так выглядит форма:

gfilatov2002: Andrey пишет: Можно по умолчанию увеличить фонт на большое разрешение экрана ? Попробуй менять размер шрифта при старте программы в зависимости от разрешения экрана с помощью команды SET FONT TO <имя шрифта> , <размер шрифта>

Andrey: gfilatov2002 пишет: Попробуй менять размер шрифта при старте программы Это понятно. Просто меню само подстраивается под разрешение, его нормально видно. А кнопки и остальные объекты нет.

Dima: Andrey пишет: Просто меню само подстраивается под разрешение Меню подстраивает сама Винда (о горизонтальном я) а не Minigui. Нет разве ? Ты же размер шрифта в горизонтальном меню средствами Минигуи не сменишь ;)

gfilatov2002: Dima пишет: Ты же размер шрифта в горизонтальном меню средствами Минигуи не сменишь В следующей сборке такая возможность появится См. Пост N: 771 выше на этой странице

Dima: gfilatov2002 Ну наконец то Давно пора.

Dima: Dima пишет: Сырец c_TBrowse.c HARBOUR HB_FUN_TSBRWSCROLL () было rct.bottom -= ( ( rct.bottom - rct.top ) % nHeightCell ); стало rct.bottom -= ( ( rct.bottom - rct.top ) % nHeightCell ); if( iRows > 0 ) rct.bottom -= nHeightCell; else rct.top += nHeightCell; Григорий я не хочу быть назойливым , просто сделайте ну скажем 100-200 колонок (не шибко широких) и курсор на всю строку и увидите мерцание как на елочной гирлянде :) Исключительно о езде вниз / вверх говорю (GoUP/ GoDown) при достижении видимых границ бровса нижнего или верхнего. Уже пол форума это увидело , что мерцать будет и после сборки RC3))) Там лишнее скролится в окне , отсюда и мерцание.

gfilatov2002: Dima пишет: Исключительно о езде вниз / вверх говорю (GoUP/ GoDown) при достижении видимых границ бровса Да, мерцание становится меньше, но обрати внимание после этого изменения на отображение восьмой колонки "без доставки" в твоем примере ниже [pre]#include "minigui.ch" //#include "common.ch" #include "TSBrowse.ch" //REQUEST HB_CODEPAGE_RU1251, HB_CODEPAGE_RU866, HB_LANG_RUWIN //REQUEST HB_LANG_RUWIN //REQUEST HB_LANG_RU866 //SET CODEPAGE TO RUSSIAN //HB_LANGSELECT( "RU" ) Proc main Public HighWindow_MyApl:=GETDESKTOPREALHEIGHT() Public WidthWindow_MyApl:=GETDESKTOPREALWIDTH() Public aFont := {} set date to german DEFINE FONT Font_1 FONTNAME "Times New Roman" SIZE 14 DEFINE FONT Font_2 FONTNAME "Times New Roman" SIZE 11 AADD( aFont, GetFontHandle( "Font_1" ) ) AADD( aFont, GetFontHandle( "Font_2" ) ) DEFINE WINDOW MAGAZIN AT GetDesktopRealTop(),GetDesktopRealLeft() ; WIDTH WidthWindow_MyApl ; HEIGHT HighWindow_MyApl ; TITLE "TEST" ; MAIN ; NOMAXIMIZE NOSIZE DEFINE STATUSBAR OF MAGAZIN STATUSITEM "1" WIDTH 0 FONTCOLOR BLACK STATUSITEM "2" WIDTH 230 FONTCOLOR BLACK STATUSITEM "3" WIDTH 230 FONTCOLOR BLACK STATUSITEM "4" WIDTH 230 FONTCOLOR BLACK DATE WIDTH 80 CLOCK WIDTH 75 KEYBOARD WIDTH 80 END STATUSBAR //ON KEY ESCAPE OF MAGAZIN ACTION DoMethod("MAGAZIN","Release") Magaz_po("MAGAZIN") //ON KEY ESCAPE OF MAGAZIN ACTION DoMethod("MAGAZIN","Release") END WINDOW DoMethod("MAGAZIN","Activate") return ************************ Func Magaz_po(cforma) local i := 0 local aDatos := {} for i := 1 to 1000 AADD( aDatos, {" ", ntoc(i), ntoc(i) + "_123", dtoc(date()),dtoc(date()),"Поставщик - " + ntoc(i), (10000-i) * i/3,str(random(100)),"0.12","123.00","Иванов",dtoc(date()),time() } ) end public oBrw DEFINE TBROWSE oBrw AT 17,0 ; OF MAGAZIN WIDTH MAGAZIN.WIDTH-2*GetBorderWidth() ; HEIGHT MAGAZIN.HEIGHT-GetTitleHeight()-GetTitleHeight() -; GetProperty("MAGAZIN", "StatusBar", "Height") -2*GetBorderHeight(); ; //ENUMERATOR нумерация колонок в header GRID ; FONT "Lucida Console" SIZE 12 END TBROWSE oBrw:SetArray( aDatos,.t. ) oBrw:nWheelLines := 1 oBrw:nClrLine := COLOR_GRID oBrw:lNoChangeOrd := TRUE oBrw:lCellBrw := TRUE // oBrw:lNoVScroll:= TRUE // oBrw:lNoHScroll:= TRUE for i := 1 To oBrw:nColCount() oBrw:aColumns:lFixLite := TRUE oBrw:aColumns:lEdit := TRUE end oBrw:nHeightCell += 6 oBrw:nHeightHead += 12 oBrw:HideColumns( 11, .T. ) oBrw:HideColumns( 12, .T. ) oBrw:HideColumns( 13, .T. ) oBrw:aColumns[ 1 ]:cHeading :="*" oBrw:aColumns[ 1 ]:nWidth :=15 oBrw:aColumns[ 2 ]:cHeading :="№"+CRLF+"склада" oBrw:aColumns[ 3 ]:cHeading :="№"+CRLF+"накладной" oBrw:SetColSize( 3, 80 ) oBrw:aColumns[ 4 ]:cHeading :="накладной" oBrw:aColumns[ 5 ]:cHeading :="оплаты" oBrw:AddSuperHead( 4, 5, "Дата") oBrw:aColumns[ 4 ]:nAlign :=DT_CENTER oBrw:aColumns[ 5 ]:nAlign :=DT_CENTER oBrw:SetColSize( 4, 80 ) oBrw:SetColSize( 5, 80 ) oBrw:aColumns[ 6 ]:cHeading :="Поставщик" oBrw:SetColSize( 6, 200 ) oBrw:aColumns[ 7 ]:cHeading :="с доставкой" oBrw:aColumns[ 8 ]:cHeading :="без"+CRLF+"доставки" oBrw:aColumns[ 9 ]:cHeading :="доставки" oBrw:aColumns[ 10 ]:cHeading :="продажная" oBrw:SetColSize( 7, 90 ) oBrw:SetColSize( 8, 90 ) oBrw:SetColSize( 9, 90 ) oBrw:SetColSize( 10, 90 ) oBrw:aColumns[ 7 ]:nAlign :=DT_RIGHT oBrw:aColumns[ 8 ]:nAlign :=DT_RIGHT oBrw:aColumns[ 9 ]:nAlign :=DT_RIGHT oBrw:aColumns[ 10 ]:nAlign :=DT_RIGHT oBrw:AddSuperHead( 7, 10, "Сумма") oBrw:nAdjColumn := 6 oBrw:aColumns[ 11 ]:cHeading :="пользователь" oBrw:aColumns[ 12 ]:cHeading :="дата" oBrw:aColumns[ 13 ]:cHeading :="время" oBrw:AddSuperHead( 11, 13, "Создана") oBrw:SetColor( { 1 }, { { || CLR_BLACK } },1 ) // цвет курсора obrw:lCanSelect:=.t. oBrw:SetColor( { 6 }, { { |a,b,c| IF( c:nCell == b, { Rgb( 66, 255, 236 ), Rgb( 111, 183, 155 ) } , { Rgb( 220, 220, 220 ), Rgb( 220, 220, 220 ) }) } } ) // фон курсора //oBrw:ChangeFont( { |a,b,c| IF(c:nAt == c:nLogicPos(), aFont[1], aFont[2]) } ,, ) oBrw:bOnDraw := {|| MAGAZIN.Title := "Дырка: "+ntoc(GetHole())+" nRowCount():"+ntoc(obrw:nRowCount()) , oBrw:DrawFooters() } //oBrw:nHeightHead +=Gethole() //sTBrwHeight( oBrw ) obrw:display() return nil ***************************** FUNCTION sTBrwHeight( oBrw ) // уст. реальный размер TBrowse LOCAL nHeightCell := oBrw:nHeightCell LOCAL nHeightHead := oBrw:nHeightHead LOCAL nHeightFoot := oBrw:nHeightFoot LOCAL nHeightSpecHd := oBrw:nHeightSpecHd LOCAL nHeightSuper := oBrw:nHeightSuper LOCAL nLineStyle := oBrw:nLineStyle LOCAL nRowHeight := oBrw:nRowCount() * nHeightCell LOCAL nBrwH := GetwindowHeight(oBrw:hWnd) LOCAL nDelta nHeight := nHeightSuper + ; nHeightHead + ; nHeightSpecHd + ; nRowHeight + ; nHeightFoot +1 IF ! oBrw:lNoHScroll nDelta := nBrwH - nHeight IF nDelta > 0 .and. nHeightCell > nDelta nHeight += nHeightCell - nDelta - 2 ENDIF ENDIF SetProperty(oBrw:cParentWnd, oBrw:cControlName, 'Height', nHeight) RETURN nHeight ***************** Func GetHole() local WorkHeight := oBrw:nHeight-oBrw:nHeightHead-oBrw:nHeightSuper-; oBrw:nHeightFoot-oBrw:nHeightSpecHd-if(!oBrw:lNoHScroll,16,0) RETURN WorkHeight-Int(WorkHeight/oBrw:nHeightCell)*oBrw:nHeightCell *************** #pragma BEGINDUMP #define HB_OS_WIN_32_USED #define _WIN32_WINNT 0x0400 #include <windows.h> #include "hbapi.h" HB_FUNC (GETDESKTOPREALTOP) { RECT rect; SystemParametersInfo( SPI_GETWORKAREA, 1, &rect, 0 ); hb_retni(rect.top); } HB_FUNC (GETDESKTOPREALLEFT) { RECT rect; SystemParametersInfo( SPI_GETWORKAREA, 1, &rect, 0 ); hb_retni(rect.left); } HB_FUNC (GETDESKTOPREALWIDTH) { RECT rect; SystemParametersInfo( SPI_GETWORKAREA, 1, &rect, 0 ); hb_retni(rect.right - rect.left); } HB_FUNC (GETDESKTOPREALHEIGHT) { RECT rect; SystemParametersInfo( SPI_GETWORKAREA, 1, &rect, 0 ); hb_retni(rect.bottom - rect.top); } HB_FUNC ( FINDWINDOW ) { hb_retnl( ( LONG ) FindWindow( 0, hb_parc( 1 ) ) ); } #pragma ENDDUMP [/pre]



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