Q&A

  • listbox에서 아이템을 선택하는 법(1356번과 동일)
초보예요.. 잘 부탁드려요.. 꾸벅



함수인 ListBox1.Items.Delete(ListBox1.Itemindex)를 써서

마우스로 선택한 하나의 아이템을 delete하였습니다.

그러면 삭제한 라인 밑의 아이템들은 모두 한 라인식 위로

올라오게 되죠



그다음이 문젠데....

이제부터 저의 질문입니다..^^



삭제한 라인으로 올라온 바로 밑의 아이템도 계속 마우스로

선택한 것처럼 하는 방법을 알고 싶습니다.



ListBox1.setfocus로 해도 그 라인을 선택한 걸로 되지는 않습니다..



===> 해당 아이템을 선택할수 있는 방법을 알고 싶습니다.

(마우스로 선택하는 것과 동일)

제가 못찾는 건지...참 답답하네여



예) 처음에는 마우스로 선택한후 delete 버튼(위의 delete함수 이용하여

만든 것임)을 눌러 삭제한 후 계속 밑의 아이템들을 버튼만을 계속 눌러

삭제하고자 하는 것..

즉 마우스 선택과 버튼 클릭의 반복적인 행위가 아니라

두번째부터는 버튼만으로 삭제가 되도록 하는 것입니다









1  COMMENTS
  • Profile
    김영대 1999.10.02 02:30
    이준욱 wrote:

    > 초보예요.. 잘 부탁드려요.. 꾸벅

    >

    > 함수인 ListBox1.Items.Delete(ListBox1.Itemindex)를 써서

    > 마우스로 선택한 하나의 아이템을 delete하였습니다.

    > 그러면 삭제한 라인 밑의 아이템들은 모두 한 라인식 위로

    > 올라오게 되죠

    >

    > 그다음이 문젠데....

    > 이제부터 저의 질문입니다..^^

    >

    > 삭제한 라인으로 올라온 바로 밑의 아이템도 계속 마우스로

    > 선택한 것처럼 하는 방법을 알고 싶습니다.

    >

    > ListBox1.setfocus로 해도 그 라인을 선택한 걸로 되지는 않습니다..

    >

    > ===> 해당 아이템을 선택할수 있는 방법을 알고 싶습니다.

    > (마우스로 선택하는 것과 동일)

    > 제가 못찾는 건지...참 답답하네여

    >

    > 예) 처음에는 마우스로 선택한후 delete 버튼(위의 delete함수 이용하여

    > 만든 것임)을 눌러 삭제한 후 계속 밑의 아이템들을 버튼만을 계속 눌러

    > 삭제하고자 하는 것..

    > 즉 마우스 선택과 버튼 클릭의 반복적인 행위가 아니라

    > 두번째부터는 버튼만으로 삭제가 되도록 하는 것입니다



    // 하나의 item을 선택한 후 버튼을 계속 클릭해 보세요

    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls;



    type

    TForm1 = class(TForm)

    ListBox1: TListBox;

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    procedure TForm1.Button1Click(Sender: TObject);

    var

    SaveIndex: Integer;

    begin

    if ListBox1.ItemIndex < 0 then

    System.Exit;



    SaveIndex := -1;

    if ListBox1.ItemIndex = ListBox1.Items.Count - 1 then // 최하위이면

    SaveIndex := ListBox1.ItemIndex - 1

    else if ListBox1.ItemIndex = 0 then // 최상위이면

    SaveIndex := 0

    else

    SaveIndex := ListBox1.ItemIndex;



    ListBox1.Items.Delete(ListBox1.ItemIndex);



    if ListBox1.Items.Count > 0 then

    begin

    ListBox1.ItemIndex := SaveIndex;

    ListBox1.Selected[SaveIndex] := True; // 선택표시

    end;

    ListBox1.SetFocus;

    end;



    procedure TForm1.FormCreate(Sender: TObject);

    var

    i: Integer;

    begin

    for i := 1 to 10 do

    ListBox1.Items.Add(IntToStr(i)); // 예제 item

    end;



    end.