两阶段检查的代码片断

//移动图形对象
procedure TMoveableShape.MoveShapes(DeltaX, DeltaY: Integer);
var
  I, Pass: Integer;
  TempControl: TControl;
begin
  if not Assigned(Parent) then
    Exit;

  // Do 2 passes through controls. The first one is to check that all
  // movements are valid   两次控制,第一次为检查移动是否有效,第二次为移动
  for Pass := 1 to 2 do
  begin
    for I := 0 to Parent.ControlCount - 1 do
    begin
      TempControl := Parent.Controls[I];
      if TempControl is TMoveableShape then
      begin
        if (Pass = 1) and
          (not TMoveableShape(TempControl).ValidMove(DeltaX, DeltaY)) then
          Exit
        else
        if (Pass = 2) and TMoveableShape(TempControl).Selected then
          TMoveableShape(TempControl).Move(DeltaX, DeltaY);
      end;
    end;
  end;
end;

阅读更多
文章标签: integer 图形
个人分类: 代码灵感
想对作者说点什么? 我来说一句

阶段单纯形算法(C++实现)

2010年06月05日 2KB 下载

阶段法和单纯形法

2014年04月10日 335KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭