Форум » GUI » TsBrowse в Минигуи (продолжение) » Ответить

TsBrowse в Минигуи (продолжение)

Vlad04: TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений К примеру [quote] DEFINE TBROWSE oBrw2 ; AT 60,450 ; ALIAS cAlias ; OF Form1 ; WIDTH 330 ; HEIGHT 340 ; FONT "Verdana" ; SIZE 9 ; ON DBLCLICK CopyRec(); ON GOTFOCUS fModelo_Hab(2) ; AUTOFILTER ; CELLED EDIT; VALUE nRec; GRID [/quote] Здесь я собрал параметры из разных tBrows Можно или нет и какие парметры заменить выражением ( и каким) ? oBrw2:.... oBrw2:....

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

Vlad04: Ссылка

SergKis: Vlad04 пишет Компилируется без ошибок, но при запуске не работает Проверяйте наличие контроллов в процедуре Chang_Tbr() или перенесите TSB в конец (перед END WINDOW) в fmg файле. В каком то примере выше, я уже проделывал такую штуку и не забывайте объявлять переменную PUBLIC\PRIVATE TBROWSE_1 для DEFINE TBROWSE, в ней созданный объект tsb

Vlad04: SergKis Однако ! Про объявление переменных думал, а вот это перенесите TSB в конец (перед END WINDOW) в fmg новость.На такую тонкость в каком-то примере не обратил внимания.

SergKis: Vlad04 пишет новость При создании тсб (прорисовка строк) срабатывает :bChange, в нем обращение к несуществующим еще контроллам. Без него было бы все ок! Перед END WINDOW (после IDE) можно ставить вызов функции\процедуры для инициализации созданных IDE контроллов и для тсб устанавливать все блоки кода, например TBROWSE_1:bChange := {|| Change_Tsb() }

Vlad04: SergKis Посмотрите. Как комбо подключить к какому- нибудь полю бровзе? Может где-то в коде? Или Value в сомбо это индекс Item?

SergKis: Vlad04 пишет Как комбо подключить к какому- нибудь полю бровзе? Был пример Tsb_combo_demo2.7z и в нем 3-и поля с 3-мя сомбо связаны [pre2] :bChange := {|obr,oCol,cNam,cVal,nPos| ; cNam := 'KRANK1', ; oCol := obr:GetColumn(cNam), ; cVal := Eval(oCol:bData), ; nPos := ascan(oCol:aItems, cVal), ; nPos := iif( nPos > 0, nPos, 1 ), ; SetProperty(obr:cParentWnd, cNam, "Value", nPos), ; cNam := 'KRANK2', ; oCol := obr:GetColumn(cNam), ; cVal := Eval(oCol:bData), ; nPos := ascan(oCol:aItems, cVal), ; nPos := iif( nPos > 0, nPos, 1 ), ; SetProperty(obr:cParentWnd, cNam, "Value", nPos), ; cNam := 'KRANK3', ; oCol := obr:GetColumn(cNam), ; cVal := Eval(oCol:bData), ; nPos := ascan(oCol:aItems, cVal), ; nPos := iif( nPos > 0, nPos, 1 ), ; SetProperty(obr:cParentWnd, cNam, "Value", nPos) } [/pre2] Value в сомбо это индекс Item? Да

Vlad04: Если задача только отображать данные в комбобоксе, то можно применить свойство DISPLAYEDIT .T. click here

Vlad04: click here

Dima: SergKis В общем снова полезли глюки , если интенсивно ездить по бровсу. По началу пропали все иконки в бровсе , после того как из бровса вышел , в главном окне потерялся IMAGE и перекалапуцало главное меню. Таймер сделан как ты и советовал. Беда с этим бровсом...

Петр: Dima пишет: перекалапуцало главное меню. Это как?

Dima: Петр пишет: Это как? Да все посдвигалось , фон главного окна куда то пропал , картинка в главном окне улетела в пятое измерение , статус бар главного окна хаотично сменил цвета...... При чем по TsBrowse я поездил минут 5 и оставил , поработал в другой проге , затем вернулся туда же , снова поездил хаотично то клавишами то колесом мыши , вышел покурить....снова поездил ...пошел сделал кофе , ну и тд и после только начав ездить ......понеслись глюки.

Петр: А с меню что? Фон главного окна как задается? BKBRUSH? Картинка как выводится, какой командой? В TsBrowse живет таймер постоянно? Он срабатывает даже если комп переходит в режим ожидания (кофе с перекуром)? А без кофе такое случается?

Dima: Петр Вопросы понял , обмозгую завтра и отвечу. Спасибо !

Dima: Петр пишет: Фон главного окна как задается? BKBRUSH? BACKCOLOR { 99,99,99 } Петр пишет: Картинка как выводится, какой командой? DEFINE IMAGE внутри описания окна Петр пишет: В TsBrowse живет таймер постоянно? Таймер живет в окне (WINDOWTYPE STANDARD) а уже в этом окне живут 2 TsBrowse После закрытия окна таймер должен я так понимаю , сам самоликвидироваться Петр пишет: Он срабатывает даже если комп переходит в режим ожидания (кофе с перекуром)? Получается что да [pre2] DEFINE TIMER MyTimer INTERVAL 400 ACTION DoTimer(oBrw3,obrw4) This.MyTimer.Enabled := .t. END WINDOW [/pre2] Как только заглючил TsBrowse , начинаются глюки во всей проге.

Петр: По мне, так некорректно обрабатываются сообщения, в часности WM_PAINT, а вот дальше без исходников - гадание на кофейной гуще. Dima пишет: Получается что да И вот этот момент немного меня смущает. А на утечку ресурсов приложения смотрели GDIView Самодостаточный пример с глюками нужен.

Dima: С GDIView ранее не работал. Не понятно где смотреть утечку. Вероятно показывать счетчики изменений. После "падения" уже , вижу следующее. Так в колонке BRUSH вижу 27 [+4] Bitmap 9746 [+9568] Шрифт 42 [+4] В диспетчере задач после загрузки получил на задаче цифирь 3788 а когда все рухнуло 3948 (использование памяти) При этом проц грузануло на 25 % , после чуть отпустило до 8 % , но нормально выйти не смог , снял задачу. Петр пишет: Самодостаточный пример с глюками нужен. Согласен. Не много по текущей работе разберусь и попробую сделать.

ММК: Петр пишет: По мне, так некорректно обрабатываются сообщения, в часности WM_PAINT, а вот дальше без исходников - гадание на кофейной гуще. Складывается впечатление, что "теряется" активное окно. Конечно таймер к этой ситуации это от лукавого :)) Ошибке уже лет десять, поэтому вот в этих исходниках она уже есть. https://cloud.mail.ru/public/8Xve/UTv9YCg65 Это первоисточник, так что может что и даст :)

Петр: Dima пишет: Вероятно показывать счетчики изменений. Да, сравнение до и после. Если все сделано аккуратно и правильно, то создали кисточку нарисовали что-то - удалили, тоже с картинками и т.д. - ресурсы нужно использовать экономно. Значит если есть разница счетчиков - ресурсы освобождаются некорректно, это в MiniGUI еще встречается - теперь нужно по возможности локализировать место утечки.

Dima: Петр Понял , поиграюсь еще.

Петр: ММК пишет: Ошибке уже лет десять, поэтому вот в этих исходниках она уже есть. И что не нашли? :HandleEvent() можно (нужно) трасить



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