EditMask для отдельных ячеек DBGridEh

toha_rohes
Дата: 08.06.2009 17:10:26
Добрый день всем!

Есть проблема с установкой маски для каждого отдельного поля в DBGridEh. Уже что только не делал... Где то здесь видел тему, но там проблему так и не решили.

Есть набор данных где в каждой строке могут быть данные разного формата, поэтому шаблон хранится в отдельном поле таблички. Например:

NAME_PARAMETER | TEMPLATE | VAL_PARM
Дата рождения | 00/00/0000;0;0 | 22.11.2009
Имя | cccccccccc;0;_ | Иван
ИНН | 000000000000;0;_ | 111111111111

Использовал EditMask в DBGridEh (OnClick, DrawColumnCell, OnEnter...). Либо менялся формат во всем столбце, либо зацикливалось при использовании DrawColumnCell (хотя и маска менялась по каждой строке правильно)...

Как реализовать такой ввод и редактирование данных?
toha_rohes
Дата: 09.06.2009 17:19:58
Сделал через InplaceEditor
type
TGridCracker = class(TCustomGrid);
TEditorCracker = class(TCustomMaskEdit);

var editor1: TEditorCracker;
...
procedure TForm2.DBGridEh1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);

begin
editor1 := TEditorCracker(TGridCracker(Sender).InplaceEditor);

if (DBGridEh1.SelectedField.FieldName='VAL_PARM') and (Assigned(editor1)) then
 begin

    editor1.Color := clYellow;
    editor1.EditMask:=OraQuery1.FieldByName('TEMPLATE').AsString;
 end;

end;


Так получается почти то что мне нужно, но когда я вхожу в режим редактирования, маска принимается от следующей записи в DataSet.
Т.е. по предыдущему примеру полю VAL_PARM в дате рождения присваивается маска от поля имя ( cccccccccc;0;_).

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