1 (edited by vit007 2019-03-31 16:52:29)

Topic: Создание нестандартного счетчика

Вдохновился примером из поста http://myvisualdatabase.com/forum/viewt … p?id=1088,
но не смог автоматизировать подстановку. Поэтому откопал на форуме другой пример и немного дополнил:

var
   s, s0, s1: string;
   i ,c: integer;
begin
    if Action='NewRecord' then
    begin
     s1 := FormatDateTime('yy', now) + '-';
     s0 := '';
     s := frmEmployee.EditCounter1.Text;
     c := Length(s);
     c := 3-c; // 3 - qty of zero
     for i := 1 to c do s0 := s0 + '0';
     frmEmployee.edCounter.Text := s1+s0+s;
    end;
end;

Сейчас выдает значение нынешнего года и число: 19-001
Подскажите, как сбросить счетчик в Grid при смене года.

Нашел, это, но не понял, как использовать:

Form1.GridEmployees.ClearRows;
Form1.GridEmployees.Columns[0].Footer.Caption := '0';

Re: Создание нестандартного счетчика

http://myvisualdatabase.com/forum/viewtopic.php?id=1387

Re: Создание нестандартного счетчика

Спасибо, не понял зачем использовать вычисляемое поле, если в скрипте уже есть формат интерпретации... Поэтому использовал обычное текстовое для вывода:

var
    id : integer;
begin
    if Action='NewRecord' then
    begin
        frmEmployee.edYear.Text := FormatDateTime('yy', now);
        frmEmployee.edID.Text := SQLExecute ('SELECT IFNULL(MAX(ident), 0)+1 FROM person WHERE year='+FormatDateTime('yy', now) );
        id := StrToInt(frmEmployee.edID.Text);
        frmEmployee.edIdYear.Text:= frmEmployee.edYear.Text + '-' + Format('%.3d', [id]);
    end;
end;