Q&A

  • for문의 강제 Controll관련
for문의 반복 수행중..사용자가 임의(버튼이나 keyboard등의 click)로 for문을
제어할수 있는 방법이 있는지요?
제가 test한 결과 for문 수행중에는 외부의 어떤 이벤트도 영향을 주지 못하는
것 같더군요!(for문이 끝난후에야 반응.. __")
예를 들어 어떤 프린팅 작업을 반복적으로 100회에서 1000회 가량 작업時..
사용자가 임의로 일시정지..취소등의 작업이 가능한지요..
procedure form1.button1.clicked
var i,k
begin
k := 1000;
  for i = 1 to k do
     print작업;
end;

procedure form1.button2.clicked
begin
     print작업취소;  
end;

procedure form1.button3.clicked
begin
     print작업일시정지;  
end;
위와 같이 button1을 click했을때 수행되는 for문을 외부(버튼2나 버튼3)에서 사용자 임의 controll이
가능한가요?
다른 언어(파워빌드)에서는 YIELD() 라는 함수가 있어 loop수행중에도 외부 이벤트의 처리가 가능하던데
델파이에서는 어떻게 처리해야 하는지 ..도움좀 주시기 바랍니다.
2  COMMENTS
  • Profile
    KDDG_ZZOM 2003.02.19 20:15
    포문안에 Application.ProcessMessages;
    걸 써보세요...

    var
      Form1: TForm1;
      Check : Boolean;
    implementation

    {$R *.DFM}

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i,k : Integer;
    begin
      k := 5000;
      Check := False;

      for i := 1 to k do
      begin
        Application.ProcessMessages;
        if Check then
          Break;
        Memo1.Lines.Add(IntToStr(I));
      end;
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
      Check := True;
    end;


  • Profile
    이용수 2003.02.19 20:34
    .