Форум » 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: Привет. Подскажите как можно сделать следующее.... В начале программы всегда идет объявления ОКНA: DEFINE WINDOW Form_1 AT 0, 344 WIDTH 410 HEIGHT 411 ... и т.д. Изменение параметров и расположение, чтение значений делается через Form_1 Ну например: Function ChangeVersion() Local TypeVersion := Form_1.RadioGroup_1.Value Function SetValue(cDescription,cImage,cPath) Form_1.Label_3.Value := cDescription Form_1.Icon_Big.Icon := cImage Form_1.Text_1.Value := cPath А как можно прочитать/изменить ОКНО если его задать внешне, т.е. имя ОКНА приходит из другой программы ? Макроподстановка не проходит... STATIC MyForm FUNCTION MyEditVers( cWindows ) MyForm := cWindows ...... DEFINE WINDOW &MyForm AT 0, 344 WIDTH 410 HEIGHT 411 ... и т.д. ...... Center WINDOW &MyForm ACTIVATE WINDOW &MyForm Function ChangeVersion() Local TypeVersion := &MyForm.RadioGroup_1.Value // - не работает Function SetValue(cDescription,cImage,cPath) &MyForm.Label_3.Value := cDescription // - не работает &MyForm.Icon_Big.Icon := cImage // - не работает &MyForm.Text_1.Value := cPath // - не работает Заранее спасибо за ответ ! В новой документации MiniGuiPdf.pdf - не нашел. Есть только глава 16. Test Function

gfilatov2002: Andrey пишет: В новой документации MiniGuiPdf.pdf - не нашел. По-видимому, плохо искал Обрати внимание на команду DECLARE WINDOW <Form>, которая прямо предназначена для таких вещей Также в таких случаях удобнее использовать функцию SetProperty() вместо псевдо-ООП комманд: Function SetValue(cDescription,cImage,cPath) SetProperty('MyForm','Label_3','Value', cDescription) SetProperty('MyForm','Icon_Big','Icon', cImage) SetProperty('MyForm',Text_1','Value', cPath) и функцию GetProperty(): Function ChangeVersion() Local TypeVersion := GetProperty('MyForm','RadioGroup_1','Value')

Andrey: gfilatov2002 пишет: По-видимому, плохо искал Согласен .... gfilatov2002 пишет: Обрати внимание на команду DECLARE WINDOW <Form>, которая прямо предназначена для таких вещей А есть пример, а то из описания плохо пока понимаю. gfilatov2002 пишет: Также в таких случаях удобнее использовать функцию SetProperty() вместо псевдо-ООП комманд: Спасибо БОЛЬШОЕ, то что надо !


Andrey: А как сделать form_1.refesh() для моего случая ? Напоминаю, у меня идет определение окна через статик переменную: MyForm := cWindows ...... DEFINE WINDOW &MyForm AT 0, 344 WIDTH 410 HEIGHT 411 ... и т.д. Дело в том что я цвет ОКНА меняю по ходу работы самой программы: SetProperty( MyForm, "BackColor", aNewColor )

Dima: Andrey пишет: А как сделать form_1.refesh() для моего случая ? Ни как ;) Может все таки refresh ?

Andrey: Dima пишет: Может все таки refresh ? Ошибся малость при переносе на форум.... Дело в том что такое не проходит: &MyForm.refesh() Пробовал: Domethod( MyForm, "Refresh" ) - ничего не происходит. То есть мне нужно перерисовать форму, все объекты которые на ней лежат. Как это сделать ?

gfilatov2002: Andrey пишет: мне нужно перерисовать форму, все объекты которые на ней лежат. Обшей команды Refresh для всей формы не существует, но Вы можете использовать перерисовку каждого элемента формы по отдельности, как это сделано в примере Color из папки samples\Basic\Color. ITEM 'Set Form_1 BackColor' ACTION ( Form_1.BackColor := GetColor(), ; Form_1.Label_1.BackColor := Form_1.BackColor, ; Form_1.Check_1.BackColor := Form_1.BackColor, ; Form_1.Radio_1.BackColor := Form_1.BackColor, ; Form_1.Frame_1.BackColor := Form_1.BackColor, ; Form_1.Slider_1.BackColor := Form_1.BackColor, ; Form_1.Hide, Form_1.Show ) Если не хочется перечислять все элементы формы вручную, то можно использовать массив с именами всех этих элементов из примера Form Controls в папке samples\Basic\Form_Controls: [pre2]/******************************************************************************/ Function _GetArrayOfAllControlsForForm ( cFormName ) /******************************************************************************/ Local nFormHandle , i , nControlCount , aRetVal := {} , x nFormHandle := GetFormHandle ( cFormName ) nControlCount := Len ( _HMG_aControlHandles ) For i := 1 To nControlCount If _HMG_aControlParentHandles == nFormHandle If ValType( _HMG_aControlHandles ) == 'N' IF ! Empty( _HMG_aControlNames ) If Ascan( aRetVal, _HMG_aControlNames ) == 0 Aadd( aRetVal, _HMG_aControlNames ) EndIf ENDIF ElseIf ValType( _HMG_aControlHandles ) == 'A' For x := 1 To Len ( _HMG_aControlHandles ) IF !Empty( _HMG_aControlNames ) If Ascan( aRetVal, _HMG_aControlNames ) == 0 Aadd( aRetVal, _HMG_aControlNames ) EndIf ENDIF Next x EndIf EndIf Next i Return Asort( aRetVal )[/pre2]

Andrey: Спасибо БОЛЬШОЕ !

Andrey: Можно ли с помощью МиниГуи сделать следующее: 1) PNG файл 128х128 загрузить в память и преобразовать в 128х128 ICO и сохранить файл ? 2) PNG файл любого размера "нарезать" на заданные размеры (для примера 128х128) ?

Andrey: Сделал обучающий пример по иконкам. Не могу заставить компилироваться 2 примера из одного файла: build.bat call hbmk2.bat %* demo1.hbp call hbmk2.bat %* demo2.hbp Пишет ошибку: building... S:\SAMPLES\IconsToForm\build.log Процесс не может получить доступ к файлу, так как этот файл занят другим процессом. Процесс не может получить доступ к файлу, так как этот файл занят другим процессом. Harbour 3.2.0dev (Rev. 17966) Как побороть это ? Содержание: demo1.hbp # Incremental-режим компиляции -inc # папка где будут все *.obj -workdir=OBJ1 # Имя EXE-модуля -odemo1.exe # включить путь к MiniGui и своим *.ch и *.fmg -incpath=Z:\MiniGUI\Include # перечисляем все *.prg demo.prg # Ресурсы demo.rc # Пути к основным и добавочным *.lib -lminigui -LZ:\MiniGUI\LIB\ Содержание: demo2.hbp # Incremental-режим компиляции -inc # папка где будут все *.obj -workdir=OBJ2 # Имя EXE-модуля -odemo2.exe # включить путь к MiniGui и своим *.ch и *.fmg -incpath=Z:\MiniGUI\Include # перечисляем все *.prg demo.prg # Ресурсы demo.rc # Пути к основным и добавочным *.lib -lminigui -LZ:\MiniGUI\LIB\

AlexMyr: Посмотрел hbp файлы, вопрос: demo.prg это один файл или он разный и лежит в разных папках? где содержимое hbmk2.bat? Так пробовал? call hbmk2.bat %* demo*.hbp

Andrey: AlexMyr пишет: вопрос: demo.prg это один файл или он разный и лежит в разных папках? Это один и тот же файл. AlexMyr пишет: Так пробовал? call hbmk2.bat %* demo*.hbp Попробовал ! Получилось !!! Спасибо БОЛЬШОЕ !!!

Andrey: Всем привет ! Подскажите пожалуйста, как задавать цвет STATUSBAR-а ? И изменять цвет STATUSBAR по надобности ? Типа: DoMethod( MyForm,"Statusbar","Refresh") ??? а есть ли такой метод ??? Заранее спасибо.

Andrey: МиниГуи - пример SAMPLES\BASIC\DirectoryRecurse Если в папки записать файлы без расширений, то ничего НЕ ПОКАЗЫВАЕТ ! Почему ? Папка для пробы здесь http://files.mail.ru/QJS1VX

Andrey: Можно ли узнать какой тип картинки записан в ресурсе EXE-ника ? Т.е. у меня в rc файле лежат два разных файла: DEMO1 BITMAP "res\LOGO_DEMO.BMP" DEMO2 JPG "res\harbour-logo.jpg" А в программе я хочу определить какой тип файла, чтобы вычислить размер рисунка: // если тип файла "BMP" IF ???? ______aSize := BmpSize( cFile ) ELSE ______aSize := JpgSize( cFile ) ENDIF nWidth := aSize[1] nHeight := aSize[2] И почему в ХЕЛПЕРе нет описание функции JpgSize( cFile ) и hb_GetImageSize() ? Нашел только в примере \MiniGUI\SAMPLES\Advanced\JpgViewer, да и то с переназначением(вызовом) функции hb_GetImageSize() ? Да и то эта функция выдает размер файла на диске, а не в ресурсе !!! Облом... Что нельзя было сделать общую функцию определения размера картинки независимо от типа файла и типа размещения (т.е. файл на диске или файл в ресурсе) ??? Может уже есть такая функция, а я не нашел...

Andrey: Всем привет. Как реализовать следующее: Имею объект ГРИД: DEFINE GRID Grid_Report ............... HEADERS {'№','Наименование отчета', 'Файл' } WIDTHS { 30,430, 120 } ITEMS LoadReport() VALUE 1 HEADERIMAGES aImages BACKCOLOR { 159, 191, 236 } TOOLTIP 'Выбор отчета/F4-Редактирование отчета' ONDBLCLICK LoadViewFr3() END GRID ....... ///////////////// FUNCTION LoadViewFr3() ??? Как узнать выбранный элемент массива и название файла ? Как можно назначить клавишу (допустим F4) - чтобы вызывалась отдельная функция ?

Andrey: Разобрался я с элементами меню ГРИДА... И как назначить горячую клавишу на форме.. вот результат, если кому интересно... http://files.mail.ru/RNWL47

gfilatov2002: Andrey пишет: Разобрался я с элементами меню ГРИДА... И как назначить горячую клавишу на форме Супер! Но вместо дополнительной функции GetColValue( xObj, xForm, nCol ) можно использовать стандарный объект Cell (row, col) Например, так: FUNCTION LoadViewFr3() LOCAL cMsg := Form_1.Grid_Report.Cell( this.value, 3 ) LOCAL cMsg2 := Form_1.Grid_Report.Cell( this.value, 2 ) MsgInfo( cMsg ) MsgInfo( cMsg2 ) //MsgInfo( GetColValue( "Grid_Report", "Form_1", 3 ) ) //MsgInfo( GetColValue( "Grid_Report", "Form_1", 2 ) ) RETURN NIL

Andrey: gfilatov2002 пишет: Например, так: Спасибо БОЛЬШОЕ ! Как насчет моего письма ?

Andrey: gfilatov2002 пишет: можно использовать стандарный объект Cell (row, col) Для мышки и ENTER это работает ! А по горячей клавише F4 - вылетает с ошибкой.... Как можно исправить ? Исходник здесь. http://files.mail.ru/42OT6H



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