Форум » Clipper » All In One » Ответить

All In One

SergeyKorotun: В связи с написанием программы по разным частям кода возникают трудности. Чтобы не задавать вопросы в разных темах и не забыть в какой именно, буду спрашивать в этой. Я возможно этим нарушу правила форума, вопросы будут затрагивать разнообразные функции, но пусть оправданием мне будет то, что все они относятся к одной программе. Вопрос №1 В get поле вводится какое то значение и если оно существует в справочнике, переходим в следующее get поле, если же не существует, то выдается предупреждение об этом. Сам оператор не имеет право добавлять это значение в справочник, но, убедившись в том, что он ввел без ошибок, имеет право оставить это значение в get поле и перейти в следующее. Чтобы случайно не проскочило ошибочно введенное значение, выход из get поля должен осуществляться по нестандартной клавише( т.е. K_ENTER, K_DOWN не подходят). Например подошло бы Ctrl+Enter Реализовать самому не удалось Вопрос № 2. В dbedit отобразить базу так, чтобы видеть максимальное число последних записей и чтобы курсор находился на последней записи use base new go bottom base->dbedit() вижу только одну последнюю запись use base new go bottom skip -17 base->dbedit() вижу все последние записи, но курсор находится на первой видимой use base new go bottom skip -17 skip 17 base->dbedit() вижу только одну последнюю запись Вопрос № 3. В dbedit даты отображаются в формате "дд.мм.гг", причем гг первые две цифры из гггг. Как отобразить в формате "дд.мм.гггг", не используя массив из picture для dbedit, чтобы не переделывать программу при изменении структуры базы. Вопрос № 4. в функции из valid изменяются значения других get переменных. Изменения становятся видимыми только тогда, когда курсор попадает в измененное соответствующее get поле, а хочется чтобы обновились сразу после выхода из поля, в котором они изменились. Обновляю так keyboard (replicate(chr(K_DOWN),17)+replicate(chr(K_UP),16)) Можно как то попроще? Вопрос № 5 При входе в get ... read в чужой программе на фоксе все поля пустые. В своей программе get переменные инициализирую командой space(n). Но после выхода из read и сохранения значений в полях базы с типом numeric выдает ошибку несоответствия типа данных. Обхожу так if !Empty() replace namebase->namefield with val(alltrim(namegetfield)) endif Как то попроще можно? Вопрос № 6 Есть строка из символов, которых не должно быть в веденном значении в get поле. Существует ли какая то функция, возвращающая true или false в случае наличия символов из строки 1 в строке 2? Или только посимвольно проверять?

Ответов - 105, стр: 1 2 3 4 5 6 All

SergeyKorotun: Как в dbedit изменить размер колонок динамически? Нижеприведенный фрагмент программы не изменят ширину колонок (на самом деле колонок много, есть что подтягивать из за пределов монитора) apict дублировал и в процедуре - не помогает. С функции f1 с возвратом return 2 - ширина неизменна SET KEY K_F9 TO PictureSwich() pictFlg:=.t. pictSum:=13 apict:={replicate("9",pictSum)+".99"} acol:={"Summa"} aname:={"Сумма"} dbedit(2,1,21,78,acol,"f1",apict,aname) ... procedure PictureSwich() if pictFlg pictSum:=5 else pictSum:=13 endif pictFlg:=!pictFlg

petr707: pictFlg:=.t. pictSum:=13 private lexit:=.f. private lwas_f9:=.f. do while !lexit if lwas_f9 lwas_f9:=.f. if pictFlg pictSum:=5 else pictSum:=13 endif pictFlg:=!pictFlg endif apict:={replicate("9",pictSum)+".99"} acol:={"Summa"} aname:={"Сумма"} dbedit(2,1,21,78,acol,"f1",apict,aname) if lexit; EXITl endif enddo .... Function f1(..) do case .. case lastkey()=K_F9 lexit:=.f. lwas_f9 :=.t. return 0 // exit from dbedit .. case lastkey()=K_ESC lexit:=.t. return 0 // exit from dbedit ....

Andrey: SergeyKorotun пишет: Вопрос № 6 Смиотри функцию AT()


SergeyKorotun: sum:=0 ReadExit(.f.) @1,1 say 'Сумма' get sum picture("9999999999999.99") read Почему выходит с read после набора двух цифр после запятой? Как разрешить выход только по Enter?

petr707: conf:=SET(_SET_CONFIRM) ... SET(_SET_CONFIRM,.t.) read ... SET(_SET_CONFIRM,conf) SET CONFIRM определяет, требуется ли ввод подтверждения для окончания ввода текущего GET. Если задано SET CONFIRM OFF, то после ввода пользователем последнего символа текущего GET, курсор перемещается на следующий GET, если он есть. Если следующего GET нет, выполнение команды READ прекращается. Если задано SET CONFIRM ON, ввод данных в переменную очередного GET должен завершаться нажатием клавиши выхода (<Enter> или <Esc>). Во всех случаях, если ввод в переменную текущего GET не был прерван нажатием клавиши <Esc>, выполняется предложение RANGE или VALID. За дополнительной информацией о команде GET следует обратиться к описанию команды @...GET.



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