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

Вниз

StringGrid   Найти похожие ветки 

 
Rise ©   (2003-05-28 14:27) [0]

как в StringGrid изменить шрифт какой либо ячеки


 
Skier ©   (2003-05-28 14:28) [1]

OnDrawCell


 
Rise ©   (2003-05-28 14:39) [2]

Но проблема в том что я некоторые ячейки окрашиваю fillrect...
но тогда невидно введеную строку, неужели нужно заново в процедуре OnDrawCell заново заполнять ячейку?


 
Skier ©   (2003-05-28 14:41) [3]

fillrect + TextOut(...,Cells[ACol, ARow])


 
McSimm2   (2003-05-28 14:45) [4]




procedure TFrm_search.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
R,R1,R2:TRect;
GR: TGridRect;

procedure BrushCell(fPen,fBrush : TColor;fRect: TRect);
begin
with StringGrid1 do
begin
Canvas.Pen.Color := fPen;
Canvas.Brush.Color := fBrush;
Canvas.Rectangle(frect);
end;
end;
procedure BrushText(fFontCol: TColor; Value: String; fRect: TRect);
begin
with StringGrid1 do
begin
SetBkMode(Canvas.Handle,TRANSPARENT);
Canvas.Font.Color := fFontCol;
DrawText(Canvas.Handle,pchar(value),-1,fRect,DT_CENTER or DT_VCENTER or DT_SINGLELINE);
SetBkMode(Canvas.Handle,OPAQUE);
end;
end;

begin
r.left := rect.left+2;
r.top := rect.top+2;
r.right := rect.right-2;
r.bottom := rect.bottom-2;

GR:=Frm_search.StringGrid1.Selection;

with Frm_search.StringGrid1 do
if ((ACol=GR.Right) and (ARow=GR.Bottom)) then
begin
BrushCell(clWhite,RGB(25,25,225),Rect);
BrushCell(clWhite,RGB(200,200,225),Rect);
BrushText(clBlack,Cells[ACol,ARow],r);
end else
begin
BrushCell(RGB(229,229,229),RGB(229,229,229),Rect);
BrushText(clBlack,StringGrid1.Cells[ACol,ARow],Rect);
end;
end;


 
Rise ©   (2003-05-28 14:47) [5]

Вот процедура обработки но хоть текс в яейке есть но его не видно. Что я сделал нетак подскажите пожалуйста

Canvas.Brush.Color := clblue;
Canvas.FillRect(Rect);
Canvas.Font.Color:=clWhite;
Canvas.TextOut(Round(rect.Right/2),Round(rect.Top/2),Cells[ACOL,AROW]);


 
MBo ©   (2003-05-28 14:51) [6]

а так?
(rect.Left+2,rect.Top+2


 
Skier ©   (2003-05-28 14:52) [7]

Canvas.TextOut( Round(rect.Right/2),Round(rect.Top/2),Cells[ACOL,AROW]);



 
Rise ©   (2003-05-28 14:56) [8]

Спасибо, McSimm2 (28.05.03 14:45)
там все класно работает
Но вот только поясните почему не работал
Canvas.TextOut(Round(rect.Right/2),Round(rect.Top/2),Cells[ACOL,AROW]);



 
McSimm2   (2003-05-28 14:59) [9]

Ты точно обращался к канве стринггирида у тебя перед кодом есть
with StringGrig1 do begin... если нет то ты рисовал на канве формы....


 
Skier ©   (2003-05-28 15:01) [10]


> Но вот только поясните почему не работал

Имеет место быть неправильное вычисление координат
при выводе текста ячейки.


 
McSimm2   (2003-05-28 15:03) [11]

Координаты ты он криво высчитывает, но текст отражается (хоть и не там где надо)....


 
Palladin ©   (2003-05-28 15:04) [12]

Угу, ровно в середину ячейки, че почем..


 
Rise ©   (2003-05-28 15:08) [13]

McSimm2 (28.05.03 14:59)
присутствует with StringGrig1 do begin...
и я пробовал Round(rect.Right/2) и 0 и 100 и 50 но текста небыло...


 
McSimm2   (2003-05-28 15:12) [14]

Просто подход вычисления координат необычен... Ты делаешь как то сложно.... ещё и округление ставишь...
Поиграйся с DrawText() - там всё проще... И можно форматить текст как хочешь - без всяких вычислений....


 
Rise ©   (2003-05-28 15:13) [15]

Да все дело в координатах.
Канва для все таблицы одна(а я думал для каждой ячейки)
в процедуру оказываеться передаеться rect только самой ячейки

(rect.Left+2,rect.Top+2



 
McSimm2   (2003-05-28 15:14) [16]

угу



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

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

Наверх




Память: 0.5 MB
Время: 0.02 c
14-26679
Переяслов Григорий
2003-05-23 19:31
2003.06.09
Установка видео кодека


1-26567
wera
2003-05-28 10:55
2003.06.09
Ох, уж эти линейные списки..


14-26746
Dimka Maslov
2003-05-22 19:30
2003.06.09
Политкоррекность


14-26782
Иксик
2003-05-20 13:51
2003.06.09
Вопрос не в тему: кассеты


6-26642
Сергей
2003-04-07 00:25
2003.06.09
создание своего WinPopup а