Q&A

  • 컴파일 후 실행한담에 타이머의 if문에 오류발생했습니다
컴파일 및 실행한 후에 리스트뷰에 글을 추가하고나서
타이머를 이용해서 선택라인을 한칸씩 내려가는건데
선택라인이 리스트뷰의 마지막라인으로 이동했을때 오류납니다 ㅜㅡ

뭐가 잘못된건가요?

허접초보소스 올릴께요 ㅠ.ㅠ


unit Unit1;

interface

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

type
TForm1 = class(TForm)
   ListView1: TListView;
   BitBtn1: TBitBtn;
   Edit1: TEdit;
   Edit2: TEdit;
   BitBtn2: TBitBtn;
   Timer1: TTimer;
   procedure BitBtn1Click(Sender: TObject);
   procedure BitBtn2Click(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
private
   { Private declarations }
public
   { Public declarations }
end;

var
Form1: TForm1;
ListItem: TListItem;
i: integer;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ListItem := ListView1.Items.Add;
ListItem.Caption := Edit1.Text;
ListView1.ItemIndex := ListView1.Items.Count - 1;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
ListView1.ItemIndex := ListView1.Items.Count - ListView1.Items.Count;
i := -1;
Edit2.Text := ListItem.Caption;
Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if i < ListView1.Items.Count then begin
   i := i + 1;
   ListView1.ItemIndex := i;
end;
end;

end.
2  COMMENTS
  • Profile
    ^ㅡ^ 2004.04.28 01:59


    맞을지 모르겠네요
    제 생각엔
    end.
    에서요 ListView1.Items.Count  -1 을 해 줘야 할꺼 같은데요
    보통 카운트는 10이지만 그 라인은 9가 되잖아요
    카운트를 라인을 1부터 시작하고
    보통 인텍스나 라인은 0부터 시작하잖아요
    맞는지 모르
  • Profile
    쌩초보자 2004.04.28 05:28
    정말 감사감사합니다 ^^;


    정말 감사감사합니다 ^^;

    델마당에다가도 질문했었는데

    비슷한 답변이더라구요 ^^; 다시한번 감사합니다 ^^;

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    if i < ListView1.Items.Count - 1 then begin
      i := i + 1;
      ListView1.ItemIndex := i;
    end;
    end;

    또는

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    if (i + 1) < ListView1.Items.Count then begin
      i := i + 1;
      ListView1.ItemIndex := i;
    end;
    end;

    같더라구요 ^^; 그럼 즐되세요 ^^;