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

Вниз

настройка 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.031 c
6-1162293530
vcdima
2006-10-31 14:18
2007.04.29
POST запрос при помощи WinInet


3-1171025705
Gin2
2007-02-09 15:55
2007.04.29
ADO - большой файл(~184 Мб) в блоб


2-1175848426
Alex8
2007-04-06 12:33
2007.04.29
Модуль System


6-1162300754
Rey_Mysterio
2006-10-31 16:19
2007.04.29
Http - зарпросы


15-1175087034
Awex
2007-03-28 17:03
2007.04.29
Delphi for PHP - г... в массы??