delphi DBGrid 색상 변경 기술

5028 단어
1. 조건에 따라 특정한 칸의 색을 변경한다
 
[delphi] view plaincopy
procedure TMainFrm.First_DGDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  if DM.FirstListStatus.AsString='프로덕션'then begin     First_DG.Canvas.Font.Color:=clGreen
   end
  else begin
     First_DG.Canvas.Font.Color:=clRed;
  end;
  if DataCol = 4 then
     First_DG.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
 
2. 다양한 변화 방식
 
 view plaincopy
procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);
var i :integer;
begin
  if gdSelected in State then Exit;
//헤더의 글꼴과 배경색을 정의합니다:     for i :=0 to (Sender as TDBGrid).Columns.Count-1 do
    begin
      (Sender as TDBGrid).Columns[i].Title.Font.Name: = '송체';//글꼴      (Sender as TDBGrid).Columns[i].Title.Font.Size :=9;//글꼴 크기       (Sender as TDBGrid).Columns[i].Title.Font.Color :=$000000ff;//글꼴 색상(빨간색)      (Sender as TDBGrid).Columns[i].Title.Color :=$0000ff00;//배경색(녹색)     end;
//칸막이 격자 배경색 바꾸기:   if Query1.RecNo mod 2 = 0 then
    (Sender as TDBGrid).Canvas.Brush.Color: = clInfoBk//배경색 정의  else
    (Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223);//배경색 정의//메쉬 선의 색상 정의: DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
  with (Sender as TDBGrid).Canvas do//cell 테두리 그리기  begin
    Pen.Color := $00ff0000;//펜 색상 정의(파란색)    MoveTo(Rect.Left, Rect.Bottom);//화필 포지셔닝     LineTo(Rect.Right, Rect.Bottom);//파란색 가로줄 그리기    Pen.Color := $0000ff00;//붓 색상 정의(녹색)    MoveTo(Rect.Right, Rect.Top);//화필 포지셔닝     LineTo(Rect.Right, Rect.Bottom);//녹색 세로줄 그리기  end;
end;
 
 
 
3. 세로 횡단보도 효과: 격자의 홀수열과 짝수열을 각각 다른 색으로 표시하여 서로 인접한 데이터 열을 구별한다.
 
 view plaincopy
Case DataCol Mod 2 = 0 of
  True: DbGrid1.Canvas.Brush.Color:= clBlue;file://짝수 열용 파란색 False: DbGrid1.Canvas.Brush.Color:= clAqua;file://홀수열용 연두색End;
DbGrid1.Canvas.Pen.Mode:=pmMask;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
 
4. 현재 셀 효과를 빨간색으로 강조 표시하는 수직 횡단보도: 현재 선택한 필드를 강조 표시합니다.
 view plaincopy
Case DataCol Mod 2 = 0 of
True: DbGrid1.Canvas.Brush.Color:= clBlue;file://짝수 열용 파란색False: DbGrid1.Canvas.Brush.Color:= clAqua;file://홀수열용 연두색End;
If ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then
If Not DbGrid1.SelectedRows.CurrentRowSelected then
DbGrid1.Canvas.Brush.Color:=clRed;file://현재 선택한 칸에 빨간색 보이기 DbGrid1.Canvas.Pen.Mode:=pmMask;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
 
5. 데이터 격자에 현재 선택한 줄을 빨간색으로 강조 표시합니다.
 
 
 view plaincopy
DbGrid 컨트롤을 설정하는 Options 속성의 dgRowSelect 속성은 True이고 Color 속성은 clAqua(배경색)DbGrid의 DrawColumnCell 이벤트에 다음과 같은 코드를 작성합니다.
if ((State = [gdSelected]) or (State=[gdSelected gdFocused])) then
DbGrid1.Canvas.Brush.color:=clRed;file://현재 줄은 빨간색으로 표시되고 다른 줄은 배경의 연두색을 사용합니다
DbGrid1.Canvas.pen.mode:=pmmask;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
6. 줄의 뚜렷한 횡단보도 효과: 현재 줄을 돋보이게 하고 서로 다른 열(필드)을 구분한다.
 
 
 view plaincopy
if ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then
begin
Case DataCol Mod 2 = 0 of
True : DbGrid1.Canvas.Brush.color:=clRed;file://현재 선택한 줄의 짝수 열에 빨간색이 표시됩니다.
False: DbGrid1.Canvas.Brush.color:=clblue;file://현재 선택한 줄의 홀수 열에 파란색이 표시됩니다.
end;
DbGrid1.Canvas.pen.mode:=pmmask;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
7. 가로 횡단보도, 동시에 빨간색으로 현재 행효과를 돋보이게 한다.
 
 
 view plaincopy
Case Table1.RecNo mod 2 = 0 of file://데이터 세트의 레코드 번호에 따라 판단True : DbGrid1.Canvas.Brush.color:=clAqua;file://짝수 줄은 연두색으로 표시False: DbGrid1.Canvas.Brush.color:=clblue;file://홀수 줄은 파란색으로 표시end;
if ((State = [gdSelected]) or (State=[gdSelectedgdFocused]) then file://선택한 줄을 빨간색으로 표시 DbGrid1.Canvas.Brush.color:=clRed;
DbGrid1.Canvas.pen.mode:=pmMask;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
 
8. 쌍방향 횡단보도 효과: 즉 줄 사이를 서로 다른 색으로 구분하는 동시에 선택한 줄은 세로 횡단보도 효과로 서로 다른 열을 구분한다.
 
 
 view plaincopy
Case Table1.RecNo mod 2 = 0 of file://데이터 세트의 레코드 번호에 따라 판단True : DbGrid1.Canvas.Brush.color:=clAqua;file://짝수 줄은 연두색으로 표시False: DbGrid1.Canvas.Brush.color:= clblue;file://홀수 줄은 파란색으로 표시end;
If ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then
Case DataCol mod 2 = 0 of
True : DbGrid1.Canvas.Brush.color:=clRed;file://현재 선택한 줄의 짝수 열을 빨간색으로 False: DbGrid1.Canvas.Brush.color:= clGreen;file://현재 선택한 줄의 홀수 열을 녹색으로 표시합니다 end;
DbGrid1.Canvas.pen.mode:=pmMask;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);

좋은 웹페이지 즐겨찾기