:: Visual Foxpro, Foxpro for DOS
targrid
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
Добрый день! Может кто сталкивался с подобным. Нашел в примерах Targrid, интегрировал в свою програму, вроде работает, но там есть фильтры, фильтр по текстовому полю работает, а по цифровому не хочет. И методом долгих експериментов определил, что он работает если в программе стоит set point to ".", но только должно быть set point to ",". Прошу помощи, перелопатил весь клас, так и не нашел.
Ratings: 0 negative/0 positive
Re: targrid
sphinx

Сообщений: 30457
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Я использовал. Но отказался (если с другим классом не путаю) - по другой причине, она к делу не имеет отношения.

А можно простой пример, чтобы поглазеть на проблему? Можно долго ждать, когда отпишется тот, кто использовал класс и знает все нюансы. А можно самим попробовать найти это место. Коллега, вместе быстрее найдем.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: targrid
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
занимает больше чем 1000кб
ссылка с примеров
foxclub.ru

там надо изменить set point ','
Ratings: 0 negative/0 positive
Re: targrid
akvvohinc

Сообщений: 3916
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
он работает если в программе стоит set point to ".", но только должно быть set point to ",". Прошу помощи, перелопатил весь клас, так и не нашел.
Допустим, класс подразумевает такую настройку по умолчанию.
Тогда что вы надеетесь там найти?
Ratings: 0 negative/0 positive
Re: targrid
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
искал где формируется фильтрация в которой вместо 0,000 принимается 0.000
Ratings: 0 negative/0 positive
Re: targrid
sphinx

Сообщений: 30457
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
akvvohinc
Цитата:
он работает если в программе стоит set point to ".", но только должно быть set point to ",". Прошу помощи, перелопатил весь клас, так и не нашел.
Допустим, класс подразумевает такую настройку по умолчанию.
Тогда что вы надеетесь там найти?

Да я понимаю. Но давай глянем, может несложно что-то подкрутить в классе.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: targrid
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
временно в ините форммы отчета делаю set point to ".", а на выходе возвращаю set point to ",", но это ж костыль))
Ratings: 0 negative/0 positive
Re: targrid
sphinx

Сообщений: 30457
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Да так-то да. Порой сами такие пишем. Прямо сейчас не гляну, завтра на работу заберу, будет время.

Серёга поди посмотрит тоже.
Подожди немного, сегодня праздничный, тупо некогда, я в екб еду, а не за столом.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: targrid
akvvohinc

Сообщений: 3916
Откуда: Москва
Дата регистрации: 11.11.2008
ventall
искал где формируется фильтрация в которой вместо 0,000 принимается 0.000
Вы бы объяснили подробнее тем, кто никогда не пользовался этим классом.
Представьте, что я вам напишу нечто подобное о своей программе - много вы из этого поймете, и сможете ли помочь.

Цитата:
Да я понимаю.
А я, к сожалению, нет.

Цитата:
временно в ините формы отчета делаю set point to ".", а на выходе возвращаю set point to ",", но это ж костыль))
А почему нельзя то же самое добавить в те методы класса, которые вызываются?



Исправлено 1 раз(а). Последнее : akvvohinc, 08.03.23 17:39
Ratings: 0 negative/1 positive
Re: targrid
sphinx

Сообщений: 30457
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Я понимаю, что есть проблема и пока никто не написал, как она решается.
Остальное я точно так же не понимаю. Своих зачем троллить?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: targrid
sphinx

Сообщений: 30457
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Как вариант. Есть обработка, можно параметром (и настройкой в ини, если надо) задать, там, где встречается - не жёсткая привязка, а по параметру. Но это пока сферический конь, посмотрим, что можно сделать.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/1 positive
Re: targrid
akvvohinc

Сообщений: 3916
Откуда: Москва
Дата регистрации: 11.11.2008
Там проблема в том, что класс формы customfilterform, устанавливающий фильтр, строит выражение фильтра без учета настройки SET POINT.
А поэтому такие команды как:
val = STR(num,14,5)
возвращают разные значения при разных значениях этой настройки.

Как результат, при настройке, отличающейся от точки, получаются синтаксические неверные выражения Фокса, например:
alias.field = 5,000

Ошибки программа глушит, поэтому фильтр просто не устанавливается при неверном выражении фильтра.
Ratings: 0 negative/1 positive
Re: targrid
sphinx

Сообщений: 30457
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Ну ты раньше нарыл, респект. Я ещё еду, нет у меня Фокса.



------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/1 positive
Re: targrid
akvvohinc

Сообщений: 3916
Откуда: Москва
Дата регистрации: 11.11.2008
На мой взгляд, самый простой способ подправить работу фильтра следующий:
В customfilterform создать свойство для сохранения настройки SET POINT, например setpoint.
В Load формы сохранить текущее значение этой настройки и выставить требуемое:
thisform.setpoint = SET("Point")
SET POINT TO .

А в Destroy - восстановить:
SET POINT TO (thisform.setpoint)

Ну, а если вы хотите, чтобы значения на форме всё же и отображались с запятой, то надо найти то место, где строится выражение фильтра, и подменять символ-разделитель на точку в процессе его построения (или там сохранять/менять/восстанавливать настройку SET POINT).
Одно из таких мест - метод Click кнопки "Змінити умову", может, достаточно будет поправить только там - не выяснял.



Исправлено 5 раз(а). Последнее : akvvohinc, 08.03.23 21:42
Ratings: 0 negative/1 positive
Re: targrid
sphinx

Сообщений: 30457
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
:hi:


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/2 positive
Re: targrid
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
спасибо! так и сделал.
вот в класе не найду. тот метод смотрел, просто не пойму каким образом оно "," преобразовывает в ".", ведь все переменные идут в виде "0,000" не каждый символ отдельно а целиком с запятой. В принципе работает, пусть так и работает...



Исправлено 1 раз(а). Последнее : ventall, 09.03.23 09:25
Ratings: 0 negative/0 positive
Re: targrid
ssa

Сообщений: 12922
Откуда: Москва
Дата регистрации: 23.03.2005
ventall
спасибо! так и сделал.
Вот и ладушки!
Цитата:
вот в класе не найду.
А что искал-то? и в каком классе?
Цитата:
тот метод смотрел,
Какой ТОТ?
Цитата:
просто не пойму каким образом оно
ОНО - это что?
Цитата:
"," преобразовывает в ".", ведь все переменные идут в виде "0,000" не каждый символ отдельно а целиком с запятой. В принципе работает, пусть так и работает...
Портится тут:
*** встановлюємо новий фільтр
**************перша умова************
DO CASE
CASE m.lcType = "N"
m.lcFilterValue = ALLTRIM(STR(thisform.text1.Value,14,5))
STR() не может переварить переданный ей аргумент.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/2 positive
Re: targrid
ssa

Сообщений: 12922
Откуда: Москва
Дата регистрации: 23.03.2005
Уточнение, там дальше идет сборка условия, которая при set point to ',' получается такой:
tovar.sumall = 130,00000
Таким образом, процитированный ранее код в отремонтированном виде может выглядеть так:
*** встановлюємо новий фільтр
**************перша умова************
DO CASE
CASE m.lcType = "N"
m.lcFilterValue = Chrtran(ALLTRIM(STR(thisform.text1.Value,14,5)), ',', '.')


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/2 positive
Re: targrid
ssa

Сообщений: 12922
Откуда: Москва
Дата регистрации: 23.03.2005
И еще информация к размышлению в методе DeleteAllFilter класса TarGrid:
Local i, lcTH, loTH
With This
If Type('.dataGrid.ColumnCount')='N'
*ssa* For m.i = 1 To .dataGrid.ColumnCount
*ssa* m.lcTH = "." + "TH" + Transform(m.i)
*ssa* If Type(m.lcTH)="O"
*ssa* m.loTH = &lcTH
*ssa* m.loTH.FilterStr = Null
*ssa* Endif
*ssa* Endfor
.SetAll('filterstr', Null, 'TarHeader2')
.SetGlobalFilter()
Endif
Endwith


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/1 positive
Re: targrid
akvvohinc

Сообщений: 3916
Откуда: Москва
Дата регистрации: 11.11.2008
Дополню.
Для универсальности лучше не запятую подменять на точку, а тот символ-разделитель, который выставлен в настройках SET POINT - мало ли каким он может быть:
CHRT(value,SET('POINT'),'.')
Ratings: 0 negative/1 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 13 Sergey_K  (Гостей: 12)

© 2000-2023 Fox Club 
Яндекс.Метрика