Главная страница
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.033 c
2-1175816300
Чайник
2007-04-06 03:38
2007.04.29
Что это: Unsatisfied forward or external declaration: P1202_AdsP


15-1175672734
umbra
2007-04-04 11:45
2007.04.29
снять пароль с макроса в экселе


2-1175834208
Alex8
2007-04-06 08:36
2007.04.29
Пропажа записей


2-1176254877
Riply
2007-04-11 05:27
2007.04.29
Добавление элемента в отсортированную структуру.


2-1176374431
denmin
2007-04-12 14:40
2007.04.29
Как открыть ранее сохраненный файл Quickreport a?