일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 설치
- 입문
- SQL
- 데이터베이스
- 델파이
- Firebird
- vb
- 인스톨
- MySQL
- PostgreSQL
- MFC
- 파이어버드
- c#
- 시리얼 통신
- 소니
- 파라미터
- WIN32 SDK
- Visual Studio 2005
- VB.NET
- xml
- 문자열
- 예제
- winsock
- 기초
- Delphi
- SDK
- 셋업
- Visual Basic
- 초보
- dll
- Today
- Total
프로그래밍 노트
[델파이]StringGrid의 셀에 색칠하기 예제 본문
StringGrid의 셀에 색칠하기 예제
StringGrid의 1열은 녹색으로 표시하고
2행은 적색으로 표시하고 StringGrid의 1열과 2행 외의
다른 셀을 클릭하였을 때, 클릭한 셀을 청색으로 표시한다.
procedure TForm1.StringGrid1Click(Sender: TObject);
var
pntCurPos :TPoint;
iCol :integer;
iRow :integer;
begin
with StringGrid1 do
begin
pntCurPos := ScreenToClient(Mouse.CursorPos);
// 마우스가 위치가 어느 셀위에 있는지 정보얻기
MouseToCell(pntCurPos.x, pntCurPos.y, iCol, iRow);
// 셀 별 오브젝트가 설정되었는지 확인
// 오브젝트가 설정되어 있지 않을 경우 색을 오브젝트로 설정
if Assigned(Objects[iCol, iRow]) then
Objects[iCol, iRow] := nil
else
Objects[iCol, iRow] := TObject(clBlue);
end;
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with StringGrid1 do
begin
// 셀 별 어브젝트가 설정되었는지 확인
if Assigned(Objects[ACol, ARow]) then
begin
// 색을 셀에 채우기
Canvas.Brush.Color := TColor(Objects[ACol, ARow]);
Canvas.FillRect(Rect);
end;
// 1열 녹색 채우기
if ACol = 1 then
begin
Canvas.Brush.Color := TColor(clGreen);
Canvas.FillRect(Rect);
end;
// 2행 적색 채우기
if ARow = 2 then
begin
Canvas.Brush.Color := TColor(clRed);
Canvas.FillRect(Rect);
end;
// 글자 표시
Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, Cells[ACol, ARow]);
end;
end;