Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: 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 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.063 c
1-1079594675
Billy
2004-03-18 10:24
2004.04.04
Как узнать существует ли данная форма???


8-1070574471
Suharew
2003-12-05 00:47
2004.04.04
Как работать с рисунками GIF


4-1075467162
wolf01
2004-01-30 15:52
2004.04.04
Как извлечь иконку из Shell32 по номеру?


1-1079462465
Шнур
2004-03-16 21:41
2004.04.04
Компоненты


1-1079172401
PiratA
2004-03-13 13:06
2004.04.04
TTreeView