Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.07;
Скачать: CL | DM;

Вниз

цвет фона шрифта в StGrd   Найти похожие ветки 

 
Golem   (2007-11-25 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;

но это не работает, то есть тест выводится, но дефаулт шрифтом.
Вразумите, как заставить это работать...


 
Дмитрий К ©   (2007-11-25 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   (2007-11-26 21:22) [2]

создал на форме 2 StGrd. Один в ручную, как в примере, второй с использованием MCK. создал идентичные обработчики для обоих, по образцу из примера. так работает только тот, что создан вручную. что создан с MCK не пашет...я плакаль...


 
Golem   (2007-11-27 00:29) [3]

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


 
Дмитрий К ©   (2007-11-27 07:40) [4]

Чтобы заработало в MCK нужно DefaultDrawing выставить в False.

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

Самому рисовать или подправить KOLStGrd.pas, более простого способа я не знаю.


 
Golem   (2007-11-27 18:16) [5]

спасибо, буду пробавать.



Страницы: 1 вся ветка

Текущий архив: 2008.12.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
2-1225088549
AlekseyB
2008-10-27 09:22
2008.12.07
Текстовый файл


15-1222839778
ВадимЛ
2008-10-01 09:42
2008.12.07
Починить Делфи Д5 (пути ?)


1-1202752824
Igit
2008-02-11 21:00
2008.12.07
Автоматическое скроллирование к ItemIndex в ListView


15-1222820307
brother
2008-10-01 04:18
2008.12.07
навеяло башем...


2-1225112211
X-Type
2008-10-27 15:56
2008.12.07
COM (Initialize)