Q&A

  • dbgird에서 특정row 색넣고 싶습니다..
dbgrid에서 첫번째 row의 글자 색 또는 셀의 색을 넣고 싶습니다.

어떻게 해야하나요~?

고수님들의 조언 부탁드립니다..

4  COMMENTS
  • Profile
    강인규 2000.03.14 00:46
    조금만 찾아보심 답을 찾을 수 있었을텐데....

    김영대님의 답변을 올려드립니다.



    DBGrid1DrawColumnCell이벤트에 아래와 같이 코딩하심 됩니다.



    두가지 조건을 주는 이유는 셀렉트되었을때 처리를 위해서입니다.



    소스는 쉬워서 함 해보시면 알겁니다.



    begin

    with TDBGrid(Sender).Canvas do begin

    if Column.FieldName = '필드명' then begin

    Brush.Color := clYellow;

    Font.Color := clBlack;

    end

    else begin

    Brush.Color := clWindow;

    Font.Color := clWindowText;

    end;

    if (gdFocused in State) or (gdSelected in State) then begin

    Brush.Color := clHighlight;

    Font.Color := clHighlightText;

    end;

    FillRect(Rect);

    TextOut(Rect.Left+2,Rect.Top+2,Column.Field.AsString);

    Brush.Style := bsSolid;

    Brush.Color := clWindow;

    end;

    end;



    김지현 wrote:

    > dbgrid에서 첫번째 row의 글자 색 또는 셀의 색을 넣고 싶습니다.

    > 어떻게 해야하나요~?

    > 고수님들의 조언 부탁드립니다..

  • Profile
    김지현 2000.03.14 01:58
    강인규님.. 답변감사합니다..

    제가 초보라서요..

    근데.. 저는 특정 열(column)이 아닌 특정 행(row)의 폰트색을 바꾸고 싶고든요.. ^^

    나름대로 찾아본다고 하긴했는데.. 눈에 띄는것이 없네요~

    고수님들.. 다시 한번 답변주시면 감사하겠습니다.



  • Profile
    강인규 2000.03.14 02:04
    row와 column의 개념을 제가 이해하지 못하는 건가요?



    프로그램을 짜보시면 될텐데, 헐...



    조건에 따라 색을 달리하는 (가로로)프로그램 같이 올리니 입맛에 맞게 골라쓰세요. 쩝.



    똑같은 이벤트에 코딩하세요.



    with TDBGrid(Sender).Canvas do begin

    if table1필드명.Value > 원하는 조건 then begin

    Brush.Color := clred;

    Font.Color := clBlack;

    end

    else begin

    Brush.Color := $00D6D6CD;

    Font.Color := clWindowText;

    end;

    if (gdFocused in State) or (gdSelected in State) then begin

    if table1필드명.Value > 원하는 조건 then begin

    Brush.Color := clPurple;

    Font.Color := clHighlightText;

    end

    else begin

    Brush.Color := $00A00000;

    Font.Color := clHighlightText;

    end;

    end;

    FillRect(Rect);

    TextOut(Rect.Left+1,Rect.Top+1,Column.Field.AsString);

    Brush.Style := bsSolid;

    Brush.Color := clWindow;

    end;

    end;





    김지현 wrote:

    > 강인규님.. 답변감사합니다..

    > 제가 초보라서요..

    > 근데.. 저는 특정 열(column)이 아닌 특정 행(row)의 폰트색을 바꾸고 싶고든요.. ^^

    > 나름대로 찾아본다고 하긴했는데.. 눈에 띄는것이 없네요~

    > 고수님들.. 다시 한번 답변주시면 감사하겠습니다.

    >

  • Profile
    조군희 2000.03.17 19:30
    아래와 같이 코딩하시면 쉽게 작업하실수 있습니다..

    Cell정렬방식도 함께 해결할수 있고요...



    unit Unit1;



    interface



    uses

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

    Db, DBTables, ExtCtrls, Grids, DBGrids;



    type

    TForm1 = class(TForm)

    DBGrid1: TDBGrid;

    Panel1: TPanel;

    DataSource1: TDataSource;

    Table1: TTable;

    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;

    DataCol: Integer; Column: TColumn; State: TGridDrawState);

    private

    { Private declarations }

    public

    { Public declarations }

    procedure DrawField(const Value : String;

    const Rect : TRect;

    vCanvas : TCanvas;

    vFont: TFont;

    vAlignment: TAlignment;

    FontStyle : TFontStyles;

    FontColor : TColor;

    BGColor : TColor);

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}





    {이 부분의 함수를 추가 시키시고요...}

    procedure TForm1.DrawField(const Value : String;

    const Rect : TRect;

    vCanvas : TCanvas;

    vFont: TFont;

    vAlignment: TAlignment;

    FontStyle : TFontStyles;

    FontColor : TColor;

    BGColor : TColor);

    var

    I : Integer;

    begin

    I := 0;



    //First, fill in the background color of the cell

    vCanvas.Brush.Color := BGColor;

    vCanvas.FillRect(Rect);

    //SetBkMode ensures that the background is transparent

    SetBkMode(Canvas.Handle, TRANSPARENT);



    //Set the passed font properties

    vCanvas.Font := vFont;

    vCanvas.Font.Color := FontColor;

    vCanvas.Font.Style := vCanvas.Font.Style + FontStyle;



    //Set Text Alignment

    case vAlignment of

    taRightJustify :

    begin

    SetTextAlign(vCanvas.Handle, TA_RIGHT);

    I := Rect.Right - 2;

    end;



    taLeftJustify :

    begin

    SetTextAlign(vCanvas.Handle, TA_LEFT);

    I := Rect.Left + 2;

    end;



    taCenter :

    begin

    SetTextAlign(vCanvas.Handle, TA_CENTER);

    I := (Rect.Right + Rect.Left) DIV 2;

    end;

    end; { case }



    //Draw the text

    vCanvas.TextRect(Rect, I, Rect.Top + 2, Value);

    SetTextAlign(vCanvas.Handle, TA_LEFT);

    end;





    // DBGrid1DrawColumnCell 의 이벤트에서 코딩하시구요..



    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;

    DataCol: Integer; Column: TColumn; State: TGridDrawState);

    begin

    with Sender as TDBGrid, DataSource.DataSet do

    // 아래와 같이 조건식을 넣으시면 됨니다.

    if (FieldByName('Salary').AsFloat < 30000) then

    DrawField(Column.Field.DisplayText, Rect, Canvas,

    Column.Font, Column.Alignment, [fsBold],

    clYellow, clRed);

    // clYellow는 글자 색상

    // clRed는 바탕색상



    end;



    end.

    • 백록화
    • 2000.03.14 07:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 화랑
      2000.03.14 18:32
      저기 위의 루틴을 보면 틀린것은 없는데.. 음.. 뭐~ 혹시 선언부에서 잘못한건 아닌가요? 그리고 ...
    • 백록화
      2000.03.15 03:28
      yo~ ^^;; 에고...화랑님..감사...헤헤!! 그게 틀렸네요...핫핫.. (으~ 열라땀나는군요...크크~) Clo...
    • 정호원
    • 2000.03.14 06:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.03.14 23:20
      안녕하세요 하얀까마귀 입니다. 질문이 너무 포괄적이네요.... 쩝... 지금 말씀하신건 일반적인 SI프...
    • 박영만
    • 2000.03.14 06:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 코스모스
      2000.03.14 07:30
      저와 비슷한 경험을 하신것 같군요. 일반적인(Paradox 등등) MDB는 join 및 기타 명령어가 좀 달라요. 정...
    • 이빈
    • 2000.03.14 05:51
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이빈
      2000.03.14 19:40
      최용일 wrote: > 무슨 말씀이신지... 제가 한델 자료실의 SkinForm을 사용해 보았는데 아주 > 잘 작동하...
    • 이빈
      2000.03.15 02:19
      최용일님 친절한 답변 진심으로 감사합니다. 모르는게 많아서 자주 질문 하겠습니다. 그럼 행복하세요....
    • 윤진석
    • 2000.03.14 05:32
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 강인규
      2000.03.14 07:00
      각각의 단위 프로젝트를 따로 컴파일 하셨다면... 메인폼(MDIForm)만 하나 만들고 단위모듈을 불러와서...
    • 김승용
    • 2000.03.14 04:31
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.14 05:05
      http://web.tiscalinet.it/encomps/ 이곳에서 ImageEn라이브러리를 구하시면 됩니다. JPEG, TIFF, PNG, ...
    • 하얀까마귀
      2000.07.27 20:53
      안녕하세요 하얀까마귀 입니다. jpg, bmp, ico, emf, wmf를 기본적으로 지원합니다. 4.0은 안써봐서 ...
    • hee
    • 2000.03.14 03:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.14 03:51
      TStringGrid.Selection은 선택영역 사각형을 표시하는 TGridCoord 혹은 TGridRect 타입의 좌표영역이 저...
    • 최재원
    • 2000.03.14 03:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 보는이
      2000.03.14 04:11
      최재원 wrote: > 붙여 실행을 해보았는데요, > > 다운되거나 하는 것은 아니고 도움말을 보여 줄때 > ...
    • 김두현
      2000.03.14 06:02
      문영봉 wrote: > 안녕하세요? > nt4.0의 ms-sql서버로로 win98에서 odbc로 연결시 > 아래와 같은 에...
    • 문영봉
      2000.03.14 18:22
      김두현 wrote: > 문영봉 wrote: > > 안녕하세요? > > nt4.0의 ms-sql서버로로 win98에서 odbc로 연결...
    • 문영봉
      2000.03.15 03:07
      문영봉 wrote: > 김두현 wrote: > > 문영봉 wrote: > > > 안녕하세요? > > > nt4.0의 ms-sql서버로로...
    • 최용일
      2000.03.14 03:04
      Tools메뉴의 Editor Options..라는 메뉴를 클릭하시면 Code Insight탭이 있습니다. 거기에서 자동화 옵션...
    • 문영봉
    • 2000.03.14 01:14
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 조피디
      2000.03.14 01:46
      자료실의 FlatStyle컴포넌트를 다운받아서 사용해보세요.. 소스공개 프리웨어랍니다.. 그냥 칼라뿐만이...
    • 문영봉
      2000.03.14 03:29
      조피디 wrote: > > 자료실의 FlatStyle컴포넌트를 다운받아서 사용해보세요.. > 소스공개 프리웨어랍니...
    • dimonz
    • 2000.03.14 01:12
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 임형호
      2000.03.14 02:27
      dimonz wrote: > 안녕하세요 ? > a,b 두 개의 db 가 있는데 > a,b db 의 일정 필드의 조건이 같을때 ...
    • blueSky
      2000.03.14 01:54
      dimonz wrote: > 안녕하세요 ? > a,b 두 개의 db 가 있는데 > a,b db 의 일정 필드의 조건이 같을때 ...
    • 김지현
    • 2000.03.14 00:20
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 강인규
      2000.03.14 00:46
      조금만 찾아보심 답을 찾을 수 있었을텐데.... 김영대님의 답변을 올려드립니다. DBGrid1DrawColumnCel...
    • 김지현
      2000.03.14 01:58
      강인규님.. 답변감사합니다.. 제가 초보라서요.. 근데.. 저는 특정 열(column)이 아닌 특정 행(row)의 폰...
    • 강인규
      2000.03.14 02:04
      row와 column의 개념을 제가 이해하지 못하는 건가요? 프로그램을 짜보시면 될텐데, 헐... 조건에 따...
    • 조군희
      2000.03.17 19:30
      아래와 같이 코딩하시면 쉽게 작업하실수 있습니다.. Cell정렬방식도 함께 해결할수 있고요... unit Un...
    • 임형호
      2000.03.14 02:39
      문영봉 wrote: > 많은 도움을 받고 있어서 감사를 먼저 드립니다. > dbgrid 에서 화살표를 위 아래,좌,우...
    • 종이학
      2000.03.14 00:08
      문영봉 wrote: > 많은 도움을 받고 있어서 감사를 먼저 드립니다. > dbgrid 에서 화살표를 위 아래,좌,우...