powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Нужен совет с доработкой кода
6 сообщений из 6, страница 1 из 1
Нужен совет с доработкой кода
    #32825039
Corba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем есть вот такой код (не мой, я вообще в Fox Pro новичёк)
.....
browse for b.gr = xyz fields b.dec:H='Расход':V=(b.dec<=b.saves):10,;
b.name:H = 'Наименование товара':30:R,;
b.saves:H='Остаток':R:10,b.price:H = 'Цена':R:10;
Font 'Courier New',10 Style 'BI';
Title 'Введите нужный расход Общий выбор - <ENTER>' window damm2
on key
endproc
.....

Я так понял он делает выборку из какой-то таблицы.

Моя задача дописать код, чтобы при нажатии на кнопку клавы в этой выборке выбирались только те которые начинаються на ту букву на которую нажал.
sql запрос я написал, это легко
Код: plaintext
1.
select * from xxx where xxx.name like chr(функция)+"%"
приблизительно так, но вот к какому событию и как называеться "функция" которая возратит ASCII код я не знаю... Подскажите плз.
...
Рейтинг: 0 / 0
Нужен совет с доработкой кода
    #32825057
AiSK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASC() – возвращает ASCII код символа
...
Рейтинг: 0 / 0
Нужен совет с доработкой кода
    #32825347
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Было бы неплохо узнать версию FoxPro, но, поскольку используется BROWSE-окно, то, скорее всего, речь идет о FoxPro for DOS.

Проблема в том, что FPD - это чисто процедурный язык. В большинстве случаев, в нем приходится симулировать события.

Команда BROWSE предназначена для отображения содержимого таблицы. В принципе, в ней можно добавить FOR-условие, чтобы она еще и фильтровала записи.

Дополнительная проблема в том, что BROWSE-окно в таком синтаксисе - это точка останова. Т.е. код следующий за ней будет выполнен только после закрытия собственно BROWSE-окна.

Насколько я помню, единственным способом перехватить нажатие клавиши в FPD была функция

ON KEY LABEL

Т.е. придется на каждую букву писать свою настройку ON KEY LABEL. Очень муторное занятие. Проще сделать одну горячую клавишу по которой открывается дополнительное окно для ввода текста фильтра.
...
Рейтинг: 0 / 0
Нужен совет с доработкой кода
    #32825826
Corba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Угумс, информацию принял к сведенью. Да, не всё так просто, как казалось, будемс разбираться :)

ЗЫ
Вообще написано на Visual FoxPro 5
А что browse окно это прошедший день? Вроде смотрится нормально. Кстати, что меня сильно удивило все окна и кнопки в программе прописаны вручную! :)
...
Рейтинг: 0 / 0
Нужен совет с доработкой кода
    #32825832
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Browse-окно в VFP - это прежде всего средство отладки . Т.е. разработчику нужно по быстрому посмотреть содержимое таблицы или проверить работоспособность некоего кода при модификации данных.

Основаная проблема BROWSE-окна в его неуправляемости. Тот же перхват нажатия клавиши для Browse-окна почти "неподъемная" задача. Browse-окно - это как бы "вещь в себе". Почти ничего не торчит снаружи, за что его можно было бы ухватить и "доработать напильником по месту"

Поскольку у тебя VFP5, то вместо BROWSE создай форму с Grid. Вот у него, для соответсвующего TextBox можно обработать событие KeyPress и никакой мороки с ON KEY LABEL.

Хотя, повторюсь, с моей точки зрения, сама постановка задачи некорректная. А если "рука дрогнула"? А запрос выполняетс несколько секунд?

Такие фильтры делаются как минимум, через дополительные TextBox, как максимум, отдельные формочки. Ввел ключ для поиска, затем нажал кнопку и получил результат.
...
Рейтинг: 0 / 0
Нужен совет с доработкой кода
    #32827444
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, я, конечно, ошибаюсь, но – рискну предположить, что под это весьма размытое условие задачи идеально подходит элементарный ComboBox с IncrementalSearch=.T.
Ведь необходимо выбрать наиболее подходящее из списка значение (например, название улицы) и передать его «дальше» по программе для последующего использования, так?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Нужен совет с доработкой кода
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]