
18.11.2014, 02:13
|
 |
LMD-DML
|
|
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
|
|
Цитата:
Сообщение от Wandalin
...пользователем указывается дата поступления на работу (например 11.07.1999).В общем, нужно сделать так чтобы при написании даты в ячейку 5-го столбца, в ячейке 7-го столбца высчитывалась надбавка за стаж по нынешнюю дату, которая складывается с окладом из ячейки 6-го столбца и сумма выводилась в ячейку 8-го столбца. :/...
|
Код:
function clc(ds, vs: string; var n: string): string;
var
m, d, y, mc, dc, yc: Word;
i: integer;
b: variant;
begin
DecodeDate(StrToDate(ds), y, m, d);
DecodeDate(Date, yc, mc, dc); i:= 0; b:= 0;
if (y = yc) and (m = mc) and (d = dc) then
begin
n:= 'Нет';
Result:= vs;
end else
begin
i:= yc - y;
if (m > mc) then Dec(i) else if (m = mc) and (d > dc) then Dec(i);
end;
if i < 5 then
begin
n:= 'Нет';
Result:= vs;
Exit;
end;
if (i >= 5) and (i <= 10) then b:= 0.1;
if (i > 10) and (i <= 20) then b:= 0.15;
if (i > 20) then b:= 0.20;
n:= FloatToStr(StrToFloat(vs) * b);
Result:= FloatToStr(StrToFloat(vs) + (StrToFloat(vs) * b));
end;
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
var
s: string;
begin
with (Sender as TStringGrid) do
if (not EditorMode) and (ACol = 5) then
begin
Cells[8, aRow]:= clc(Cells[5, aRow], Cells[6, aRow], s);
Cells[7, aRow]:= s;
end;
end;
Всё это из базы drkb, скачайте её себе кликнув по подписи к этому посту, там много решений всяких и разных. И перевести флажок goEditing в true в StringGrid.Options тоже не забудьте пжлст
З.Ы. Наверное в денежной системе нужно было исчислять оклад, здесь он без "копеек", извиняйте
Последний раз редактировалось Alegun, 18.11.2014 в 07:13.
Причина: баг вычисления процентов
|