Q&A

  • String Gird에 Row Insert는 어떻게하나요?
Alarm View를 수정하고 있는데요.

String Gird를 사용할 때 처음에 날짜가 바뀌면 전체쿼리를 하지만
중간에 알람이 새로 발생했을 때는 새로 발생한 알람만 쿼리해서
Grid의 가장 앞쪽에 Insert 하고자 합니다.

이럴때 새로운 알람을 쿼리하는 것은 문제가 없는데 기존의 Row를
남기고 앞에 새로운 알람 Row를 Insert 하는 방법을 모르겠네요.

이 때 사용할 수 있는 Method나 Property가 있나요?
있다면 알려주세요. 빠른 답변 부탁드려요.
2  COMMENTS
  • Profile
    조규춘 2007.08.16 21:45

    비슷한 코드가 있어서 그냥 남깁니다.
    (작자미상요)

    <!--CodeS-->
    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Grids, StdCtrls;

    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        StringGrid1: TStringGrid;
        Button3: TButton;
        Button4: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);


      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;
    type
      TMyGrid = class( TStringGrid ); // Dummy Class
    implementation

    {$R *.DFM}

    procedure InsertRowToStringGrid( Value : TStringGrid; Row : Integer );
    var
    Soo : TGridRect;
    begin
    Value.RowCount := Succ( Value.RowCount );
    TMyGrid( Value ).MoveRow( Pred( Value.RowCount ), Row );
    Soo.Left := 1;
    Soo.Top  := Row;
    Soo.Right := 1;
    Soo.Bottom := Row;
    Value.Selection := Soo;
    end;

    procedure InsertColToStringGrid( Value : TStringGrid; Col : Integer );
    var
    Soo : TGridRect;
    begin
    Value.ColCount := Succ( Value.ColCount );
    TMyGrid( Value ).MoveColumn( Pred( Value.ColCount ), Col );
    Soo.Left := 1;
    Soo.Top  := Col;
    Soo.Right := 1;
    Soo.Bottom := Col;
    Value.Selection := Soo;
    end;



    procedure TForm1.Button1Click(Sender: TObject);
    begin
      InsertRowToStringGrid( StringGrid1, 2 );

    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
      TMyGrid(stringgrid1 ).deleterow(stringgrid1.Row);
    end;

    procedure TForm1.Button3Click(Sender: TObject);
    begin
      InsertColToStringGrid( StringGrid1, 4 );
    end;

    procedure TForm1.Button4Click(Sender: TObject);
    begin
      TMyGrid(stringgrid1 ).DeleteColumn(stringgrid1.Col);
    end;

    end.

    <!--CodeE-->



  • Profile
    이영건 2007.08.17 02:09
    답변 감사합니다. ^^
    코드 확인하고, InsertRowToStringGrid 프로시져를 조금 변환해서 잘처리했습니다.
    좋은 하루 보내시기 바랍니다. 수고하세요.