On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 1929
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.11.11 21:36. Заголовок: Примеры из Минигуи -ошибки, вопросы..... (продолжение)


Всем привет.
Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ?
А заодно может и исправить и добавить новые....

Очень красочный пример: \MiniGUI\SAMPLES\Advanced\AVI_Animation - не работает под Win7 (наверно AVI-шки нет в ресурсах)
Предложение Григорию:
Можно ли добавить еще один пример с отдельным AVI-файлом в ресурсах проекта и показом такого же бегунка ?

Пример: \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.



Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет , стр: 1 2 3 4 5 6 7 8 9 10 11 12 All [см. все]


moderator




Пост N: 1620
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.11.19 17:59. Заголовок: Andrey пишет: это т..


Andrey пишет:

 цитата:
это только у меня или везде так ЧЕРНЫМ цветом


Эта проблема уже обсуждалась ранее:
если используется THEMED Винда, то цвет текста в заголовке FRAME и в подписи CHECKBOX всегда черный.

Для того, чтобы увидеть цветной заголовок, надо использовать Классический вид в Винде, т.е. как в Windows 98

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6508
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.11.19 18:24. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Эта проблема уже обсуждалась ранее:


Пропустил наверное... Пока сам на грабли не налетел, не запомнишь !
СПАСИБО, понял.

А в C# (он называется GroupBox) на любых темах цвет заголовка FRAME можно делать любым...
Вот пример - https://cloud.mail.ru/public/Ba8K/kzjVDx7tc
Может можно как нибудь сделать изменение цвета заголовка и для МиниГуи ?
Это не срочно, но чтобы было такое в МиниГуи.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1621
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.11.19 18:40. Заголовок: Andrey пишет: Может..


Andrey пишет:

 цитата:
Может можно как нибудь сделать изменение цвета заголовка и для МиниГуи ?


Да, есть уже.
Посмотри функцию MyFrame() в примере из папки samples\Basic\LABEL_3

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6509
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.11.19 18:53. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Посмотри функцию MyFrame() в примере из папки samples\Basic\LABEL_3


Посмотрел...
Что-то не совсем понятно как прицепить эту функцию в модуль Form_fonts.prg проекта Tsb_composite ?
Там несколько FRAME и имена объектов разные.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6510
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.11.19 17:48. Заголовок: Вроде получилось сде..


Вроде получилось сделать несколько FRAME через функцию MyFrame(), но пришлось убрать имя и размер фонта в этой функции. И не по центру текста проходиь полоса, но пойдёт и так !
Спасибо Григорий !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6513
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.11.19 15:13. Заголовок: Всем привет ! Вот чт..


Всем привет !
Вот что за ерунда получается, как юзер добивается ошибки в работающей программе ?
Пробовал сам - не вылетает, а юзер что-то делает и вылетает.
Вот например такая ошибка:
Error MGERROR/0 Window: Form_Dim is already defined. Program terminated.
Called from MSGMINIGUIERROR(100) in module: h_error.prg
Called from _DEFINEMODALWINDOW(487) in module: h_windows.prg
Called from FORM_SEL_DIM(632) in module: Source\Sel_Dim_Hmg.prg
Called from SEL_DIM(561) in module: Source\Sel_Dim_Hmg.prg

В исходнике все правильно, у меня работает без ошибок:
    DEFINE WINDOW Form_Dim         ; 
....
MODAL NOSYSMENU ;
NOSIZE ;
ON INIT {|| OnInitFormDim(lKeyPass), oBrw_5:Setfocus() } // строка 632

Как расшифровать ошибку ?
Может доп.отладку какую то сделать ?
Окно Form_Dim только в ОДНОМ исходнике, и оно MODAL, т.е. другое окно не сделаешь, пока это окно не закроешь.
Или я чего-то не до понимаю ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7136
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.11.19 16:15. Заголовок: Andrey пишет: Пробо..


Andrey пишет:

 цитата:
Пробовал сам - не вылетает, а юзер что-то делает и вылетает.


Проставь ему пиво , пусть колется как

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 243
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 12.11.19 21:41. Заголовок: Andrey пишет: Может..


Andrey пишет:

 цитата:
Может доп.отладку какую то сделать ?


Я в терминалке сделал второй поток и отслеживаю нажатые клавиши и сохраняю изменения экрана, имитирую видеопоток. Сохраняю все в базу, потом можно просматривать что делал пользователь, что нажимал в какой момент времени, снимок состояния базы и т.д. Иногда помогает понять что накосячили, да и подловить недобросовестных пользователей можно.... Наверное в гуи более затратно будте вести постоянную запись, но последние минуту -другую до вылета проги можно сохранять и выкладывать на ftp например

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6517
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.11.19 17:12. Заголовок: Andrey пишет: Вот н..


Andrey пишет:

 цитата:
Вот например такая ошибка:
Error MGERROR/0 Window: Form_Dim is already defined. Program terminated.
Called from MSGMINIGUIERROR(100) in module: h_error.prg
Called from _DEFINEMODALWINDOW(487) in module: h_windows.prg
Called from FORM_SEL_DIM(632) in module: Source\Sel_Dim_Hmg.prg


Вроде разобрался с подсказки Сергея - почему так выходит, т.е. юзер ловит ошибку, а я нет .
У меня система Win8.1, у юзера Win7 и WinServer2008.
Юзер по кнопке успевает 2 раза кликнуть по мышке и 2 раза вызвать модальное окно с одинаковым именем.
У меня так не получается...
Сделал теперь в кнопке так:
        ACTION {|cw,cn| cw := ThisWindow.Name, cn := This.Name                        ,;  
SetProperty(cw,cn, "Enabled", .F.) ,;
Form_Sel_Dim() ,; // вызов справочника
iif( _IsWindowActive(cw), Setproperty(cw,cn, "Enabled", .T.), Nil ) ,;
Form_Seek.Label_Buff.Setfocus }


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 29.11.19 10:25. Заголовок: Всем привет ! в прим..


Всем привет !
в примере \MiniGUI\SAMPLES\Advanced\Tsb_array_2\demo.prg, если увеличить количество колонок (раза в 3, выход за ширину TSBROWS)
и после запуска программы на горизонтальном SCRLLBAR удерживать кнопку движения вправо, всё подвисает.
Может кто то подскажет как побороть ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2969
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.11.19 12:39. Заголовок: kkg пишет и после за..


kkg пишет
 цитата:
и после запуска программы на горизонтальном SCRLLBAR удерживать кнопку движения вправо, всё подвисает


Попробуйте сделать для колонок (при быстром скролинге не успевает за ним прорисовка тсб)
AEval( oBrw:aColumns, {|oc| oc:bGotFocus := {|| DoEvents() } } )
Если не поможет, то надо уменьшать количество колонок в просмотре, используя oc:Visible := .F. для скрытия и показываете, сгруппировав частями, переключая по выбору на нужную группу.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 29.11.19 14:08. Заголовок: SergKis пишет AEval..


SergKis пишет

 цитата:
AEval( oBrw:aColumns, {|oc| oc:bGotFocus := {|| DoEvents() } } )


Спасибо за идею, но не помогло, хотя улучшило.
Попробую через oBrw:bEvents "разжижить" событие WM_HSCROLL , SB_LINERIGHT

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1627
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.11.19 22:30. Заголовок: kkg пишет: после за..


kkg пишет:

 цитата:
после запуска программы на горизонтальном SCRLLBAR удерживать кнопку движения вправо, всё подвисает


Да, это известная проблема с большим числом колонок и беспрерывным нажатием на стрелку

Как вариант решения, предлагается пример ниже:

 цитата:
 
#include "minigui.ch"
#include "tsbrowse.ch"

REQUEST SQLMIX

Procedure Main()

rddSetDefault( "SQLMIX" )

DEFINE WINDOW Form1 ;
AT 0,0 ;
WIDTH (RR_GetDesktopArea()[4] * 0.99) ;
HEIGHT (RR_GetDesktopArea()[3] * 0.91) ;
TITLE "TsBrowse Array 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

dbCreate( cAlias, aStr,, .T., cAlias )

FOR i := 1 TO 100
(cAlias)->( DbAppend() )
FOR j := 1 TO 300
(cAlias)->( FieldPut(j, i*j) )
NEXT
NEXT

DEFINE TBROWSE &cBrw ;
At 20, 5 ;
ALIAS cAlias ;
OF Form1 ;
WIDTH (Form1.Width - 20) ;
HEIGHT (Form1.Height - 70) ;
COLORS { CLR_BLACK, CLR_WHITE } ;
FONT "MS Sans Serif" ;
SIZE 8 ;
CELL;
SELECTOR .T.
END TBROWSE

&cBrw:bUserKeys := { |x,y,z| left_right_key(x, y, z) }
&cBrw:bChange := { |x| tbrow_refresh(x) }

&cBrw:LoadFields( FALSE )

Return Nil

function left_right_key(pnKey, pnFlags, pSelf)
if pnKey == VK_LEFT .or. pNKey == VK_RIGHT
pSelf:refresh(.F.,.T.)
INKEYGUI(100)
pSelf:refresh(.F.,.T.)
end
return(pnKey)

function tbrow_refresh(x)
x:RefreshARow(x:nRowPos)
if x:nRowPos == x:nRowCount() .or. x:nRowPos == x:nRowCount() + 1
x:refresh(.F.,.T.)
end
return(NIL)



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 30.11.19 02:56. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Как вариант решения, предлагается пример ниже:


Григорий спасибо, но и с SQLMIX и с массивом, результат всё равно крах.
click here

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2979
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.11.19 09:31. Заголовок: kkg пишет с SQLMIX ..


kkg пишет
 цитата:
с SQLMIX и с массивом, результат всё равно крах


Правильнее, по мне, отработать счетчиками нажатия (+) и отпускания (сброс) клавиш VK_LEFT, VK_RIGHT,
т.е. если, к примеру, счетчик нажатий будет > 5, то не делать :GoLeft(), :GoRight() пока не отпустят или
не закончится прорисовка тсб. Похожая схема работает в моей версии (7+часть из 9) тсб при VK_UP, VK_DOWN,
нажатиях, если их >= :nRowCount(), то делаю листание страницы, вместо движения построчно.
Таким образом обхожу зависание прорисовки в 7ой версии тсб.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2980
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.11.19 15:37. Заголовок: SergKis пишет отрабо..


SergKis пишет
 цитата:
отработать счетчиками


Измененный пример от Григория со счетчиками Скрытый текст

Вроде работает

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 4
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 30.11.19 18:13. Заголовок: SergKis пишет: Врод..


SergKis пишет:

 цитата:
Вроде работает


на этом примере да , но на примере из поставки с массивом + nFreeze на счётчиках не работает (по крайней мере у меня не получается), только с временной задержкой
Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2981
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.11.19 21:44. Заголовок: kkg пишет на этом пр..


kkg пишет
 цитата:
на этом примере да , но на примере из поставки с массивом + nFreeze на счётчиках не работает (по крайней мере у меня не получается), только с временной задержкой


Уменьшите значение
Static n_CntLeft := 0, n_CntRight := 0, n_LeftRight := 3
Вот пример Tsb_Array_2 с учетом :nFreeze Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 5
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 30.11.19 22:24. Заголовок: SergKis пишет: Умен..


SergKis пишет:

 цитата:
Уменьшите значение
Static n_CntLeft := 0, n_CntRight := 0, n_LeftRight := 3
Вот пример Tsb_Array_2 с учетом :nFreeze


так всё равно виснет если двигать зажатой кнопкой скрола в право

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2982
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.12.19 00:39. Заголовок: kkg пишет так всё ра..


kkg пишет
 цитата:
так всё равно виснет если двигать зажатой кнопкой скрола в право


В моей сборки вправо и влево зажатый скролл работает по всей линейке и не виснет (hmg 19.09.2 сборка)
Если виснет у вас, то можно пробовать обработку сообщения WM_HSCROLL (цветом выделено)
 
function tsb_events( oBrw, nMsg, nWParam, nLParam )
Local nRet := 0, nKey, nFlag, nCol, nFrez
Local lCtrl := _GetKeyState( VK_CONTROL )
Local lShift := _GetKeyState( VK_SHIFT )
Local lAlt := _GetKeyState( VK_MENU )
Static n_CntLeft := 0, n_CntRight := 0, n_LeftRight := 3

nCol := oBrw:nCell
nFrez := oBrw:nFreeze + 1
nKey := nWParam
nFlag := nLParam

If lCtrl .or. lShift .or. lAlt
ElseIf nMsg == WM_KEYDOWN
If nKey == VK_LEFT .and. nCol > nFrez
n_CntLeft ++
If n_CntLeft >= n_LeftRight
nRet := 1
InkeyGui(100)
n_CntLeft := 0
EndIf
DoEvents()
ElseIf nKey == VK_RIGHT .and. nCol <= oBrw:nColCount()
n_CntRight ++
If n_CntRight >= n_LeftRight
nRet := 1
InkeyGui(100)
n_CntRight := 0
EndIf
DoEvents()
EndIf
Elseif nMsg == WM_HSCROLL
If ! oBrw:lDontchange
oBrw:HScroll( Loword( nKey ), HiWord( nFlag ) )
nRet := 1
InkeyGui(100)
DoEvents()
EndIf

ElseIf nMsg == WM_KEYUP
n_CntLeft := n_CntRight := 0
EndIf

return nRet

Если скролл побежал до конца\начала, надо пощелкать по тсб мышкой, для активации тсб или по полунку скролла
Причину такого поведения надо искать, разбирать тсб и скролл работу

Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет , стр: 1 2 3 4 5 6 7 8 9 10 11 12 All [см. все]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 18
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет