implementaion
{$R *.DFM}
var
anm : integer;
procedure TForm1.Timer1Time(Sender: TObject);
begin
anm := anm+1;
if anm = 5 then anm := 1;
if anm = 1 then image1.Picture.loadfromfile('image1.bmp');
if anm = 2 then image1.Picture.loadfromfile('image2.bmp');
if anm = 3 then image1.Picture.loadfromfile('image3.bmp');
if anm = 4 then image1.Picture.loadfromfile('image4.bmp');
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Timer1.Enabled := True;
end;
procedure TForm1.BitBtn2Click(Sender: Tobject);
begin
Timer2.Enabled := False;
end;
이런 프로그램을 짰습니다... 그런데 이중에서
anm : integer; 이라는 변수를 왜 procedure위에 선언했나요?
그리고
anm := anm+1; 은
if anm = 5 then anm := 1;
if anm = 1 then image1.Picture.loadfromfile('image1.bmp');
if anm = 2 then image1.Picture.loadfromfile('image2.bmp');
if anm = 3 then image1.Picture.loadfromfile('image3.bmp');
if anm = 4 then image1.Picture.loadfromfile('image4.bmp');
이 아래 안쓰고 왜 위에 쓴거지요?
학교에서 수업을 듣는데 1학기에 이어서 한다고 하더군요....
그래서 전 잘모르거든요... 알려주시면 감사하겠습니다...
간단히 말해서....
올려주신 문장처럼 기술하면... 전역변수구요.
procedure 과 begin 사이에 기술하면 지역변수가 됩니다.
차이점은 지역변수는 해당 프로시저에서만 사용이 가능하구요.
전역변수는 현재 unit 안에서 모두 사용이 가능하다는거죠.
(음.. 쉽게 말해서 아래처럼 기술하면...
procedure TForm1.BitBtn1Click(Sender: TObject);
procedure TForm1.BitBtn2Click(Sender: TObject);
procedure TForm1.Timer1Time(Sender: TObject);
프로시저에서 모두 anm 변수를 사용할수 있구요.
만약 그렇지 않으면... 해당 procedure 내에서만 사용이 가능합니다.
)
그리고... anm:=anm+1; 이라고 위에서 기술한것은.. 뭘 구현하느냐에 따라
다른데... 아래소스에서는.. anm의 값의 범위는 1-4까지여야하는것 같은데요.
아마도 Timer 컴포넌트의 Interval 이벤트에 설정된 시간이 경과될때마다 1씩 증가시켜서 그림을 바꾸는 프로그램 같네요. 그런데..만약 밑에다가 anm:=anm+1 을 기록하게 되면 처음 이벤트가 발생할때.. anm=0 (다른곳에서 특별히 코딩을 하지 않았다고 가정하구요.) 이 되므로 밑에 if문의 조건에 전혀 걸리지 않게되죠. 즉 image에 어떤 이미지파일도 연결하지 않게되니까..
(위에서 말한대로 1-4까지에 걸려야되는데...안되니까..) 앞서서 기입한것 같습니다. 잘 모르신다고 해서 최대한 자세히 설명을 했는데..이해가 되셨느지 모르겠네요. 그럼 열심히 공부하세요.