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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Robis
Посетитель
Сообщения: 37
Зарегистрирован: 13 дек 2010, 16:55

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

Сообщение Robis »

Реально? ;-)

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

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


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

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

Понадобилось при докомпиляции...
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

Сообщение Алексей »

putCommand(cmUpdateTable); не покатит?
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

Сообщение Алексей »

а ещё проще логику вынести в функцию, и когда надо - вызывать функцию.
и её же в cmupdaterecord
Robis
Посетитель
Сообщения: 37
Зарегистрирован: 13 дек 2010, 16:55

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

Сообщение Robis »

Алексей писал(а):putCommand(cmUpdateTable); не покатит?
Не покатит.
Алексей писал(а):а ещё проще логику вынести в функцию, и когда надо - вызывать функцию.
и её же в cmupdaterecord
Дублирование кода + если потом разработчик изменит что-то в cmUpdateRecord мне надо будет в своём коде это править. Как раз именно от этого я и хочу уйти.
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

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

Сообщение n0where »

ДОкомпиляцией. Там же можно вызвать свою логику до, после, или вместо cmUpdateTable.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
oiko
Местный житель
Сообщения: 418
Зарегистрирован: 29 мар 2005, 17:49

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

Сообщение oiko »

Функция UpDateTable
Назначение
Если таблица была модифицирована, то вызовет соответственно cmUpDateRecord или cmInsertRecord.
LaaLaa

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

Сообщение 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; 
}
Robis
Посетитель
Сообщения: 37
Зарегистрирован: 13 дек 2010, 16:55

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

Сообщение Robis »

Laa, спасибо. Плюсанул.
Robis
Посетитель
Сообщения: 37
Зарегистрирован: 13 дек 2010, 16:55

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

Сообщение Robis »

Рановато плюсанул ))

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

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

Сообщение LaaLaa »

еще важно какая таблица является текущей? curtable
Ответить