Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

цвет фона\шрифта в StGrd [Delphi, D7+kol, Windows]


Golem ©   (2007-11-25 18:13:00) 

пытаюсь заполнять 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;

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


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

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


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

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

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

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


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

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


Golem   (2007-11-26 21:22:00) [4]

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


Дмитрий К   (2007-11-25 22:04:00) [5]

Пример. 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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо