Форум: "Основная";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
Внизнастройка StringGrid Найти похожие ветки
← →
lyudmila (2007-03-05 08:46) [0]Добрый день. Пишу программку, которая использует StringGrid. Не получается сделать следующее:
1. необходимо выделять рамку ячейки в зависимости от условия: либо черная рамка, либо красная. Писала в DrawCell:
...
StringGrid.Canvas.Pen.Color:=clBlack;
...
Отключала опции: GoVertLine:= false; GoHorzLine:=false;
Ничего не выходит :(
2. надо, чтобы в некоторые ячейках текст мигал. Такое вообще возможно реализовать?
Подскажите, пожалуйста, как это сделать.
Заранее спасибо.
← →
Virgo_Style © (2007-03-05 08:50) [1]lyudmila (05.03.07 8:46)
StringGrid.Canvas.Pen.Color:=clBlack;
А рамку рисовать кто будет?)
← →
lyudmila (2007-03-05 09:27) [2]надо прописать:
...
StringGrid.Canvas.Pen.Color:=clBlack;
SGRid.Canvas.Rectangle(Rect);
...
Я правильно поняла?
Если да, то так я уже делала - не помогло :(
← →
Elen © (2007-03-05 09:39) [3]
> не помогло :(
А где прописывала?
← →
lyudmila (2007-03-05 09:45) [4]Код следующий:
procedure TForm1.SGridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
...
begin
...
if ARow=2 then SGrid.Canvas.Pen.Color:=clRed
else SGrid.Canvas.Pen.Color:=clBlack;
SGRid.Canvas.Rectangle(Rect);
r:=KdnRect(Rect,0,2,-3,0);
DrawText(SGrid.Canvas.Handle,PChar(SGRid.Cells[ACol,ARow]),Length (SGrid.Cells[ACol,ARow]),r,SGrid.DrawTextBiDiModeFlags(DT_LEFT));
...
end;
← →
Elen © (2007-03-05 10:06) [5]
> lyudmila (05.03.07 09:45) [4]procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if acol=2 then begin
StringGrid1.Canvas.Pen.Color:=clred;
StringGrid1.Canvas.Rectangle(rect);
StringGrid1.Canvas.TextOut(Rect.Left+5,Rect.Top+5,StringGrid1.Cells[acol,arow]);
end;
end;
Пробуй.
← →
ЮЮ © (2007-03-05 10:31) [6]DefaultDrawing отключила? Что делает KdnRect?
← →
lyudmila (2007-03-05 10:37) [7]DefaultDrawing зависит от выбора ячейки.
KdnRect нужен для DrawText, чтобы выровнять текст в ячейке.
Может из-за DrawText у меня как раз и не работает рамка?
Как тогда выравнить текст в ячейке?
← →
ЮЮ © (2007-03-05 10:49) [8]DefaultDrawing - свойство StringGrid-а и не может зависит от ячейки
Выравнивают текст с помощью флагов (последнмй параметр):
DT_LEFT - по левому краю
DT_CENTER - по центру
и т.д.
Перед DrawText Rect, естественно, надо уменьшить, чтобы не затереть границы. Поэтому я и просил код KdnRect, чтобы увидеть, что там делается с исходным Rect.
← →
lyudmila (2007-03-05 10:59) [9]DefaultDrawing изменяется при выборе ячейки (OnSelectCell).
Код KdnREct:
function KdnRect(Rect: TRect; DLeft,DTop,DRight,DBottom: Integer): TRect;
begin
with Result do
begin
Left:= Rect.Left + DLeft;
Top:= Rect.Top + DTop;
Right:= Rect.Right + DRight;
Bottom:= Rect.Bottom + DBottom;
end;
end;
← →
ЮЮ © (2007-03-05 11:07) [10]> DefaultDrawing изменяется при выборе ячейки (OnSelectCell)
> .
Рекоиендую отключить совсем.
Ну и слева/снизу сделать отступы:
r:=KdnRect(Rect,1,2,-3,-1);
← →
lyudmila (2007-03-05 11:12) [11]Получилось :)
Большое спасибо всем :))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c