Форум » GUI » И снова фокусы TSBROWSE » Ответить

И снова фокусы TSBROWSE

Dr. Oldwarez: Очень распространённая задача - редактирование выведенной в TSBROWSE строки Окно редактирования вызывается ON DBLCLICK или специально назначенной клавишей. Но суть не в этом, а в том, чтобы потом TSBROWSE правильно обновлялся. Что нужно ещё делать, кроме Brw:Reset() У меня так: [quote][pre2]nPos:=Table->(ORDKEYNO()) Brw:nLen:=Table->(ORDKEYCOUNT()) Brw:Reset() Brw:GoPos(nPos,1) wnd.Brw.Value:=nPos brw:Refresh(.F.) brw:SetFocus()[/pre2][/quote] Подскажите, пожалуйста, где у меня ошибка

Ответов - 3

alex_II: Если на базу наложен индекс, то это становиться настоящей проблемой. Я сам слежу за положением курсора nRp := Br_oplTo:nRowPos nOldLp := Br_oplTo:nLogicPos() DBAppend() REPLACE... ... Br_oplTo:SetFocus() nLp := Br_oplTo:nLogicPos() * nDelRec кол-во удалённых записей * nVs кол-во строк в окне IF AbS(nLp-nOldLp) > nVs // новая запись отстоит от текущей больше чем строк на экране Br_oplTo:Reset() Br_oplTo:GoPos(nLp-4-nDelRec,1) Br_oplTo:GoPos(nLp-nDelRec,1) ELSE // новая запись в пределах экрана IF nLp-nDelRec <= nVs // курсор находиться на первом экране Br_oplTo:Reset() ENDIF Br_oplTo:GoPos(nLp,1) nDelRec := 0 ENDIF Br_oplTo:PanHome() Br_oplTo:GoRight() IF nLp >= Br_oplTo:nLen // запись добавляеться в конец Br_oplTo:Reset() Br_oplTo:GoBottom() ENDIF Br_oplTo:Refresh()

Dr. Oldwarez: Большое спасибо! Только откуда вы берёте число удалённых записей nDelRec? А вообще BROWSE удобнее, только там надо два щелчка для редактирования и проблема с выводом вычисляемых полей.

alex_II: Dr. Oldwarez пишет: Только откуда вы берёте число удалённых записей nDelRec? Я сам их считаю при удалении А вообще BROWSE удобнее, только там надо два щелчка для редактирования и проблема с выводом вычисляемых полей. Я предпочитаю использовать TSBROWSE, т.к. у него несравненно больше возможностей




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