Форум » GUI » Примеры из Минигуи -ошибки, вопросы..... (продолжение) » Ответить

Примеры из Минигуи -ошибки, вопросы..... (продолжение)

Andrey: Всем привет. Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ? А заодно может и исправить и добавить новые.... Очень красочный пример: \MiniGUI\SAMPLES\Advanced\AVI_Animation - не работает под Win7 (наверно AVI-шки нет в ресурсах) Предложение Григорию: Можно ли добавить еще один пример с отдельным AVI-файлом в ресурсах проекта и показом такого же бегунка ? Пример: \MiniGUI\SAMPLES\Advanced\DisplayMode - не работает под ХР и далее.... Пример: \MiniGUI\SAMPLES\Advanced\Tsb_filter - вылетает на ХР -------------------------------------------------------------------------------- Harbour MiniGUI Errorlog File Harbour MiniGUI Extended Edition 2.0.1 - 2011.09.21 -------------------------------------------------------------------------------- Date: 11/15/2011 Time: 22:13:24 Error BASE/1124 Argument error: LEFT Called from LEFT(0) Called from SCANSOFT(195) Called from MAIN(84) Пример: \MiniGUI\SAMPLES\BASIC\MsgEdit - не собирается... Z:\MiniGUI\SAMPLES\BASIC\MsgEdit>call ..\..\..\batch\compile.bat demo /L shell32 Harbour 3.1.0dev (Rev. 17042) Copyright (c) 1999-2011, http://harbour-project.org/ Compiling 'demo.prg'... Lines 20133, Functions/Procedures 30 Generating C source output to 'demo.c'... Done. Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland demo.c: Error E2141 demo.prg 993: Declaration syntax error *** 1 errors in Compile *** C compile error.

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

Andrey: Вот это точно новый баг ! Если для объекта ставлю TOOLTIP "" то перестают работать Label_Inf1 и Label_Inf2: @ 40, 120 LABEL Label_Inf1 VALUE MiniGUIVersion() ; AUTOSIZE ; ON CLICK MsgInfo('Label-1 Clicked !') ; ON MOUSEHOVER ( Rc_Cursor( "MINIGUI_FINGER" ), Form_Main.Label_Inf1.Value := MiniGUIVersion(), ; iif(lOver, , (Form_Main.Label_Inf1.FontBold := .t., lOver := .T.)) ) ; ON MOUSELEAVE ( Form_Main.Label_Inf1.FontBold := .f., Form_Main.Label_Inf1.Value := MiniGUIVersion(), lOver := .f. ) ; FONT 'Arial' SIZE 14 FONTCOLOR YELLOW BACKCOLOR COLOR_BLUE_BLUE Новый пример тут: https://cloud.mail.ru/public/d17fa3f4f9c1/Menu_ButtonEx_2.7z Наверно что-то с наложением объектов.... Можно исправить ошибку до выхода новой версии (или всё таки у меня что-то не то в коде) ?

gfilatov2002: Andrey пишет: Можно исправить ошибку до выхода новой версии (или всё таки у меня что-то не то в коде) ? Ошибки здесь нет Вы переназначили свой объект из статического типа в активный, добавив TOOLTIP "", и теперь он обрабатывается в первую очередь, закрывая собой Label_Inf1 и Label_Inf2, которые лежат сверху на этом объекте. Выход: назначить контексное меню на изначально актмвные объекты Label_Inf1 и Label_Inf2, и вернуть статический тип Вашей цветной метке (т.е. убрать класс TOOLTIP "")

Andrey: Всем доброго вечера. Помню что где то здесь приводился пример, про то как определить кол-во объектов на форме, чтобы их всех перерисовать. Не смог найти. Подскажите пожалуйста какой пример в МиниГуи это демонстрирует ?


SergKis: Andrey пишет:Подскажите пожалуйста какой пример в МиниГуи это демонстрирует ? см. ...\BASIC\Form_Controls\demo.prg Function _GetArrayOfAllControlsForForm ( cFormName )

Andrey: Есть цвет 15790320 - как его превратить в массив {} ? Есть ли такая функция в МиниГуи ?

Haz: Andrey пишет: как его FUNC N2RGB(nColor) LOCAL nR := 0 LOCAL nG := 0 LOCAL nB := 0 LOCAL cColor := NTOC(nColor, 16) nR := CTON(SUBSTR( cColor, 5, 2 ), 16) nG := CTON(SUBSTR( cColor, 3, 2 ), 16) nB := CTON(SUBSTR( cColor, 1, 2 ), 16) RETURN {nR, nG, nB }

Andrey: Haz пишет: FUNC N2RGB(nColor) Спасибо БОЛЬШОЕ !

Andrey: Собираю программу под Win-8.1, запускаю на Win-XP и по бокам внизу остаётся фон формы: А под Win8 всё нормально: Методом подбора сделал окно TBROWSE вплотную к линии STATUSBAR и по ширине окна формы ! CreateBrowse( "oBrw_1", 'Form_0', 32, 2, Form_0.Width-19, Form_0.Height-93, 'LOG_DBF' ) Как исправить положение ? Как сделать, чтобы на всех компах было красиво ? Пробовал использовать функцию IsXPThemeActive(), но она под 8-кой выдает тоже .T. !

SergKis: Andrey пишет:Как исправить попробуй использовать: // BAA HB_FUNC( GETCLIENTWIDTH ) { RECT rect; LONG hWnd=hb_parnl(1); if(hWnd==0) SystemParametersInfo( SPI_GETWORKAREA, 0, &rect, 0); else GetClientRect( ( HWND ) hWnd, &rect ); hb_retni( ( INT ) rect.right - rect.left ); } // BAA HB_FUNC( GETCLIENTHEIGHT ) { RECT rect; LONG hWnd=hb_parnl(1); // SPI_GETWORKAREA == 0x0030 if(hWnd==0) SystemParametersInfo( SPI_GETWORKAREA, 0, &rect, 0); else GetClientRect( ( HWND ) hWnd, &rect ); hb_retni( ( INT ) rect.bottom - rect.top ); } GETCLIENTHEIGHT(0) - высота клиентской (внутренней) области Desktop с учетом наличия строки Start GETCLIENTWIDTH(0) - ширина клиентской (внутренней) области Desktop GETCLIENTHEIGHT(hWnd) - высота клиентской (внутренней) области окна (или контрола) GETCLIENTWIDTH(hWnd) - ширина клиентской (внутренней) области окна (или контрола) т.е.: hWnd := GetFormHandle('Form_0') CreateBrowse( "oBrw_1", 'Form_0', 32, 2, GetClientWidth(hWnd), GetClientHeight(hWnd), 'LOG_DBF' )

Andrey: SergKis пишет: попробуй использовать: Спасибо БОЛЬШОЕ за оперативность ! А как узнать размер STATUSBAR у себя в программе ? А то Browse по самый низ располагается.

SergKis: Andrey пишет:Как исправить другой способ (расчет): GetWindowWidth(hWnd) - ширина внешней области окна (или контрола) GetWindowHeight(hWnd)- высота внешней области окна (или контрола) т.е.: hWnd := GetFormHandle('Form_0') nClientWidth := GetWindowWidth(hWnd) - 2*GetBorderWidth() // если есть рамка вокруг окна nClientHeight := GetWindowHeight(hWd) - 2*GetBorderHeight() // --"---"--- nClientHeight -= GetTitleHeight() // если есть title окна nClientHeight -= GetMenuBarHeight() // если есть меню nClientHeight -= GetWindowHeight(GetControlHandle('STATUSBAR', 'Form_0')) // высота StatusBar при наличии ToolBar, то в обоих (из пред. моего поста тоже) случаях надо отнимать его размер как то так, если что то не забыл учесть. для окна начальные значения можно взять Form_0.Width, Form_0.Height, для MAIN Application.Width, Application.Height

Andrey: SergKis пишет: nClientHeight -= GetWindowHeight(GetControlHandle('STATUSBAR', 'Form_0')) // высота StatusBar То что нужно ! Спасибо БОЛЬШОЕ !

SergKis: Andrey пишет:То что нужно StatusBar - контрол, значит можно и Form_0.StatusBar.Height - по правилам OOP MiniGui

Andrey: Всем привет. Вопрос по шрифтам в программе. Если я у себя объявляю фонты в справочнике: DEFINE FONT Font_1 FONTNAME "Times New Roman" SIZE nSize1 DEFINE FONT Font_2 FONTNAME "Times New Roman" SIZE nSize2 BOLD ITALIC DEFINE FONT Font_3 FONTNAME "Times New Roman" SIZE nSize3 BOLD DEFINE FONT Font_4 FONTNAME 'Arial' SIZE nSize4 ITALIC DEFINE FONT Font_5 FONTNAME 'Tahoma' SIZE nSize5 BOLD и оставляю это окно открытым, то при открытие основной таблицы - НЕЛЬЗЯ заново определить другие шрифты с именами: Font_1, Font_2 и т.д. Как нужно определять шрифты у себя в программе ? Т.е. опредилить их всех в начале программы с разными именами, или каждый раз убивать шрифты при выходе из окна или еще как ? Поясните пожалуйста как нужно работать с ними.

SergKis: Andrey а если так в новом окне: #define Font_1 Font_7 #define Font_2 Font_8

Andrey: SergKis пишет: а если так в новом окне: Понял. Спасибо. А вообще как правильно делать - работать со шрифтами ? Я же перевожу свою программу с терминалки, и не знаю как лучше.

SergKis: Andrey пишет:Я же перевожу свою программу с терминалки у тебя в терминалке много фонтов ? мне хватает: #command SET FONT TO <fontname> , <fontsize> => _HMG_DefaultFontName := <fontname> ; _HMG_DefaultFontSize := <fontsize> и фонта на окно, который устанавливается (и наследуется на конролах): _HMG_ActiveFontName := IFCHARACTER( FontName, FontName, "" ) _HMG_ActiveFontSize := IFNUMBER( FontSize, FontSize, 0 ) и пару заголовков Times New Roman, указанных конкретно

Andrey: SergKis пишет: у тебя в терминалке много фонтов ? Да пару всего.... Просто я в TSBROWSE использовал 5 (как в примерах) , попытался открыть другой TSBROWSE и облом, там тоже определено 5 шрифтов. Вот и выходит конфликт шрифтов. А можно как нибудь проверить - установлен ли шрифт Font_1 ? И как можно получить размер шрифта ?

SergKis: Andrey пишет:А можно как нибудь проверить - установлен ли шрифт Font_1 hFont := GetFontHandle( FontName ) // даст handle или 0 и глянь i_font.ch

Andrey: SergKis пишет: и глянь i_font.ch Спасибо !



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