Форум » GUI » Tbrowse » Ответить

Tbrowse

Avf: Решил переделать часть программ из BROWSE в TBROWSE. Возник вопрос по refresh. Есть ли в TBROWSE аналог DoMethod(...,...,'refresh') из BROWSE или refreshall из Clipper ? Refresh(.t.) почему-то экран не перерисовывает.

Ответов - 9

gfilatov: Кроме METHOD Refresh( lErase ) INLINE InvalidateRect( ::hWnd,; If( lErase == NIL .OR. !lErase, 0, 1 ) ) существует еще метод METHOD TSBrowse:UpStable() Пробуй!

Avf: Пробую, Григорий. Пример - смена индекса Для BROWSE : PROCEDURE ChangeOrder(nOrd) SET ORDER TO nOrd DoMethod(cWindowName,cBrowseName,'Value',RecNo()) DoMethod(cWindowName,'cBrowseName,'refresh') return Для TBROWSE : PROCEDURE ChangeOrder(nOrd) SET ORDER TO nOrd tBrowseName:Upstable() return пока не перерисовывает . буду смотреть дальше.

gfilatov: Avf пишет: Для TBROWSE : PROCEDURE ChangeOrder(nOrd) SET ORDER TO nOrd tBrowseName:Upstable() return Теперь стало яснее, в чем проблема Необходимо изменять индекс средствами TBROWSE: // SetOrder method syntax: oBrw:SetOrder( nColumn, cTag, cPrefix ) Brw_8:SetOrder( 1, "StName", "NY" ) // you can also directly assign the cPrefix value: Brw_8:cPrefix := "NY"


Avf: Т.е. если я правильно понял , теперь все действия над DBF-файлом в Tbrowse теперь можно выполнять только используя средства TBrowse ( фильтры, поиск, смена индексов,внешние функции и т.п. ) ?

PSP: Имхо, да. Объект должен получить событие от своего метода, чтобы как-то отреагировать.

alex_II: Вопрос в студию: Можно ли как-нибудь выделить текущую строку когда TBrowse находится в режиме CELL | CELLED | GRID ? Пользователи теряются при движении по строкам когда имеется широкое окно и много колонок. Удалось выделить текст текущей строки цветом, но это не очень заметно, хотелось бы изменмть фон текущей строки как VFP8. Подозреваю что это можно выполнить через API, но своих знаний по С++ маловато, может гуру подскажут что-нибудь

alex_II: Работаю с массивом, но заранее неизвестно кол-во колонок Попытался решить проблему как написано ниже, но получаю ошибку при подстановке в номер элемента массива(ELEMENT &j) Может кто подскажет как решить проблему. DEFINE TBROWSE Br_show ... Br_show:SetArray(aBr,,.F.) FOR j := 1 TO Len(aFields) ADD COLUMN TO Br_show DATA ARRAY ELEMENT &j ; HEADER aFields[j] ; SIZE aWidths[j] ; ALIGN DT_CENTER NEXT ...

SergeyL: А что мешает использовать TBROWSE стандартно. @ nRow, nCol TBROWSE Br_show ARRAY aBr WIDTH nWidth HEIGHT nHeight ; HEADERS aFields WIDTHS aWidths SetArray() - не требуется. Далее работа с объектом Br_show

avf2007: А если не массив,а файл ?



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