Форум » 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: SergKis пишет: а для запомининия в aLogic: ON CHANGE {|nNr| nNr := _SetGetUserData(_HMG_THISCONTROLNAME, _HMG_THISFORMNAME), ; aLogic[ nNr ] := This.Value, ; MsgDebug(nNr, aLogic[ nNr]) } Не работает, выдаёт: Error BASE/1069 Неверный аргумент: доступ к массиву Called from (b)MYPAGE_MAINMENU(230) Called from _DOCONTROLEVENTPROCEDURE(1654) Called from EVENTS(1523)

Dima: Andrey пишет: При редактировании выдаёт ошибку: Error BASE/1133 Переполнение массива: доступ к массиву Called from (b)MYPAGE_MAINMENU(230) Значение nI == 9 Кхм а откуда там 9 получилось если заполнялось до 8 ?

Andrey: Dima пишет: Кхм а откуда там 9 получилось если заполнялось до 8 ? А я откуда знаю... Что получил, то и спросил...


Dima: Andrey пишет: А я откуда знаю... Что получил, то и спросил... FOR nI := 1 TO 8 NEXT ? nI // 9 однако

Andrey: Andrey пишет: Не работает, выдаёт: Error BASE/1069 Неверный аргумент: доступ к массиву Понял, получилось. Вот так работает: FOR nI := 1 TO 8 nRow := aRow[nI] + nHButt + 5 nCol := aCol[nI] + 10 //nWButt @ nRow, nCol CHECKBOX &cObjLog ; CAPTION 'Включить ХХХХ' ; VALUE aLogic[nI] ; WIDTH nWButt-20 HEIGHT 20 ; FONTCOLOR RED ; SIZE 11 TRANSPARENT ; ON CHANGE {|nNr| nNr := _SetGetUserData(_HMG_THISCONTROLNAME, _HMG_THISFORMNAME), ; aLogic[ nNr ] := This.Value, ; MsgDebug(nNr, aLogic[ nNr]) } _SetGetUserData(cObjLog, _HMG_THISFORMNAME, nI) // запомнило в Cargo NEXT Спасибо БОЛЬШОЕ SergKis ! Пример бы такой нужен в библиотеке Григорию !!! А то в цикле не всегда получается вывести/построить объекты. Целая наука. _SetGetUserData(cObjLog, _HMG_THISFORMNAME, nI) // запомнило в Cargo - нигде не встречал, а если и видел, то и не понял для чего... Посмотрел специально, есть только в одном исходнике: h_controlmisc.prg SergKis - колдун он однако....

Dima: Andrey пишет: FOR nI := 1 TO 8 nRow := aRow[nI] + nHButt + 5 nCol := aCol[nI] + 10 //nWButt Да оно бы и так вот работало бы FOR nI := 1 TO 8 XnI:=nI nRow := aRow[XnI] + nHButt + 5 nCol := aCol[XnI] + 10 и так далее

Andrey: Dima пишет: Да оно бы и так вот работало бы Неа, не заработало бы... Я долго мучился... Проверь сам, если не веришь...

SergKis: Andrey Трать немного времени на мат. часть. Примеры с cargo есть: BASIC\Cargo\*.prg Есть UTILS\FuncList\*.*

SergKis: Andrey пишет: нигде не встречал, а если и видел, то и не понял для чего... для работы с cargo контрола достаточно: SetProperty(cFormName, cControlName, 'Cargo', xValue) GetProperty(cFormName, cControlName, 'Cargo') а _SetGetUserData(...) это обертка, в minigui их много. Примеры использования см. в i_pseudofunc.ch

Haz: Andrey пишет: А то в цикле не всегда получается вывести/построить объекты. Целая наука Нет там никакой науки, это еще с 90х годов аксиомы из Clipper 1) цикл FOR работает так - сначала увеличивает переменную потом проверяет на достижение граничного значения. Отсюда и 9 . И так было всегда 2) кодовый блок в который передается переменная при исполнении использует значение переменной на момент этого исполнения ( в твоем примере 9 ) и так тоже было всегда. Объекты тут не при чем - в цикле формируется кодовый блок использующий переменную цикла , в любом подобном коде будет использоваться значение переменной на момент исполнения. Выход - передавать не переменную а ее значение в блок ( это как вариант с макроподстановкой ) или как пишет SergKis запоминать это значение , а потом его использовать. Cargo есть почти у всех объектов ( кстати у того-же Clipper тоже есть в его объектах тоже с 90х выучить времени полно было ) и значение переменной цикла можно сохранить там и использовать в блоке

Andrey: Haz пишет: у того-же Clipper тоже есть в его объектах тоже с 90х выучить времени полно было Согласен, во время не выучил... Haz пишет: и значение переменной цикла можно сохранить там и использовать в блоке Покажи пожалуйста как ?

Dima: Andrey Ну так на странице 10 все ж есть Andrey пишет: Haz пишет: цитата: было в твоих вопросах , с другим контролом правда ...но было. Да, точно, было. Памяти точно уже нет. Спасибо за подсказку ! ЗЫ Тут подход нужен как к выражениям фильтра для ADS. Например вот такое выражение ADS поймет 'KOD_KL==3' А если вот так , то нет NKOD:=3 'KOD_KL==NKOD' Посему нужно передавать значение 'KOD_KL=='+Ntoc(NKOD) или так 'KOD_KL=='+HB_NtoS(NKOD)

SergKis: Haz SergKis пишет: цитата: А то в цикле не всегда получается вывести/построить объекты. Целая наука Это Andrey пишет Отправлено: Вчера 15:00. ...

Andrey: Haz пишет: цитата: было в твоих вопросах , с другим контролом правда ...но было. Контрол был другой. Я его нашёл. Вот он: bBlock := "{ || MEMOLINE("+ALIAS()+"->"+cField+","+HB_NTOS(LEN(cStr))+",1) }" oBrw:aColumns[nJ]:bData := &( bBlock ) oBrw:aColumns[nJ]:Cargo := cField oBrw:aColumns[nJ]:lEdit := .T. oBrw:aColumns[nJ]:bPrevEdit := { || FORMA_MEMO( oBrw:aColumns[oBrw:nCell]:cHeading, oBrw:aColumns[oBrw:nCell]:Cargo ), FALSE } Но он в данном случае к вопросу не подходит ! Из - за этого и пишу как сделать для: "и значение переменной цикла можно сохранить там и использовать в блоке" ?

Haz: SergKis пишет: Это Andrey пишет Отправлено: Вчера 15:00. ... Извиняюсь .... не обратил внимания кого автором цитаты показало. Не специально чес слово

SergKis: Andrey пишет:Но он в данном случае к вопросу не подходит ! Все подходит и делается примерно также. У тебя bBlock := "{ || MEMOLINE("+ALIAS()+"->"+cField+","+HB_NTOS(LEN(cStr))+",1) }" теперь то, о чем вопрос ( как сделать для:...): FOR i := 1 TO k bBlock := &( "{|nNr| nNr := "+hb_ntos(i)+", aLogic[nNr] := This.Value, MsgDebug(nNr, aLogic[nNr] }" ) ... // или через Cargo из примера NEXT блока кода отличается, только тем, что завели переменную для него (могли исполтзовать и local из prg), но это давние дела ...

SergKis: PS к MsgDebug скобку пропустил в конце

SergKis: SergKis пишет:могли исполтзовать и local из prg уточню в таком блоке (не по макро): Local nNr {|| nNr := This.Value } в макро можно private, public

Haz: Andrey пишет: Как еще можно сделать чтобы заработало ? вроде можно и так ON CHANGE {|| aLogic[cton(Substr(This.Name,7))] := This.Value }

Dima: Haz пишет: Не специально чес слово Это результат не правильной отметки текста и затем цитирования. Проверь Сам не раз на это попадал ))



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