Страница 1 из 1

Положить в очередь табличное событие?

Добавлено: 14 ноя 2011, 19:13
Robis
Реально? ;-)

Немного поясню ))

Код: Выделить всё


tableEvent table blabla;
  cmUpdateRecord:
    {
    ... логика
    }
end;

function FAIL() : void;
{
  blabla.field1 := 1;
  blabla.field2 := 4;
  <<- и вот тут, чтобы не переписывать всю логику cmUpdateRecord для таблы blabla хотелось бы его поюзать. 
}

Понадобилось при докомпиляции...

Re: Положить в очередь табличное событие?

Добавлено: 14 ноя 2011, 19:21
Алексей
putCommand(cmUpdateTable); не покатит?

Re: Положить в очередь табличное событие?

Добавлено: 14 ноя 2011, 19:22
Алексей
а ещё проще логику вынести в функцию, и когда надо - вызывать функцию.
и её же в cmupdaterecord

Re: Положить в очередь табличное событие?

Добавлено: 14 ноя 2011, 19:58
Robis
Алексей писал(а):putCommand(cmUpdateTable); не покатит?
Не покатит.
Алексей писал(а):а ещё проще логику вынести в функцию, и когда надо - вызывать функцию.
и её же в cmupdaterecord
Дублирование кода + если потом разработчик изменит что-то в cmUpdateRecord мне надо будет в своём коде это править. Как раз именно от этого я и хочу уйти.

Re: Положить в очередь табличное событие?

Добавлено: 15 ноя 2011, 07:57
n0where
ДОкомпиляцией. Там же можно вызвать свою логику до, после, или вместо cmUpdateTable.

Re: Положить в очередь табличное событие?

Добавлено: 15 ноя 2011, 10:33
oiko
Функция UpDateTable
Назначение
Если таблица была модифицирована, то вызовет соответственно cmUpDateRecord или cmInsertRecord.

Re: Положить в очередь табличное событие?

Добавлено: 15 ноя 2011, 12:51
LaaLaa
UpDateTable приведет к каскадному выполнению всех cmUpdateRecord и cmInsertRecord. Если в GUI-контролы интерфейса обнаружат что были изменения в значениях полей.

Искусственно установить флаг модификации полей можно с помощью оператора SET

Код: Выделить всё

function FAIL() : void;
{
  blabla.field1 := 1;
  blabla.field2 := 4;
  ...
  SET blabla.field100 := 4;

  UpDateTable; 
}
SET надо писать на последнем операторе из цепочки присвоений, т.к. каждый раз при вызове SET происходит перерисовка экрана.

Еще есть процедура SetModified. Установка флага модификации текущей записи текущей области ввода. С ее помощью можно достичь того же эффекта:

Код: Выделить всё

function FAIL() : void;
{
  blabla.field1 := 1;
  blabla.field2 := 4;
  ...
  blabla.field100 := 4;
 
  SetModified(true);

  UpDateTable; 
}

Re: Положить в очередь табличное событие?

Добавлено: 15 ноя 2011, 15:09
Robis
Laa, спасибо. Плюсанул.

Re: Положить в очередь табличное событие?

Добавлено: 15 ноя 2011, 16:17
Robis
Рановато плюсанул ))

Не работает, не вызываются события. :?

Re: Положить в очередь табличное событие?

Добавлено: 15 ноя 2011, 21:42
LaaLaa
еще важно какая таблица является текущей? curtable