Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c