::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-04 21:00:18, Hit : 4605, Vote : 1047
 StringGrid 의 각 Cell의 정렬

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormActivate(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
      Rect: TRect; State: TGridDrawState);
  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에 입력합니다
  // format함수의 %n 은 금액(3자리수마다 콤마문자)표시 서식입니다
  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.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
  Rect: TRect; State: TGridDrawState);
var
  Save_OldAlign: word;
begin
  if (Row = 0) or (Col = 0) then
  begin // Column과 Row의 각 title은 굵은 폰트로
    StringGrid1.Canvas.Font.Style := StringGrid1.Canvas.Font.Style + [fsBold];
    StringGrid1.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, StringGrid1.Cells[Col, Row]);
  end
  else // 금액은 오른쪽 정렬
  begin
    // 새롭게 정렬(TA_RIGHT)하고 이전 정렬상태를 저장(Save_OldAlign)
    Save_OldAlign := SetTextAlign(StringGrid1.Canvas.Handle, TA_RIGHT);
    StringGrid1.Canvas.TextRect(Rect, Rect.Right-2, Rect.Top+2, StringGrid1.Cells[Col, Row]);
    // 이전 정렬상태를 복구(타이틀이나 기타 다른 Cell은 왼쪽 정렬일 수 있으므로)}
    SetTextAlign(StringGrid1.Canvas.Handle, Save_OldAlign);
  end;
end;

end.





91   [일반/컴포넌트] ListBox의 item을 mouse로 이동시키기  김영대 2003/03/04 4052 1165
90   [일반/컴포넌트] 비트연산 (bit-wise manipulation)  김영대 2003/03/04 5377 1626
89   [일반/컴포넌트] 6485 -> 64850000 or 00006485  김영대 2003/03/04 3865 1090
88   [일반/컴포넌트] ListBox의 내용을 파일로 저장하고 불러오기  김영대 2003/03/04 4178 1165
87   [윈도우즈 API] 윈도우즈 탐색기의 파일찾기 화면 띄우기  김영대 2003/03/04 4705 1395
86   [시스템] PrintScreen 키가 눌렸는지 검사하기  김영대 2003/03/04 4268 1329
85   [일반/컴포넌트] DateTimePicker 의 표시형식(format) 바꾸기  김영대 2003/03/04 6190 1326
84   [윈도우즈 API] 작업표시줄이 자동 숨김인지 검사  김영대 2003/03/04 5014 1326
83   [윈도우즈 API] 클립보드의 내용을 파일로 저장하기  김영대 2003/03/04 4427 1294
82   [일반/컴포넌트] 문자열의 word 갯수 세기  김영대 2003/03/04 4168 1123
81   [일반/컴포넌트] 문자열 찾아서(Search) 바꾸기(Replace)  김영대 2003/03/04 4028 1204
80   [일반/컴포넌트] LZExpand를 사용한 파일 복사하기  김영대 2003/03/04 3884 1165
79   [시스템] 프로그램에서 화면모드 변경하기  김영대 2003/03/04 4656 1277
78   [윈도우즈 API] 시스템 메뉴에 menu item 추가하기  김영대 2003/03/04 4139 1240
77   [윈도우즈 API] 윈도우즈 재부팅하고 프로그램 실행하기  김영대 2003/03/04 4228 1351
76   [일반/컴포넌트] TStatusBar 의 각 Panel의 폰트 바꾸기  김영대 2003/03/04 5546 1834
75   [일반/컴포넌트] StringGrid의 Column의 크기(width) 자동 조절  김영대 2003/03/04 5919 1150
74   [일반/컴포넌트] ComboBox 가 dropped 상태인지 검사  김영대 2003/03/04 3884 1157
73   [일반/컴포넌트] Edit의 임의의 위치에 커서(캐럿) 보내기  김영대 2003/03/04 4133 1186
72   [윈도우즈 API] 폼의 테두리(frame) 그리기  김영대 2003/03/04 4792 1220
71   [윈도우즈 API] Hook 을 사용한 커서(캐럿)모양 바꾸기  김영대 2003/03/04 4411 1174
70   [일반/컴포넌트] ComboBox 가 drop down되었을때의 실제 크기는 얼마 ?  김영대 2003/03/04 4175 1194
69   [윈도우즈 API] Memo 에 임의의 tab stops 설정하기  김영대 2003/03/04 3951 1261
68   [일반/컴포넌트] 주어진 문자열에 잘못된 숫자값이 들어있는지 검사  김영대 2003/03/04 4039 1162
67   [시스템] 내 PC에 사운드카드가 있는지 검사  김영대 2003/03/04 6595 1901
66   [윈도우즈 API] 특정 folder 가 open된 탐색기 실행하기  김영대 2003/03/04 4873 1463
65   [윈도우즈 API] Windows Desktop에 직접 그림을 그리고(draw) 지우기(refresh)  김영대 2003/03/04 4577 1289
64   [시스템] DOS의 환경변수를 Memo로 읽어오기  김영대 2003/03/04 4251 1250
63   [일반/컴포넌트] 너무 많은 메뉴항목 (메뉴 분리하기)  김영대 2003/03/04 3841 1117
62   [시스템] PC의 시스템 시간/날짜 바꾸기  김영대 2003/03/04 4335 1127
61   [윈도우즈 API] 폼을 최상위로 설정 및 해제  김영대 2003/03/04 5750 2052
60   [시스템] Printer Margins 얻기  김영대 2003/03/04 4016 1231
59   [시스템] 여러 프로세스간에 자료 공유하기  김영대 2003/03/04 4861 1253
58   [시스템] 현재 내 PC의 비디오 정보  김영대 2003/03/04 4401 1169
57   [윈도우즈 API] 윈도우즈의 임시디렉토리명 알아내기  김영대 2003/03/04 4493 1214
56   [윈도우즈 API] 임시로 만든 파일 꼭 지우기  김영대 2003/03/04 6128 1737
55   [데이터베이스] 필드의 데이터 타입을 알아내기  김영대 2003/03/04 4402 1173
54   [일반/컴포넌트] 진법변환 (16->10, 10->2, 2->16. 10->8, 2->8)  김영대 2003/03/04 6227 1225
53   [일반/컴포넌트] 델파이 통합개발환경(IDE) 에 관한 몇가지 Tip  김영대 2003/03/04 5346 1431
  [일반/컴포넌트] StringGrid 의 각 Cell의 정렬  김영대 2003/03/04 4605 1047

[이전 10개] [1]..[21][22] 23 [24][25]
 

Copyright 1999-2019 Zeroboard / skin by zero