Q&A

  • 스트링그리드 선택
안녕하세요?

스트링그리드의 특정셀로 이동시켰을때 셀안에 내용을 자동으로 선택되게

할수 있을까요?

ex)

stringgrid1.row := 2;

stringgrid1.col := 2;

이렇게 코딩한후 포커스가 그곳으로 이동하면 자동으로 선택되길 바랍니다.

어떤메쏘드가 있을것 같은데 모르겠군요.



1  COMMENTS
  • Profile
    김영대 1999.07.23 04:36
    박형진 께서 말씀하시기를...

    > 안녕하세요?

    > 스트링그리드의 특정셀로 이동시켰을때 셀안에 내용을 자동으로 선택되게

    > 할수 있을까요?

    > ex)

    > stringgrid1.row := 2;

    > stringgrid1.col := 2;

    > 이렇게 코딩한후 포커스가 그곳으로 이동하면 자동으로 선택되길 바랍니다.

    > 어떤메쏘드가 있을것 같은데 모르겠군요.



    unit Unit1;



    interface



    uses

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

    StdCtrls, Grids;



    type

    TForm1 = class(TForm)

    StringGrid1: TStringGrid;

    Button1: TButton;

    Button2: TButton;

    procedure Button1Click(Sender: TObject);

    procedure FormActivate(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    procedure TForm1.FormActivate(Sender: TObject);

    var

    i, j: Integer;

    begin

    // Column의 title을 만든다

    for i := 1 to StringGrid1.ColCount - 1 do

    StringGrid1.Cells[i, 0] := Char(Ord('A')+i-1);



    // Row의 title을 만든다

    for i := 1 to StringGrid1.RowCount - 1 do

    StringGrid1.Cells[0, i] := IntToStr(i);;



    // 임의의 자료를 만들어서 각 cell에 입력합니다

    for i := 1 to StringGrid1.ColCount - 1 do

    for j := 1 to StringGrid1.RowCount - 1 do

    StringGrid1.Cells[i, j] := Format('%.0n', [i * j * 10000.0]);

    end;



    procedure TForm1.Button1Click(Sender: TObject);

    var

    SelectedRectangle: TGridRect;

    CoordTopLeft, CoordBottomRight: TGridCoord;

    begin

    // 선택하고자 하는 직사각형 영역을 설정한다

    CoordTopLeft.X:= 2; // 두번째 컬럼부터 선택

    CoordTopLeft.Y:= 1; // 첫번째 행부터 선택

    CoordBottomRight.X:= StringGrid1.RowCount - 2; // 마지막 컬럼의 전컬럼

    CoordBottomRight.Y:= StringGrid1.ColCount - 2; // 마지막 행의 전행



    // 직사각형 영역을 TGridRect 에 할당한다

    with StringGrid1 do

    begin

    SelectedRectangle.TopLeft := CoordTopLeft;

    SelectedRectangle.BottomRight := CoordBottomRight;

    end;

    StringGrid1.Selection:= SelectedRectangle;

    end;



    procedure TForm1.Button2Click(Sender: TObject);

    begin

    // 선택된 Cell들을 전부 선택취소 시킨다

    StringGrid1.Selection := TGridRect(Rect(-1, -1, -1, -1));

    end;



    end.



    // 참고로 제 홈페이지(http://myhome.shinbiro.com/~cozykyd/index.htm) 의

    // Delphi Tip 에서 "StringGrid" 로 검색해 보세요