![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
StringGrid [D6]
Medved_ © (2007-02-03 12:32:00)Уважаемые мастера.
Скажите, как в Stringgrid сделать
выделение как в 1с бухгалтерии.
Нажимаешь на ячейку и у тебя FixedRows ячейки
находится как бы во вдавленном состоянии.
Спасибо.
RASkov (2007-02-04 06:41:00) [1]> [0] Medved_ (03.02.07 12:32)
Со StringGrid'ом задуманное вряд ли получится, нужно что нибудь другое искать.
Но если ячейка выделена одна может быть, и не так много их(ячеек) в гриде, то можно и так попробывать:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
var R: TRect;
procedure DownRect;
begin
with StringGrid1.Canvas do begin
Pen.Color:=clGray;
MoveTo(R.Left+1, R.Top+1); LineTo(R.Right-1, R.Top+1);
MoveTo(R.Left+1, R.Top+1); LineTo(R.Left+1, R.Bottom-1);
Pen.Color:=clWhite;
MoveTo(R.Right-1, R.Top+1); LineTo(R.Right-1, R.Bottom-1);
MoveTo(R.Right-1, R.Bottom-1); LineTo(R.Left+1, R.Bottom-1);
end;
end;
procedure UpRect;
begin
with StringGrid1.Canvas do begin
Pen.Color:=clWhite;
MoveTo(R.Left+1, R.Top+1); LineTo(R.Right-1, R.Top+1);
MoveTo(R.Left+1, R.Top+1); LineTo(R.Left+1, R.Bottom-1);
Pen.Color:=clGray;
MoveTo(R.Right-1, R.Top+1); LineTo(R.Right-1, R.Bottom-1);
MoveTo(R.Right-1, R.Bottom-1); LineTo(R.Left+1, R.Bottom-1);
end;
end;
var N: Integer;
begin
for N:=0 to StringGrid1.ColCount-1 do begin
R:=StringGrid1.CellRect(N, 0);
if N<>ACol then UpRect else DownRect;
end;
for N:=0 to StringGrid1.RowCount-1 do begin
R:=StringGrid1.CellRect(0, N);
if N<>ARow then UpRect else DownRect;
end;
end;
Хотя может кто и лучше, что придумает..
ЗЫ DefaultDrowing = True; Вообще все свойства StringGrid'а1 по умолчанию...
ЮЮ (2007-02-03 12:45:00) [2]Рисуя ячейки самомтоятельно в OnDrawCell + DefaultDrowing = false можешь нарисовать что угодно.
З.Ы. что происхожит с ячейками в 1с по твоему описанию не понял.