Показать сообщение отдельно
  #5  
Старый 22.05.2009, 00:21
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Вот, написала небольшой примерчик...

pas-файл:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    procedure AnyBitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

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;
end;

end.

dfm-файл:
Код:
object Form1: TForm1
  Left = 192
  Top = 114
  Width = 696
  Height = 480
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object BitBtn1: TBitBtn
    Left = 8
    Top = 384
    Width = 75
    Height = 25
    Caption = 'BitBtn1'
    TabOrder = 0
    OnClick = AnyBitBtn1Click
  end
  object BitBtn2: TBitBtn
    Left = 88
    Top = 384
    Width = 75
    Height = 25
    Caption = 'BitBtn2'
    TabOrder = 1
    OnClick = AnyBitBtn1Click
  end
  object BitBtn3: TBitBtn
    Left = 168
    Top = 384
    Width = 75
    Height = 25
    Caption = 'BitBtn3'
    TabOrder = 2
    OnClick = AnyBitBtn1Click
  end
  object BitBtn4: TBitBtn
    Left = 248
    Top = 384
    Width = 75
    Height = 25
    Caption = 'BitBtn4'
    TabOrder = 3
    OnClick = AnyBitBtn1Click
  end
  object BitBtn5: TBitBtn
    Left = 328
    Top = 384
    Width = 75
    Height = 25
    Caption = 'BitBtn5'
    TabOrder = 4
    OnClick = AnyBitBtn1Click
  end
end
Ответить с цитированием