Q&A

  • for문 수행중에 다른 이벤트 처리를 하고 싶습니다.
1) 버튼 1을 클릭하여 모래시계로 변경되게 했습니다.
  그럼 커서가 모래시계로 변경되는데여, 버튼2에 가져가면 디폴트커서로 다시 바뀌   네요. 그리고 버튼 1을 클릭하여 for문이 수행중에는 버튼2가 클릭되지 않게 하려고 합니다. 어떻게 해야 하는지 알려주세요...

2) 버튼 1을 클릭하여 for문이 수행중에는 시스템 버튼(X)닫기 가 동작 되지 않습니다.
  for문 수행중에도 X(닫기)를 누르면 윈도우가 닫히게 하고 싶습니다.

  좋은 하루 되세요
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
Cursor := crHourGlass;
for i:=0 to 100000 do
begin
   Edit1.Text := inttostr(i);
   Application.ProcessMessages;
end;
Cursor := crDefault;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Edit2.Text := inttostr(nCount);
inc(nCount);
end;
2  COMMENTS
  • Profile
    이중철 2005.11.11 22:33
    몇가지 한정적이지만...

    <!--CodeS-->
    ....
    ...
      private
        { Private declarations }
        bClose : boolean;
    .....

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      bClose := false;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    i : integer;
    begin
    Cursor := crHourGlass;
    Button2.Enabled := false;
    for i:=0 to 100000 do
    begin
       Edit1.Text := inttostr(i);
       Application.ProcessMessages;
       if bClose then
         exit;
    end;
    Button2.Enabled := True;
    Cursor := crDefault;
    end;


    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      bClose := True;
    end;

    <!--CodeE-->


    이정도만 해도 원하는 결과는 얻을수 있겠네요


  • Profile
    이중철 2005.11.11 22:50
       Application.Terminated
       이런게 있었죠 ^^


    몇가지 한정적이지만...

    <!--CodeS-->
    procedure TForm1.Button1Click(Sender: TObject);
    var
    i : integer;
    begin
    Cursor := crHourGlass;
    Button2.Enabled := false;
    for i:=0 to 100000 do
    begin
       Edit1.Text := inttostr(i);
       Application.ProcessMessages;
       if Application.Terminated then
         exit;
    end;
    Button2.Enabled := True;
    Cursor := crDefault;
    end;
    <!--CodeE-->


    이정도만 해도 원하는 결과는 얻을수 있겠네요 ^^ 잠시 까먹었네요