Главная страница
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.018 c
1-26451
Rise
2003-05-29 11:48
2003.06.09
_SystemTime


1-26606
Flex
2003-05-27 14:21
2003.06.09
RichEdit 64Kb


14-26750
Markizzz
2003-05-22 21:37
2003.06.09
Счётчики для сайта


14-26756
_Alex_
2003-05-23 06:50
2003.06.09
FIBPlus3


14-26695
Den
2003-05-21 14:57
2003.06.09
Components