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

Dima: gfilatov2002 Понял. Спасибо

Andrey: gfilatov2002 пишет: Для этого надо сделать само-нарисованным (Ownerdraw) только этот конкретный участок статусной строки. Блин, а я StatusBar делал самописный из LABEL.... Столько кода написать пришлось для пересчета при изменение размеров окна....

Andrey: А если сделать так: LOCAL aBackColor := {0,64,80} .... DEFINE WINDOW Win_1 ; BACKCOLOR aBackColor ; ..... Как тогда фон всего STATUSBAR сделать цветом aBackColor ?


gfilatov2002: Andrey пишет: Как тогда фон всего STATUSBAR сделать цветом aBackColor ? Планирую добавить новые свойства BACKCOLOR и FONTCOLOR для STATUSITEM в следующей сборке. Тогда можно будет записать так: [pre]#include "minigui.ch" #define APP_TITLE "Hello World!" Function Main LOCAL aBackColor := {0,64,80} DEFINE WINDOW Win_1 ; AT 0,0 ; WIDTH 400 ; HEIGHT 400 ; TITLE APP_TITLE ; MAIN ; BACKCOLOR aBackColor DEFINE STATUSBAR FONT "Arial" SIZE 10 STATUSITEM "Item 0" BACKCOLOR aBackColor STATUSITEM "Item 1" WIDTH 92 BACKCOLOR aBackColor FONTCOLOR YELLOW STATUSITEM "Item 2" WIDTH 92 BACKCOLOR aBackColor END STATUSBAR END WINDOW CENTER WINDOW Win_1 ACTIVATE WINDOW Win_1 Return Nil [/pre]

Dima: gfilatov2002 пишет: Планирую добавить новые свойства BACKCOLOR и FONTCOLOR для STATUSITEM

gfilatov2002: Dima Хочу уточнить, что я имел в виду следующую сборку 2.4.5, поскольку эти новые свойства требуют дополнительного тестирования. Уже сейчас вижу, что они НЕ совместимы с классом ICON для STATUSITEM

Andrey: gfilatov2002 пишет: Хочу уточнить, что я имел в виду следующую сборку 2.4.5 Подождем ! Спасибо !

Andrey: В терминалке на хХарборе использую базы в 866 кодировке. Символы CHR(250)-CHR(253) пишутся в текстовые поля базы нормально ! Пытаюсь то же самое сделать под МиниГуи не выходит, коды другие: Как записать в поле базы символы CHR(250)-CHR(253) ?

nick_mi: Repl pole with chr(250)+ chr(253) не пробовал? На всякий случай попробуй

Andrey: Всем привет. Делал окошко для проверки базы с двумя бегунками. Причем второй бегунок использовал два раза ( с разными цветами) на копирование файла (синий) и переброску записей с одной базы в другую (зеленый). И столкнулся с непоняткой, при переброске записей (зеленый цвет) вылазит синий цвет ? Наверно нужно как то объект чистить (хотя пользуюсь только DRAW RECTANGLE ) ... А может и не надо... Подскажите как убрать паразитирующий цвет (синий) ? Исходник CheckDbf.7z здесь - https://cloud.mail.ru/public/5d315f972a72/MiniGui-Error

Dima: Andrey пишет: И столкнулся с непоняткой, при переброске записей (зеленый цвет) вылазит синий цвет ? Собрал пример и такого эффекта не увидел. Нижний бегунок меняется нормально с синего на зеленый , потом снова синий потом зеленый. Единственно что когда рисуется зеленый бегунок то он дергается как не нормальный ))))) Синий идет красиво. PS Чем принципиально отличается InkeyGUI() от Inkey() ?

Andrey: Dima пишет: Единственно что когда рисуется зеленый бегунок то он дергается как не нормальный ))))) Вот это и есть фигня ! Как убрать и в чём дело не знаю !!! Dima пишет: Чем принципиально отличается InkeyGUI() от Inkey() ? Inkey() только для задержки форма висит и всё ! А InkeyGUI() нужно использовать чтобы на форме объекты перерисовались.

Dima: Andrey Закоменти в функции MyCopyBase строки cSay := "БД: " + cFile + " " + HB_NtoS(nJ) + "/" + HB_NtoS(nRecnoAll) + " - прошло ХХ:ХХ / осталось ХХ:ХХ" SetProperty(cStForm,"Label_File2","Value", cSay ) и дергаться перестанет.

Haz: Andrey пишет: Вот это и есть фигня ! Как убрать и в чём дело не знаю Эта фигня возникает из-за "непрофильного" использования DRAW да еще в цикле. По сути происходит следующее : Каждый вызов DRAW помимо того что рисует кусок псевдопрогрессбара на форме, так еще и запоминает в системной переменной MiniGui блок вызова этого самого DRAW с указанными параметрами ( что рисуем, по каким координатам, каким цветом, в каком окне ... ) Это нужно для того чтобы при изменении видимости окна - восстанавливать на нем все эти художества автоматически по сабытиям ( перемещение , прорисовка окна и пр ). Теперь что происходит в программе ( на пальцах): Каждый вызов DRAW - запоминает свой кодовый блок , при выводе Label идет перерисовка области окна и .....автоматом идет выполнение ВСЕХ предыдущих прорисовок DRAW отсюlа и моргание. Достаточно посмотреть исходники h_draw.prg и h_events.prg это в h_draw FUNCTION drawrect( window, row, col, row1, col1, penrgb, penwidth, fillrgb ) ... rectdraw( FormHandle, row, col, row1, col1, penrgb, penwidth, fillrgb, fill ) AAdd ( _HMG_aFormGraphTasks , { || rectdraw( FormHandle,row,col,row1,col1,penrgb,penwidth,fillrgb,fill ) } ) ... RETURN nil это в h_events CASE WM_PAINT FOR EACH r In _HMG_aFormHandles IF _HMG_aFormDeleted [z] == .F. a := _HMG_aFormGraphTasks [z] IF ISARRAY ( a ) .AND. Len ( a ) > 0 AEval ( a, { |x| Eval ( x ) } ) ENDIF ENDIF NEXT убрать просто - использовать штатный прогрессбар, или перед вызовом DRAW влепить костыль вида ASize ( _HMG_aFormGraphTasks [GetFormIndex ( cWindowName )], 0 ), который просто обнуляет массив кодовых блоков DRAW и при этом НЕ ГАРАНТИРУЕТСЯ корректная работа в последующих версиях MiniGui, и соответственно ГАРАНТИРУЕТСЯ гемморой с поддержкой такой программы у заказчика

Andrey: Спасибо БОЛЬШОЕ за разъяснения Haz Можно ли тогда в стандартном штатном прогрессбар изменить цвет бегунка ?

Haz: Andrey пишет: Можно ли тогда в стандартном штатном прогрессбар изменить цвет бегунка Условно да, вот из справки по Minigui Note: SMOOTH, BACKCOLOR & FORECOLOR has no effect when XP-Style is used

Haz: Andrey Если уж хочется нестандарта - то рекомендую прогрессбар рисовать фоном стандартного элемента LABEL это сработает и даже быстрее чем DRAW как демонстрация поправь в своей проге LABEL_1 ( TRANSPORENT УБРАТЬ ) @ 15,10 LABEL Label_1 ; WIDTH 0 HEIGHT 20 ; // VALUE cTitle BOLD ; FONTCOLOR BLACK ; BACKCOLOR RED ; CENTERALIGN VCENTERALIGN а Перед DRAW в custom progress вставь строку SetProperty( cWindowName, "Label_1", "Width", nFinishCol ) Дальше уверен сам все увидишь

Andrey: Haz пишет: Если уж хочется нестандарта - то рекомендую прогрессбар рисовать фоном стандартного элемента LABEL это сработает и даже быстрее чем DRAW Спасибо за идею. Буду пробовать. А заодно - насчет нестандарта: а LABEL можно сделать какой нибудь - "заливкой" ? Типа как шапка заголовка в TBROWSE, там 2 цвета используется.

Dima: Andrey пишет: а LABEL можно сделать какой нибудь - "заливкой" ? Не оно ? [pre2] @ <nRow> ,<nCol> LABEL <ControlName> [ ID <nId> ] [ OF | PARENT | DIALOG <ParentWindowName> ] VALUE <cValue> [ ACTION | ONCLICK | ON CLICK <ActionProcedureName> | <bBlock> ] [ ON MOUSEHOVER | ONMOUSEHOVER> <OverProcedureName> | <bBlock> [ ON MOUSELEAVE | ONMOUSELEAVE > <LeaveProcedureName> | <bBlock> ] ; [ WIDTH <nWidth> ] [ HEIGHT <nHeight> ] [ AUTOSIZE ] [ FONT <cFontname> SIZE <nFontsize> ] [ BOLD ] [ ITALIC ] [ UNDERLINE ] [ STRIKEOUT ] [ TOOLTIP <cToolTipText> ] [ BACKCOLOR <anBackColort> ] [ FONTCOLOR <anFontColor>] [ BORDER ] [ CLIENTEDGE ] [ HSCROLL ] [ VSCROLL ] [ TRANSPARENT ] [ BLINK ] [ RIGHTALIGN | CENTERALIGN ] [ HELPID <nHelpId> ] [ INVISIBLE ] [/pre2]

Haz: Andrey пишет: Типа как шапка заголовка в TBROWSE ну так и делай прогресс из TsBrowsa... 10 мин потратил на пример, дальше сам ++++++++++++++++++++++++++++++++ #include "minigui.ch" #include "tsbrowse.ch" Procedure Main() Public oBrw1 Public aDatos_origen DEFINE WINDOW Form1 ; AT 0,0 ; WIDTH 840 ; HEIGHT 480 ; TITLE "TsBrowse Progressbar Test" ; MAIN ; FONT 'Tahoma' SIZE 9 Sample1() END WINDOW DEFINE TIMER Timer_1 OF Form1 INTERVAL 100 ACTION TimerProc() ACTIVATE WINDOW Form1 Return *-------------------------------------------------------------- Function Sample1() aDatos_origen := {} AADD( aDatos_origen, {""} ) IF !_IsControlDefined ("oBrw1", "Form1") DEFINE TBROWSE oBrw1 ; AT 60,10 ; OF Form1 ; WIDTH 800 ; HEIGHT 30 ; FONT "Verdana" ; SIZE 9 ; GRID oBrw1:SetArray( aDatos_origen ) oBrw1:nHeightCell := 29 oBrw1:nHeighthEAD := 0 oBrw1:lNoVScroll := .T. oBrw1:lNoHScroll := .T. oBrw1:SetColor( { 2 }, { { Rgb( 255, 250, 205 ), Rgb( 200, 200, 200 ) } } ) oBrw1:SetColor( { 6 }, { { RGB( 43, 149, 168 ), RGB( 0, 74, 104 )} } ) ADD COLUMN TO TBROWSE oBrw1 DATA ARRAY ELEMENT 1 SIZE 1 END TBROWSE ENDIF Return Nil Func TimerProc() oBrw1:SetColSize( 1, oBrw1:aColSizes[1] +5 ) Return nil



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