Я же вам показывала (в посте #5), как сделать, чтобы код не дублировался. Назначьте
всем пяти кнопкам один и тот же обработчик события OnClick, в который вставьте эти действия, касательно перемещения кнопок. Ну, и с фильтром можно несложно разобраться, анализируя с помощью параметра Sender, какая именно кнопка вызвала событие. Зайдите в Object Inspector, найдите в свойствах ваших кнопок (BitBtn) свойство Tag. Первой кнопке задайте Tag=1, второй кнопке — Tag=2, третьей — Tag=3, четвертой — Tag=4, пятой — Tag=5. Теперь в обработчике события OnClick можно по этому свойству опознать, какая из кнопок вызвала событие, и соответствующим образом изменить фильтр.
Код:
procedure TForm1.AnyBitBtn1Click(Sender: TObject);
const
StepCount = 200; // число шажков от начального к конечному положению
var
i: Integer;
Btn1LT0, Btn2LT0, Btn3LT0, Btn4LT0, Btn5LT0: TPoint;
Btn1LT, Btn2LT, Btn3LT, Btn4LT, Btn5LT: TPoint;
begin
// находим начальные положения кнопок
Btn1LT0.X := BitBtn1.Left; Btn1LT0.Y := BitBtn1.Top;
Btn2LT0.X := BitBtn2.Left; Btn2LT0.Y := BitBtn2.Top;
Btn3LT0.X := BitBtn3.Left; Btn3LT0.Y := BitBtn3.Top;
Btn4LT0.X := BitBtn4.Left; Btn4LT0.Y := BitBtn4.Top;
Btn5LT0.X := BitBtn5.Left; Btn5LT0.Y := BitBtn5.Top;
// задаём конечные положения кнопок
Btn1LT.X := 400; Btn1LT.Y := 80;
Btn2LT.X := 400; Btn2LT.Y := 112;
Btn3LT.X := 400; Btn3LT.Y := 144;
Btn4LT.X := 400; Btn4LT.Y := 176;
Btn5LT.X := 400; Btn5LT.Y := 208;
// поехали...
for i := 1 to StepCount do
begin
BitBtn1.Left := Round(Btn1LT0.X + i * (Btn1LT.X - Btn1LT0.X) / StepCount);
BitBtn1.Top := Round(Btn1LT0.Y + i * (Btn1LT.Y - Btn1LT0.Y) / StepCount);
BitBtn2.Left := Round(Btn2LT0.X + i * (Btn2LT.X - Btn2LT0.X) / StepCount);
BitBtn2.Top := Round(Btn2LT0.Y + i * (Btn2LT.Y - Btn2LT0.Y) / StepCount);
BitBtn3.Left := Round(Btn3LT0.X + i * (Btn3LT.X - Btn3LT0.X) / StepCount);
BitBtn3.Top := Round(Btn3LT0.Y + i * (Btn3LT.Y - Btn3LT0.Y) / StepCount);
BitBtn4.Left := Round(Btn4LT0.X + i * (Btn4LT.X - Btn4LT0.X) / StepCount);
BitBtn4.Top := Round(Btn4LT0.Y + i * (Btn4LT.Y - Btn4LT0.Y) / StepCount);
BitBtn5.Left := Round(Btn5LT0.X + i * (Btn5LT.X - Btn5LT0.X) / StepCount);
BitBtn5.Top := Round(Btn5LT0.Y + i * (Btn5LT.Y - Btn5LT0.Y) / StepCount);
end;
Form2.Label1.Caption := '';
Form2.Panel1.Caption := '';
GroupBox7.Visible := True;
GroupBox8.Visible := True;
case (Sender as TBitBtn).Tag of
1: Table1.Filter := 'Klas=''' + 'film''';
2: Table1.Filter := 'Klas=''' + 'myz''';
3: Table1.Filter := 'Klas=''' + 'game''';
4: Table1.Filter := 'Klas=''' + 'prog''';
else Table1.Filter := 'Klas=''' + 'knigi''';
end;
Table1.Filtered := True;
end;