Форум » 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: Привет всем ! Подскажите пожалуйста, как на свою форму вывести всплывающее окно ? Примерно как в примере \MiniGUI\SAMPLES\Advanced\TrayBalloon_2

Andrey: Как убрать в окне ТОЛЬКО элемент закрытия окна [x] ?

gfilatov2002: Andrey пишет: Как убрать в окне ТОЛЬКО элемент закрытия окна [x] ? Попробуй SetProperty( ThisWindow.Name, 'Closable', .F. )


Andrey: gfilatov2002 пишет: Попробуй SetProperty( ThisWindow.Name, 'Closable', .F. ) Спасибо БОЛЬШОЕ !!! А как насчет предыдущего вопроса ? Есть такой пример или нет ?

Andrey: Использую функции GetIni() и WriteIni() для работы с ини-файлами. Как хранить массив в ини-файле ? И как тогда его записывать/считывать ? Типа: Color_1 = {11048235,6174208} Можно конечно массив держать как строку с разделителем Color_1 = 11048235;6174208 и считывать её как aDim := HB_ATOKENS( GetIni( cSection , "Color_1" , "", cFileConfig ) ,";", .T. ) // массив Но тогда массив будет строковый ! А нужно числовой !!! И еще замечание массив должен быть ВСЕГДА однородным, а бывают случаи что нужно содержать - число, строку и вложенный массив. Как быть ? Поделитесь своим опытом.

Dima: Andrey Сохранить можно так в INI hb_Valtoexp(massiv) а восстановить , считываем из INI этот параметр в переменную C:=&Переменная

Andrey: Dima пишет: Сохранить можно так в INI Спасибо БОЛЬШОЕ !!! Облегчил ты мне работу ! aDim := {11048235,6174208,12856,"test",{"dim"}, "test2" } WriteIni( cSection, "Color_1" , hb_Valtoexp(aDim), cFileConfig ) aDim := &( GetIni( cSection , "Color_1" , '{}', cFileConfig ) ) // массив А как записать блок кода в ини-файл ?

Dima: hb_Valtoexp тут не поможет так как не допилили его в плане блоков. делай так. c:={|x| x+1} а вот так пиши в ini '{|x| x+1}' , на вскидку более красивого решения пока не вижу.

Andrey: Борьба с огромными шрифтами у себя в программе ! Юзера иногда ставят у себя на компе в системе увеличенный шрифт 120 точек на дюйм или выше. Из-за этого у меня в программе шрифты вылазиют за кнопки, а то и обрезаются названия кнопок и т.д. Как определить какой шрифт установлен в системе: обычный или увеличенный ? Вот примерно так выглядит программа:

Marquis031: http://clipper.borda.ru/?1-20-0-00000523-000-0-0-1114701644

Andrey: Marquis031 пишет: http://clipper.borda.ru/?1-20-0-00000523-000-0-0-1114701644 То что нужно ! Спасибо !

Haz: Зависает TSBROWSE Никак не могу понять где проблема ... Если создать TSBROWSE с количеством колонок примерно 300 в режимеCELL ( GRID ) и гонять его курсор вправо -влево до упора ( нажать стрелку на клавиатуре и держать ), то бровс перестает перерисовывать весь экран, рисует только текущую строку и начинает грузить проц под 100%. При этом задача имеет все признаки зависа . Как бороться с этой не пойму. Складывается впечатление что бровс не успевает отрабатывать нажатие клавиш и мрет Отдельные нажатия на стрелки отрабатывает отлично , виснет только если нажать и держать. Видимо нужна временная задержка , а вот куда ее сунуть не знаю. Мож есть у кого мысли, как победить PS. Вариант не давить на стрелки - отпадает, т.к. пользователям на это пофиг вот пример на всякий случай, собирается с hbsqldd.lib #include "minigui.ch" #include "tsbrowse.ch" #include "common.ch" REQUEST SQLMIX Procedure Main() Public oBrw1 DEFINE WINDOW Form1 ; AT 0,0 ; WIDTH (RR_GetDesktopArea()[4] * 0.99) ; HEIGHT (RR_GetDesktopArea()[3] * 0.91) ; TITLE "TsBrowse Array Bug Test" ; MAIN ; FONT 'Tahoma' SIZE 9 Test() END WINDOW Form1.Center Form1.ACTIVATE Return *-------------------------------------------------------------- Function Test() local i := 0 local j := 0 Local aStr := {} local cAlias := "TEST" local cBrw := "BRW" local aField := {} PUBLIC &cBrw FOR j := 1 TO 300 AADD( aStr, {"F_" + NTOC(j) , "N", 14, 2 }) END rddSetDefault( "SQLMIX" ) dbCreate( cAlias, aStr,, .T., cAlias ) FOR i := 1 TO 100 (cAlias)->(DbAppend()) FOR j := 1 TO 300 (cAlias)->(FieldPut(j, i*j)) END END rddSetDefault( "SQLMIX" ) DEFINE TBROWSE &cBrw At 50, 5 ALIAS cAlias ; OF Form1 ; WIDTH (Form1.Width - 20) ; HEIGHT (Form1.Height - 70) ; COLORS { CLR_BLACK, CLR_BLUE } ; FONT "MS Sans Serif" ; SIZE 8 ; CELL; SELECTOR .T. END TBROWSE &cBrw:LoadFields( FALSE ) Return Nil

gfilatov2002: Haz пишет: Видимо нужна временная задержка , а вот куда ее сунуть не знаю. Игорь, Попробуй пример ниже - возможно, поможет [pre2]#include "minigui.ch" #include "tsbrowse.ch" REQUEST SQLMIX Procedure Main() DEFINE WINDOW Form1 ; AT 0,0 ; WIDTH (RR_GetDesktopArea()[4] * 0.99) ; HEIGHT (RR_GetDesktopArea()[3] * 0.91) ; TITLE "TsBrowse Array Bug Test" ; MAIN ; FONT 'Tahoma' SIZE 9 END WINDOW Test() Form1.Center Form1.ACTIVATE Return *-------------------------------------------------------------- Function Test() local i := 0 local j := 0 Local aStr := {} local cAlias := "TEST" local cBrw := "BRW" PUBLIC &cBrw FOR j := 1 TO 300 AADD( aStr, {"F_" + NTOC(j) , "N", 14, 2 } ) NEXT rddSetDefault( "SQLMIX" ) dbCreate( cAlias, aStr,, .T., cAlias ) FOR i := 1 TO 100 (cAlias)->( DbAppend() ) FOR j := 1 TO 300 (cAlias)->( FieldPut(j, i*j) ) NEXT NEXT rddSetDefault( "SQLMIX" ) DEFINE TBROWSE &cBrw ; At 20, 5 ; ALIAS cAlias ; OF Form1 ; WIDTH (Form1.Width - 20) ; HEIGHT (Form1.Height - 70) ; COLORS { CLR_BLACK, CLR_BLUE } ; FONT "MS Sans Serif" ; SIZE 8 ; CELL; SELECTOR .T. END TBROWSE &cBrw:LoadFields( FALSE ) FOR i := 1 TO LEN(&cBrw:aColumns) &cBrw:aColumns[ i ]:bGotFocus := {|| ProcessMessages()} NEXT Return Nil[/pre2]

Haz: gfilatov2002 пишет: Попробуй пример ниже - возможно, поможет К сожалению не помогает , и по bLostFocus и по bOnChange уже пихал ( ProcessMessages(), SysRefresh(), Millisec(100 ) и пр ) где-то затык , уменя бровс помирает примерно на 60 -63 колонке при скроле в право. Помогает только одно , ДО достижения колонки 60 успеть отжать клавишу стрелка вправо и можно держать еще 60 колонок Понимаю что бессмысленно туда сюда гонять курсор, но уверен что пользователи будут кричать что без этого никак и главное - процесс зависает так что только через диспетчер задач рубится То что что-то с задержкой - понял по запущенному RemoteDesktop , когда он работает - есть у клавиатуры "инерционность" когда он запущен то кнопки отрабатывают с опозданием типа палец отжал, а оно еще двигается зато бровс не виснет

gfilatov2002: Haz пишет: есть у клавиатуры "инерционность" В таком случае попробуй уменьшить частоту повтора символа при нажатии клавиш в настройках Винды

Haz: gfilatov2002 пишет: В таком случае попробуй уменьшить частоту повтора символа при нажатии клавиш в настройках Винды Это помогает , хоть и напрягает тормоз И НЕКРАСИВОСТЬ РЕШЕНИЯ но НЕ ВИСНЕТ. Можно как то это из программы сделать ?

gfilatov2002: Haz пишет: Можно как то это из программы сделать ? Настройка параметров клавиатуры Формат команды: mode CON: RATE=r DELAY=d Параметры: CON: — указание команде MODE, что она должна настраивать параметры клавиатуры; R АТЕ=d — задание частоты повтора символов после того, как нажатая клавиша клавиатуры удерживается пользователем. Значения параметра d лежат в пределах от 1 до 32. Это соответствует примерно частоте повторения от 2 до 30 символов в секунду. По умолчанию частота повтора установлена равной 20 для клавиатур, совместимых с клавиатурой машин IBM PC/AT, и равной 21 для клавиатур, совместимых с клавиатурой компьютера IBM PS/2. При задании в команде MODE частоты повторения символов необходимо указывать и задержку перед их повтором; DELAY=d — указание времени задержки перед повтором символов после нажатия клавиши. Этот параметр может быть равным следующим числам: 1, 2, 3 и 4. Приведенные значения задержки примерно соответствуют 0.25, 0.50, 0.75 и 1-секундной задержке соответственно. Пример использования: mode con: delay=2 rate=3 После выполнения этой команды для клавиатуры устанавливаются следующие характеристики: - частота повтора символов — 10 символов в секунду; - задержка перед автоповтором — 0.5 с. Общие примечания к команде MODE: В команде MODE при изменении кодовых страниц дисплея не допускается использовать кодовую таблицу, назначенную драйверу DISPLAY.SYS, если он подключен к ОС в файле CONFIG.SYS. Команду MODE в различных вариантах очень удобно использовать в файле AUTOEXEC.BAT для изменения параметров работы устройств вашего компьютера при загрузке ОС.

Dima: KBDSPEED([<nDelay>], [<nFrequency>]) --> lAmended Не ? ;) Упс...она не реализована.

Haz: Dima пишет: KBDSPEED([<nDelay>], [<nFrequency>]) Дим привет. не нашел где живет эта функция , есть похожая NF_SetRate() в hbnf.lib но внутри нее только для OS_DOS по любому это заплатка , проблема кроется в классе TSBROWS который судя по всему не успевает отработать автоповтор клавиш про скроллинге по горизонтали и где-то затыкается. Мне бы это "где-то" найти , попробую с внутренним методом :KeyDown() поколдовать

Dima: Haz пишет: не нашел где живет эта функция Это HBCT Ранее юзал ее в Clipper



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