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

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

Andrey: Вопрос насчёт курсора. Имеется таблица. При нажатии Enter или мышкой открывается карточка. Открытие карточки бывает с задержкой (комп тормознутый, да и пока поля из базы по сетке прочитаешь)... Как прикрутить курсор ожидания ? Пробовал делать ДО создания окна карточки (не работает!): SetWaitCursor( Thiswindow.Handle ) или SetWaitCursor( Application.Handle ) А восстановление курсора делаю в последней строчке ON INIT окна карточки: SetArrowCursor( Thiswindow.Handle ) Разъясните пожалуйста как нужно правильно делать операции с курсором.

Dima: А если в Init окна первой строкой...

Andrey: Dima пишет: А если в Init окна первой строкой... Да без разницы. Нет мышки-курсора ожидания, вообще. Нужно чтобы сразу после нажатия в таблице - появлялся курсор ожидания. Не получается у меня это. Как это сделать ?


gfilatov2002: Andrey пишет: Как это сделать ? Посмотри рабочий пример ниже (процедура ONDBLCLICK() ) [pre2]#include "hmg.ch" Function Main SET CENTURY ON DEFINE WINDOW Form_1 ; AT 0,0 ; WIDTH 640 HEIGHT 480 ; TITLE 'MiniGUI Browse Demo' ; MAIN NOMAXIMIZE ; ON INIT OpenTables() ; ON RELEASE CloseTables() DEFINE MAIN MENU POPUP 'File' ITEM 'Set Browse Value' ACTION Form_1.Browse_1.Value := 10 ITEM 'Get Browse Value' ACTION MsgInfo ( Form_1.Browse_1.Value ) ITEM 'Refresh Browse' ACTION Form_1.Browse_1.Refresh() ITEM 'Show Browse' ACTION Form_1.Browse_1.Show() ITEM 'Hide Browse' ACTION Form_1.Browse_1.Hide() ITEM 'Enable Browse' ACTION Form_1.Browse_1.Enabled := .t. ITEM 'Disable Browse' ACTION Form_1.Browse_1.Enabled := .f. SEPARATOR ITEM 'Exit' ACTION Form_1.Release() END POPUP POPUP 'Help' ITEM 'About' ACTION MsgInfo ("MiniGUI Browse Demo") END POPUP END MENU DEFINE STATUSBAR STATUSITEM 'HMG Power Ready!' END STATUSBAR DEFINE TAB Tab_1 ; AT 10,10 ; WIDTH 600 ; HEIGHT 400 - Form_1.Statusbar.Height ; VALUE 1 ; FONT 'Arial' SIZE 10 PAGE '&Browse ' DEFINE BROWSE Browse_1 COL 25 ROW 40 WIDTH 555 HEIGHT 350 - Form_1.Statusbar.Height HEADERS { 'Code' , 'First Name' , 'Last Name', 'Birth Date', 'Married' , 'BioGraphy' } WIDTHS { 150 , 150 , 150 , 150 , 150 , 150 } WORKAREA Test FIELDS { 'Test->Code' , 'Test->First' , 'Test->Last' , 'Test->Birth' , 'Test->Married' , 'Test->Bio' } VALUE 1 ONDBLCLICK ONDBLCLICK() ONHEADCLICK { {|| MsgInfo('Header 1 Clicked !')} , { || MsgInfo('Header 2 Clicked !')} , { || MsgInfo('Header 3 Clicked !')}, { || MsgInfo('Header 4 Clicked !')}, { || MsgInfo('Header 5 Clicked !')}, { || MsgInfo('Header 6 Clicked !')}} END BROWSE END PAGE PAGE '&More' @ 55,90 LABEL Label_1 ; VALUE 'Label !!!' ; WIDTH 100 HEIGHT 27 @ 80,90 CHECKBOX Check_1 ; CAPTION 'Check 1' ; VALUE .T. ; TOOLTIP 'CheckBox' @ 115,85 SLIDER Slider_1 ; RANGE 1,10 ; VALUE 5 ; TOOLTIP 'Slider' @ 45,240 FRAME TabFrame_2 WIDTH 125 HEIGHT 110 OPAQUE @ 50,260 RADIOGROUP Radio_1 ; OPTIONS { 'One' , 'Two' , 'Three', 'Four' } ; VALUE 1 ; WIDTH 100 ; TOOLTIP 'RadioGroup' END PAGE END TAB END WINDOW CENTER WINDOW Form_1 Form_1.Browse_1.SetFocus() ACTIVATE WINDOW Form_1 Return Nil Procedure OpenTables() Use Test Return Procedure CloseTables() Use Return Procedure ONDBLCLICK SetWaitCursor( GetControlHandle( 'Browse_1', 'Form_1' ) ) SetCursorSystem( IDC_WAIT ) InkeyGUI( 1000 ) SetArrowCursor( GetControlHandle( 'Browse_1', 'Form_1' ) ) SetCursorSystem( IDC_ARROW ) MsgInfo('DoubleClick!!') Return [/pre2]

Andrey: gfilatov2002 пишет: Посмотри рабочий пример ниже (процедура ONDBLCLICK() Чуток понял. Вопрос остался... [pre2]Procedure ONDBLCLICK SetWaitCursor( GetControlHandle( 'Browse_1', 'Form_1' ) ) SetCursorSystem( IDC_WAIT ) MyCardBrowse( .... ) //SetArrowCursor( GetControlHandle( 'Browse_1', 'Form_1' ) ) //SetCursorSystem( IDC_ARROW ) //MsgInfo('DoubleClick!!') Return Function MyCardBrowse(....) DEFINE WINDOW Form_Card ; ........... MODAL NOSYSMENU NOSIZE ; ON INIT { || MyInitCard(...),; Function MyInitCard(...) // доп. прорисовка ......... // вот здесь нужно отключить курсор ожидания ! SetArrowCursor( GetControlHandle( 'Browse_1', 'Form_1' ) ) SetCursorSystem( IDC_ARROW ) // вот так можно ? или нельзя ? RETURN NIL[/pre2]

Andrey: Григорий, всё получилось ! Спасибо большое !

Andrey: Всем привет. Вопрос назрел давно уже. Имею кнопки объекта BUTTONEX типа такого: Есть ли функции, которые позволяют определить, ширину название кнопки и поместилась ли нормально название на саму кнопку ? Если задать шрифт BOLD, то название кнопки иногда не помещается, обрезается по краям... Как можно рассчитать такую ситуацию ?

Петр: Andrey пишет: Как можно рассчитать такую ситуацию ? Сбросьте где-то на форму и попробуйте, сначала как есть, потом раскомментируйте строку Form1.Button2.Width [pre2] cCaptionLong := "Click here for update Data" cCaptionShort := "Click here.." @ 90,150 BUTTON Button2 CAPTION "?!" TOOLTIP "?!" // Form1.Button2.Width := GetTextWidth( , cCaptionLong, ) + 20 Form1.Button2.Caption := If( GetTextWidth( , cCaptionLong, ) >= Form1.Button2.Width, cCaptionShort, cCaptionLong ) IF Form1.Button2.Caption == cCaptionLong SetToolTip( Form1.Button2.Handle, cCaptionShort, GetFormToolTipHandle( "Form1" ) ) ELSE SetToolTip( Form1.Button2.Handle, cCaptionLong, GetFormToolTipHandle( "Form1" ) ) ENDIF [/pre2] Поищите в примерах и исходниках применение GetTextWidth. Если мне не изменяет память, вы уже и задавали подобный вопрос. А может и не вы..

Петр: Можете так попробовать выкрутиться [pre2] cCaptionLong := "Click here for update Data" @ 90, 150 BUTTON Button2 CAPTION cCaptionLong TOOLTIP cCaptionLong DO WHILE GetTextWidth( , cCaptionLong, ) > ( Form1.Button2.Width - GetTextWidth( , "..", ) ) cCaptionLong := Left( cCaptionLong, Len( cCaptionLong ) - 1 ) ENDDO Form1.Button2.Caption := cCaptionLong + ".." [/pre2]

Andrey: Петр пишет: Если мне не изменяет память, вы уже и задавали подобный вопрос. Да может и задавал. Только до сих пор не решил этот вопрос, из-за этого ещё раз задаю вопрос. Петр пишет: Поищите в примерах и исходниках применение GetTextWidth. Этой функцией пользуюсь, только в таком синтаксисе не пробовал: GetTextWidth( , cCaptionLong, ) Просто хотелось бы знать, на какой размер шрифта помещается в название кнопки, т.е. когда название обрезается и потом уже самостоятельно буду уменьшать размер шрифта кнопки.

Softlog86: FUNCTION GetTxtWidth( cText, nFontSize, cFontName ) // get the width of the text LOCAL hFont, nWidth IF Valtype(cText) == 'N' cText := Replicate('A', cText) ENDIF DEFAULT cText := Replicate('A', 2), ; cFontName := _HMG_DefaultFontName, ; nFontSize := _HMG_DefaultFontSize hFont := InitFont(cFontName, nFontSize) nWidth := GetTextWidth(0, cText, hFont) DeleteObject (hFont) RETURN nWidth

Andrey: GetTextWidth( , cCaptionLong, ) - не всегда верно даст результат. Например я на форме устанавливаю один размер шрифта, а на кнопках другой. Я это имел ввиду. И саму функция мне не нужно приводить. Я понял как мне делать ! Спасибо за подсказки !

Andrey: Всем привет. Есть ли в самой библиотеки МиниГуи окно без ожиданием ? Как в примере MiniGUI\SAMPLES\BASIC\WAIT_WINDOW\demo2.prg Делаю тестовые примеры, а тащить в свой проект отдельную функцию НЕ ХОЧУ ! Иначе теряется простота примера.

Andrey: Всем трудоголикам привет ! Как определить - запущено ли MAIN окно ?

SergKis: Andrey пишет Как определить - запущено ли MAIN окно ? Самое простое If empty(_HMG_MainHandle) MsgBox("Not found main window", "INFO") EndIf

Andrey: Как цвет из BLUE, RED и т.д. перевести в число ? Есть функция в МиниГуи, или самому ваять нужно (хотя делал уже такую) ?

Петр: Andrey пишет: Есть функция в МиниГуи Есть, RGB() называется. Также макрос в bostaurus.ch #define ArrayRGB_TO_COLORREF(aRGB) RGB(aRGB[1],aRGB[2],aRGB[3])

Andrey: Хотел укоротить конструкцию: aClr := BLUE oText:Font:Color = RGB(aClr[1],aClr[2],aClr[3]) Сделал как раньше у себя: oText:Font:Color = MyRGB(BLUE)

Andrey: Проект не трогал, под новой версией МиниГуи стала появляться ошибка: Error BASE/5056 MiniGUI Error: _SETFONTHANDLE Called from _SETFONTHANDLE(0) Called from _DEFINEOWNERBUTTON(497) Called from METRO3BUTTON(69) Один раз меню работает, второй раз вылетает. Что это за ошибка ? функция METRO3BUTTON(69) [pre2] DEFINE BUTTONEX &cObject PARENT &cForm ..... FONTNAME cFont FONTSIZE nFontSize ...... END BUTTONEX // вот эта 69 строка[/pre2]

Петр: Andrey пишет: Что это за ошибка ? Функция _SetFontHandle() в качестве второго параметра требует валидный хэндл шрифта. Почему этот хэндл не валидный, по приведенному щедрому отрывку кода установить не имеется возможности. Для инкапсуляции ошибки в файле h_button.prg строку 496 IF FontHandle != 0 замените на IF ( GetObjectType( FontHandle ) == 6 ) и перекомпилируйте библиотеку.



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