Вниз
Скачать: CL | DM;

как в run-time создать обработчик CalcFields   Найти похожие ветки 

← →
AlexA ©   (2004-03-04 15:42) [0]

Дело в следующем:
есть динамический запрос, напр select Field1, Field2 from Table. Необходимо в делфях создать вычисляемое поле.
Как создать поля я представляю. А как назначить выражение для вычесления. По выражения необходимо можно только узнать привыполнении приложении.
Другими словами как в run-time создать обработчик CalcFields.
Спасибо. извените за костноязычие.


← →
SPIRIT ©   (2004-03-04 15:58) [1]

завести переменные типа String - p1, p2, p3
и и после выполнения запроса передаешь их
в  OnCalcFields
а там fieldbyname("p1").value:=fieldbyname("p2").value+fieldbyname("p3").value

естественно отключаешь OnCalcFields выполняешь запрос
и присваиваешь p1, p2, p3 имена полей.
включаешь
OnCalcFields

*написал и подумал: "БРЕД !!!!"*


← →
Anatoly Podgoretsky ©   (2004-03-04 16:01) [2]

Обработчики создаются только в рантайм.


← →
AlexA ©   (2004-03-04 16:14) [3]

Что "бред"??  :)
А я не знаю количество полей..


← →
AlexA ©   (2004-03-04 16:16) [4]

уважаемый Anatoly Podgoretsky , поясните пжл


← →
SPIRIT ©   (2004-03-04 16:17) [5]


> А я не знаю количество полей..

ну  блин ... как так .. но что то же знаешь


← →
Mike Kouzmine ©   (2004-03-04 16:19) [6]

А что, в запросе нельзя вычислять эти поля?


← →
AlexA ©   (2004-03-04 16:23) [7]

>Mike Kouzmine
Это вариант, я расматриваю.. неизвестно какие поля будут..., зависит от выбора пользователя... довольно таки сложно..


← →
Mike Kouzmine ©   (2004-03-04 16:25) [8]

Не сложнее, а проще чем ты хочешь сделать.


← →
SPIRIT ©   (2004-03-04 16:28) [9]


> AlexA ©   (04.03.04 16:23) [7]

пускай тогда пользователь и определяет какие поля делать вычисляемыми и в запросе их формировать
*
ибо не фиг
*


← →
kaif ©   (2004-03-04 16:31) [10]

Тебе нужен не "рантайм-обработчик", а скриптер. То есть компонент, который может вычислять различные выражения, которые введет пользователь и использовать в качестве переменных значения полей (обращаться к полям). Поищи компоненты-скриптеры. Выбери себе такой компонент. Затем в обработчике OnCalcFields сделай вызов его метода (Evaluate или Exceute, в зависимости от компонента), передав в него выражение, которое пользователь задаст в известном синтаксисе и в обработчик (OnGetValue или аналогичный), который при разборе выражения обнаруживает неизвестные переменные и пытается их узнать из "внешнего мира" по их имени запиши код, при помощи которого можно будет добраться до значения полей (TField.Value) по их имени. Обычно скриптеры используют тип переменных Variant.
 Я использую TScripter от Dream Controls. Но он платный. Есть и бесплатные компоненты-скриптеры. В конце концов можешь сам написать. Для этого можно разобраться в теории, как разбираются математические выражения (кажется это называлось обратная польская запись).


← →
Соловьев ©   (2004-03-04 16:42) [11]

2 AlexA
А много полей и операций?
может есть смысл перебрать все варианты? и просто по условию выбирать нужны?
А какая СУБД? может действительно лучше SQL?


← →
AlexA ©   (2004-03-04 16:49) [12]

>kaif спасибо.. именно про "обратная польская запись" читаю..
про "скриптеры" ничего до этого не знал... еще раз спасибо, буду копать..



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.021 c
1-1079431566
user
2004-03-16 13:06
2004.04.04
Как на форме отследить нажатие на F5 ?


1-1079520897
Незнающий
2004-03-17 13:54
2004.04.04
Поиск в массиве


1-1079546847
Chcnger
2004-03-17 21:07
2004.04.04
Опять факториал


1-1079100141
Prohodil Mimo
2004-03-12 17:02
2004.04.04
Как сделать чтобы у TPanel был Scroll ?


14-1078473457
Udjin
2004-03-05 10:57
2004.04.04
А что есть свойство класса




   Наверх