Конференция "KOL" » цвет фона\шрифта в StGrd [Delphi, D7+kol, Windows]
 
  • Golem (25.11.07 18:13) [0]
    пытаюсь заполнять StGrd (портированный StringGrid) текстом с разным цветом шрифта и фона.
    Пишу:

    procedure TForm1.StGrd1DrawCell(Sender: PControl; Cnv: PCanvas; ACol,
     ARow: Integer; Rect: TRect; State: TGridDrawState);
    begin
    StGrd1.Canvas.Brush.Color:=clRed;
    StGrd1.Canvas.Font.Color:=clWhite;

    StGrd1.Canvas.FillRect(Rect);
    StGrd1.Canvas.TextOut(Rect.Left,Rect.Top,StGrd1.Cells[ACol,ARow]);
    end;

    procedure TForm1.GRushButton2Click(Sender: PObj);
    begin
    StGrd1.Cells[StGrd1.Selection.TopLeft.X,StGrd1.Selection.TopLeft.Y]:='newText';
    end;


    но это не работает, то есть тест выводится, но дефаулт шрифтом.
    Вразумите, как заставить это работать...
  • Дмитрий К © (25.11.07 22:04) [1]
    Пример. Pure KOL sans MCK.
    Надеюсь поможет.

    program stgrd_tst;

    uses
     Windows,
     Messages,
     Kol,
     KOLStGrd;

    type
     PForm1 = ^TForm1;
     TForm1 = object(TObj)
       Form, Btn: PControl;
       Sg: PStGrd;
     public
       procedure DoClick(Sender: PObj);
       procedure DoDrawCell(Sender: PControl; Cnv: PCanvas; ACol, ARow: Longint;
         Rect: TRect; State: TGridDrawState);
     end;

    var
     Form1: PForm1;

    procedure NewForm1(var Result: PForm1; AParent: PControl);
    begin
     New(Result, Create);
     with Result^ do
     begin
       Form := NewForm(AParent, 'Form1');
       Form.Add2AutoFree(Result);
       Applet := Form;
       SG := PStGrd(NewStGrd(Form,5,5,0,0,50,20,[goFixedVertLine, goFixedHorzLine],
         False,True,True,ssNone).SetClientSize(254,104).ResizeParentRight);
       SG.OnDrawCell := DoDrawCell;
       Btn := NewButton(Form, 'Button1').PlaceUnder.ResizeParentBottom;
       Btn.OnClick := DoClick;
     end;
    end;

    { TForm1 }

    procedure TForm1.DoClick(Sender: PObj);
    begin
     SG.Cells[SG.Selection.TopLeft.X,SG.Selection.TopLeft.Y]:='Text';
    end;

    procedure TForm1.DoDrawCell(Sender: PControl; Cnv: PCanvas; ACol,
     ARow: Integer; Rect: TRect; State: TGridDrawState);
    begin
     if gdSelected in State then
     begin
       Cnv.Brush.Color:=clYellow;
       Cnv.Font.Color:=clBlue;
       Cnv.FillRect(Rect);
       Cnv.TextOut(Rect.Left,Rect.Top,SG.Cells[ACol,ARow]);
     end
     else begin
       Cnv.Brush.Color:=clRed;
       Cnv.Font.Color:=clWhite;
       Cnv.FillRect(Rect);
       Cnv.TextOut(Rect.Left,Rect.Top,SG.Cells[ACol,ARow]);
     end;

     if gdFocused in State then
     begin
       Cnv.DrawFocusRect(Rect);
     end;
    end;

    begin
     NewForm1(Form1, nil);
     Run(Applet);
    end.

  • Golem (26.11.07 21:22) [2]
    создал на форме 2 StGrd. Один в ручную, как в примере, второй с использованием MCK. создал идентичные обработчики для обоих, по образцу из примера. так работает только тот, что создан вручную. что создан с MCK не пашет...я плакаль...
  • Golem (27.11.07 00:29) [3]
    А цвет линий сетки можно менять? если можно то как?
  • Дмитрий К © (27.11.07 07:40) [4]
    Чтобы заработало в MCK нужно DefaultDrawing выставить в False.

    > А цвет линий сетки можно менять? если можно то как?

    Самому рисовать или подправить KOLStGrd.pas, более простого способа я не знаю.
  • Golem (27.11.07 18:16) [5]
    спасибо, буду пробавать.
 
Конференция "KOL" » цвет фона\шрифта в StGrd [Delphi, D7+kol, Windows]
Есть новые Нет новых   [134431   +10][b:0][p:0.002]