Форум » GUI » Ох уж этот TsBrowse » Ответить

Ох уж этот TsBrowse

spair2k: Уважаемые, подскажите, в каком месте ошибка? [more]#include 'minigui.ch' #include 'tsbrowse.ch' function main() use spr33 new define window win1 width 400,400 main @ 10,10 button bt1 caption 'Go' action {||fn1()} @ 40,10 tbrowse tb1 width 300 height 300; workarea 'spr33'; fields spr33->nID, spr33->cName end window return function fn1() win1.tb1.refresh(.t.) return .t.[/more] после сборки ругается на строку win1.tb1.refresh(.t.) ( Error E0030 Syntax error "syntax error at '('" ) если убираю .t. то собирается нормально, но не прорисовывается браузер. если следом за win1.tb1.refresh() дописываю строку win1.tb1.paint(), то ругается иначе ( Error E0030 Syntax error "syntax error at '.'" ) та же ошибка пишется, если я пишу win1.tb1.gotop() Плиз, подскажите где грабли искать??? Пример я усреднил, чтобы отобразить сущность...

Ответов - 14

spair2k: и еще одна вещь в догонку... если меняю tbrowse на browse, естественно меняю кой какие синтаксические особенности, то все кроме числовых поля выводятся <R-Next> вместо текста... вот уж странно это, ведь поле но может быть неопределенным, оно реально есть и ошибка в имени поля исключена, проверил все текстовые поля.

krutoff: tb1:Refresh(.t.)

spair2k: krutoff пишет: tb1:Refresh(.t.) за подсказку - респект! все ссылки типа tb1: работают безупречно, но вот теперь вопрос... я устанавливаю фильтр на таблицу, которая прорисована в гриде и получаю следующее, если в фильтр попадает несколько строк, то все последующие фильтры отображаются нормально, а если попадает всего одна, то другие фильтры отображают только одну (первую) строку, если ткнуть мышкой в предполагаемое место выбранных строк, то оказывается там что-то есть, подвигал туда сюда, все прорисовалось... как это победить?


spair2k: вопрос снят, решилось последовательностью tb1:gobottom() tb1:gotop() tb1:refresh(.t.) но почему так, пока не выяснил...

krutoff: Я тоже пользовался методом "научного тыка" и просмотром ит тестированием исходников. Наверное, при этих командах происходит активизация перерисовки TSBROWSE. В общем, надо смотреть последовательность выполнения в исходниках...

davir: Не идет сборка примера по TSBROWSE в IDE. Выдается сообщение Error: Unresolved external '_HB_FUN__DEFINETBROWSE' referenced from C:\MINIGUI\IDE\SAMPLES\TSBROWSE\OBJ\DEMO.OBJ Хотя , если вызвать compile.bat , все работает нормально. Вероятно, у меня не настроены Preferences. Не подскажете, может кто-то сталкивался с этим. Версия HMG 1.82

gfilatov2002: davir пишет: Вероятно, у меня не настроены Preferences. Просто добавьте библиотеку tsbrowse.lib, включая полный путь к ней, в поле для дополнительных библиотек

davir: Все получилось!Спасибо !

davir: Не могу понять, как действуют кодовые блоки uDATA при работе с TSBrowse? что нужно подать на входе, что должно получаться на выходе. Столкнулся при создании окна изменения параметров программы пользователем. Имеется вспомогательный zpr.dbf- файл описаний Броуз из 2-х колонок: Первая не должна редактироваться (там названия показателей zpr->Naz), 2-я сами показатели (zpr->Pole )разного типа из разных DBF(,например "cfg->Name") . Обе колонки отображаются, а редактирование показателей не происходит.

davir: Как узнать координаты текущей ячейки в TSBrowse ?

davir: Уточняю свой вопрос. Для ввода значений разных типов в одну и ту же колонку TSBrowse применяю блок для внешнего редактирования (bExtEdit). Непосредственно редактирование произвожу в диалоге или InputWindow() т.е. в другом окне. Все вроде бы работает но заводить окно для ввода ОДНОГО значения будет неудобно пользователям (лишние манипуляции с мышкой ). Проще говоря, возможно ли для каждого ряда в TSBROWSE навешивать свой ТЕХTBOX или GetBox или DATEPICKER и т.п. Хочу попробовать определять эти контролы в старшем окне, на месте активной ячейки, чтобы было похоже на стандатное редактирование TSBROWSE. Нужно знать координаты (ряд,колонка)ячейки ТSBROWSE в пикселях,

krutoff: В Случае создания ComboBox для редактирования ячейки: aItems := {'Да','Нет'} aData := { 1,0 } oBrw:SetData(nCol,Nil,{aItems, aData} ) Ну а aItems и aData можно хоть с файла, хоть самому назначить

davir: С координатами активной ячейки вроде бы разобрался. ************************ Func GetCellPos(oBrw) * Коордитаты активной ячейки TBROWSE ************************ Priv MyRow,MyCol,MyWidth,MyHeight,n1,n0 n0:=0 Priv MyoCol MyoCol := oBrw:aColumns[oBrw:nCell ] For nI := obrw:nColPos To oBrw:nCell - 1 n0:=n0 + oBrw:GetColSizes()[ nI ] Next MyRow := oBrw:nRowPos - 1 MyRow := ( myRow * oBrw:nHeightCell ) + oBrw:nHeightHead + ; oBrw:nHeightSuper + oBrw:nHeightSpecHd + If( MyoCol:l3DLook, 2, 0 ) MyCol := n0 + If( MyoCol:l3DLook, 2, 0 ) MyWidth := oBrw:GetColSizes()[oBrw:nCell ] - If( MyoCol:l3DLook, 2, 0 ) MyHeight := oBrw:nHeightCell - If(MyoCol:l3DLook, 1, -1 ) Return {MyRow,MyCol,MyWidth,MyHeight} Может кому-то пригодится ?

davir: При использовании метода oBrw:SetData(nCol,Nil,{aItems, aData} ) выбор нужного значения в комбобоксе приходится подтверждать Enter-ом. А нельзя обойтись только мышкой, как в обычном Combobox.



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