Q&A

  • 스트링그리드 셀의 오른쪽에 데이터를 정렬하려면?
스트링그리드에 수량이랑.. 비용이랑 여러것이 나오는데.. 모두 셀의 왼쪽에

붙어서 나오기 때문에 보기가 힘들어요..

이 데이타들을 셀의 오른쪽으로 정렬시키는 방법 좀 없을까요..

초보라서 워낙에 제주가 없어서요.. 꼭 좀 부탁드립니다.

제가 현재 만든 소스를 올려드릴께요.. 여기에 어떻게 추가를 하면 될지 알려주세요..



Sgrid.Cells[1,4]:=FormatFloat('#,###.00000',fieldbyname('gravity').AsFloat);

Sgrid.Cells[1,5]:=FormatFloat('#,###.00000',fieldbyname('limitqty').AsFloat);

Sgrid.Cells[2,6]:=FormatFloat('#,###',fieldbyname('softcost').AsFloat); Sgrid.Cells[2,7]:=FormatFloat('#,###',fieldbynam('hardcost').AsFloat);



참.. 이 포맷형식이 맞는지도 좀 알려주세요.. 'Format데이타형' 과 맨뒤의 AS데이타형'

이 일치를 해야하는 건가요..

1  COMMENTS
  • Profile
    김영대 1999.10.28 20:18
    unit Unit1;



    interface



    uses

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

    Grids, StdCtrls;



    type

    TForm1 = class(TForm)

    StringGrid1: TStringGrid;

    RB_Left: TRadioButton;

    RB_Center: TRadioButton;

    RB_Right: TRadioButton;

    procedure StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;

    Rect: TRect; State: TGridDrawState);

    procedure FormActivate(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    procedure AllAlignClick(Sender: TObject);

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    // StringGrid의 DefaultDrawing 프로퍼티는 True 로 하세요

    procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;

    Rect: TRect; State: TGridDrawState);

    var

    TW: integer;

    begin

    with StringGrid1.Canvas do

    begin

    FillRect(Rect);



    TW := TextWidth(StringGrid1.Cells[Col, Row]);

    if RB_Right.Checked then // 오른쪽

    TextOut(Rect.Right - TW - 2, Rect.Top+2, StringGrid1.Cells[Col,Row])

    else if RB_Center.Checked then // 중앙

    TextOut((Rect.Left + Rect.Right - TW) div 2, Rect.Top+2, StringGrid1.Cells[Col,Row])

    else // 왼쪽

    TextOut(Rect.Left+2, Rect.Top+2, StringGrid1.Cells[Col,Row])

    end;

    end;



    procedure TForm1.AllAlignClick(Sender: TObject);

    begin

    // 정렬이 변경되어 다시 그린다

    StringGrid1.RePaint;

    end;



    procedure TForm1.FormActivate(Sender: TObject);

    begin

    // 예제 자료

    StringGrid1.Cells[1,1] := '1';

    StringGrid1.Cells[1,2] := '2';

    StringGrid1.Cells[1,3] := '3';



    // 세개의 RadioButton 에 click 이벤트 지정

    RB_Left.OnClick := AllAlignClick;

    RB_Center.OnClick := AllAlignClick;

    RB_Right.OnClick := AllAlignClick;

    end;



    end.