![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
настройка StringGrid
lyudmila © (2007-03-05 08:46:00)Добрый день. Пишу программку, которая использует StringGrid. Не получается сделать следующее:
1. необходимо выделять рамку ячейки в зависимости от условия: либо черная рамка, либо красная. Писала в DrawCell:
...
StringGrid.Canvas.Pen.Color:=clBlack;
...
Отключала опции: GoVertLine:= false; GoHorzLine:=false;
Ничего не выходит :(
2. надо, чтобы в некоторые ячейках текст мигал. Такое вообще возможно реализовать?
Подскажите, пожалуйста, как это сделать.
Заранее спасибо.
lyudmila (2007-03-05 11:12:00) [1]Получилось :)
Большое спасибо всем :))
ЮЮ (2007-03-05 11:07:00) [2]> DefaultDrawing изменяется при выборе ячейки (OnSelectCell)
> .
Рекоиендую отключить совсем.
Ну и слева/снизу сделать отступы:
r:=KdnRect(Rect, 1,2,-3, -1);
lyudmila (2007-03-05 10:59:00) [3]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 10:49:00) [4]DefaultDrawing - свойство StringGrid-а и не может зависит от ячейки
Выравнивают текст с помощью флагов (последнмй параметр):
DT_LEFT - по левому краю
DT_CENTER - по центру
и т.д.
Перед DrawText Rect, естественно, надо уменьшить, чтобы не затереть границы. Поэтому я и просил код KdnRect, чтобы увидеть, что там делается с исходным Rect.
lyudmila (2007-03-05 10:37:00) [5]DefaultDrawing зависит от выбора ячейки.
KdnRect нужен для DrawText, чтобы выровнять текст в ячейке.
Может из-за DrawText у меня как раз и не работает рамка?
Как тогда выравнить текст в ячейке?
ЮЮ (2007-03-05 10:31:00) [6]DefaultDrawing отключила? Что делает KdnRect?
Elen (2007-03-05 10:06:00) [7]
> 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;
Пробуй.
lyudmila (2007-03-05 09:45:00) [8]Код следующий:
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 09:39:00) [9]
> не помогло :(
А где прописывала?
lyudmila (2007-03-05 09:27:00) [10]надо прописать:
...
StringGrid.Canvas.Pen.Color:=clBlack;
SGRid.Canvas.Rectangle(Rect);
...
Я правильно поняла?
Если да, то так я уже делала - не помогло :(
Virgo_Style (2007-03-05 08:50:00) [11]lyudmila (05.03.07 8:46)
StringGrid.Canvas.Pen.Color:=clBlack;
А рамку рисовать кто будет?)