Отправлено: 13.01.18 14:28. Заголовок: Haz пишет метод рабо..
Haz пишет
цитата:
метод работает. Я о том что просто не пользуюсь им.
Я тоже не пользуюсь, но с тем что работает, не соглашусь. Если фонты по блоку кода - валится, нет footer вывода ... т.е. для того чтобы заработал, надо делать спец. отображение тсб. с изменениями, простенький вывод есть без адо, длл и др. спец.оборудования.
Vlad04
постоянный участник
Пост N: 758
Зарегистрирован: 13.10.05
Отправлено: 26.01.18 11:36. Заголовок: Tsb_seek ИЗ пример..
Tsb_seek ИЗ примеров c:\MiniGUI\SAMPLES\Advanced\Tsb_seek\
Сегодня обратил на такую странность в отображении. Если стрелкой прокручивать бровс вниз, то экран заполняется одинаковыми данными, не обновляется.
Andrey
постоянный участник
Пост N: 5703
Зарегистрирован: 12.09.06
Отправлено: 26.01.18 13:48. Заголовок: Vlad04 пишет: то эк..
Vlad04 пишет:
цитата:
то экран заполняется одинаковыми данными
Наверное залипла последняя запись в таблице. Такое бывает часто. Нужно добавить разрыв в конец таблицы. Был бы подвал в конце таблицы, можно было бы воспользоваться функцией
oBrw:SetNoHoles() // убрать дырку внизу таблицы
Vlad04
постоянный участник
Пост N: 760
Зарегистрирован: 13.10.05
Отправлено: 26.01.18 14:27. Заголовок: Помогло , без подвал..
Помогло , без подвала
Vlad04
постоянный участник
Пост N: 761
Зарегистрирован: 13.10.05
Отправлено: 26.01.18 14:52. Заголовок: Но не во всех случая..
Но не во всех случаях. Помогло добавить
цитата:
DEFINE TBROWSE Br_zaw AT 10, 1 OF o_test ALIAS "test" WIDTH (zox/2)-10 HEIGHT (zoy-150) ON CHANGE {||inkey(0.03),CorrectionFirstLast( Br_zaw )}
Выкинь эту функцию и забудь про неё ! Её дорабатывать нужно, я тоже её использовал, в каких то случаях помогает, в других вообще мешает. Наz советовал её не пользоваться. Делай высоту таблицы на 1-2 пикселя больше чем высота всех отображаемых ячеек. Это SergKis так рекомендует. У меня залипание пропало в таких случаях.
SergKis
постоянный участник
Пост N: 1713
Зарегистрирован: 17.02.12
Отправлено: 26.01.18 15:42. Заголовок: Vlad04 пишет Но не в..
Очень хорошо ! А (3) , что означает ? И вообще, что этот метод делает ?
SergKis
постоянный участник
Пост N: 1714
Зарегистрирован: 17.02.12
Отправлено: 26.01.18 18:38. Заголовок: Vlad04 пишет что это..
Vlad04 пишет
цитата:
что этот метод делает ?
Метод убирает дырку в низу таблицы, распределяя разницу между присутствующими заголовками\подвалами, если их нет, есть только строки, то подправит размер тсб по высоте
METHOD SetNoHoles( nDelta, lSet ) CLASS TSBrowse
LOCAL nH, nK, nHeight, nHole
DEFAULT nDelta := 2, lSet := .T. ...
nDelta := 2 - поправка для расчетов разницы lSet := .F. - рассчитает величину дырки, вернет из метода не меняя размер
// создать 1-ю колонку ADD COLUMN TO oBrw2 HEADER "Номер"+CRLF+"графы" ; DATA FieldWBlock( "ID", Select() ) ; SIZE nWidth1 PICTURE "@Z 999" ; ALIGN DT_CENTER,DT_CENTER,DT_CENTER // создать 2-ю колонку ADD COLUMN TO oBrw2 HEADER "Наименование"+CRLF+"графы в карточке" ; DATA FieldWBlock( "FHEADER", Select() ) ; SIZE nWidth2 ; ALIGN DT_LEFT,DT_CENTER,DT_LEFT // создать 3-ю колонку ADD COLUMN TO oBrw2 HEADER "Печать"+CRLF+"в таблице" ; DATA FieldWBlock( "VIEW", Select() ) ; SIZE nWidth3 ; CHECKBOX ; // Editing with Check Box ALIGN DT_CENTER, DT_CENTER ; EDITABLE MOVE DT_MOVE_DOWN oBrw2:aColumns[3]:bPrevEdit := {|| CheckField(), TRUE } // проверка до ввода .... // --------- заменяем колонку CHECKBOX на свои картинки --------- oBrw2:aCheck := { LoadImage("CheckT28"), LoadImage("CheckF28") } ....
Таблица не простая, для ID=0 делаются заголовки в таблице цветом и запрет на редактирование. Нужно убрать в таблице показ чекбокса по условию ID=0. Как это сделать ?
Vlad04
постоянный участник
Пост N: 766
Зарегистрирован: 13.10.05
Отправлено: 30.01.18 08:47. Заголовок: if i =3 ADD..
цитата:
if i =3 ADD COLUMN TO Brw_1 DATA {|| iif(Dogovor->Vid > 0,aVidD[Dogovor->Vid],' Нет ' )} .... ...
А попробуй при формировании колонки установить условия показа чекбокса от значения ID. Т.е. вместо показа чекбокса можешь вывести пустое место.
Andrey
постоянный участник
Пост N: 5707
Зарегистрирован: 12.09.06
Отправлено: 30.01.18 10:13. Заголовок: Vlad04 пишет: А поп..
Vlad04 пишет:
цитата:
А попробуй при формировании колонки установить условия показа чекбокса от значения ID. Т.е. вместо показа чекбокса можешь вывести пустое место.
Покажи как:
ADD COLUMN TO oBrw2 HEADER "Печать"+CRLF+"в таблице" ; DATA FieldWBlock( "VIEW", Select() ) ;
Таблица не простая, для ID=0 делаются заголовки в таблице цветом и запрет на редактирование. Нужно убрать в таблице показ чекбокса по условию ID=0. Как это сделать ?
Не меняя класса TBROWSE можно только пытаться по условию ID=0 подменить ::aCheck в блоках ::bOnDrawLine и ::bOnDraw соответственно , а по условию ID <> 0 восстанавливать. Но думаю грязновато работать будет. В смысле работать будет , но с глючком.
Оптимально - в классе дописать возможность ::aCheck назначать блок кода и добавить проверки на hb_isBlock( ::aCheck ). тогда картинки чекбокса можно будет менять на лету , в том числе и задавать NIL
Andrey
постоянный участник
Пост N: 5709
Зарегистрирован: 12.09.06
Отправлено: 30.01.18 15:02. Заголовок: Haz пишет: Не меняя..
Haz пишет:
цитата:
Не меняя класса TBROWSE можно только пытаться по условию ID=0 подменить ::aCheck в блоках ::bOnDrawLine и ::bOnDraw соответственно , а по условию ID <> 0 восстанавливать. Но думаю грязновато работать будет. В смысле работать будет , но с глючком.
Это скорее вариант не прямой выборки. Для редактирования ему как до луны. Но это ни в коем случае не упрёк. Как работает блок выборки_записи, все знают со времен клиппера, и допилить - не вопрос. PS. сам часто использую этот прием, ступор иногда возникает при инкрементальном поиске по таким колонкам
Dima
администратор
Пост N: 6712
Зарегистрирован: 17.05.05
Отправлено: 30.01.18 22:43. Заголовок: Haz пишет: Для реда..
//////////////////////////////////////////////////////////// STATIC FUNCTION CheckField() LOCAL cAlias := oBrw2:cAlias // "XLS_HEADER" LOCAL nID := M->oBrw2:nAt // номер строки и номер для поиска LOCAL aMenuHead := aStatMenuPrn[nID] // строка массива меню LOCAL lVal, cNameField := "VIEW"
IF (cAlias)->ID == 0 // выбор здесь не предусмотрен RETURN .F. ENDIF
IF (cAlias)->VIEW == .T. // значит нужно добавить запись в БД:XLS_GALKI SELECT("XLS_GALKI") APPEND BLANK XLS_GALKI->FNN := RECNO() XLS_GALKI->FNAME := (cAlias)->FHEADER XLS_GALKI->FALIAS := aMenuHead[2] XLS_GALKI->FPOLE := aMenuHead[3] XLS_GALKI->FPICT := aMenuHead[4] XLS_GALKI->FTYPE := aMenuHead[5] XLS_GALKI->FKOD := aMenuHead[6] XLS_GALKI->FRECNO := nID // номер записи из XLS_HEADER->ID XLS_GALKI->FLETTER := CHR(64 + XLS_GALKI->FNN ) ELSE // значит нужно удалить запись в БД:XLS_GALKI SELECT("XLS_GALKI") LOCATE FOR XLS_GALKI->FRECNO == nID IF FOUND() DELETE PACK ENDIF DO WHILE !EOF() XLS_GALKI->FNN := RECNO() XLS_GALKI->FLETTER := CHR(64 + XLS_GALKI->FNN ) SKIP ENDDO ENDIF oBrw1:Reset() oBrw1:Refresh(.T.) oBrw2:DrawSelect()
SELECT(cAlias) RETURN .T.
Vlad04
постоянный участник
Пост N: 768
Зарегистрирован: 13.10.05
Отправлено: 31.01.18 07:53. Заголовок: Haz Такую конструкци..
Haz Такую конструкцию использую только для информационных столбцов, прямое редактирование использую для простых таблиц, типа справочник (1-2 колонки), что сложней - в отдельной форме.
Все даты в формате GMT
3 час. Хитов сегодня: 14
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет