| Madmech |
15-10-2006 01:36 497905 |
Delphi | Проблем с изменяемостью ячеек
Ребза, нужен компетентный совет. Проблема такова: есть класс StringGrid1, то бишь табличка на форме. По умолчанию параметр (поле) goEditing (внутри Options) стоит в значении True, то есть ВСЕ ячейки можно изменять. Мне надо, чтобы часть ячеек, начиная с некоторой строчки, нельзя было редактировать. А все предыдущие - можно. Как это реализовать, а?
|
| detrin |
15-10-2006 02:47 497921 |
Попробуй данный код:
Код:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if acol=2 then stringgrid1.Options:=StringGrid1.Options - [goEditing]
else stringgrid1.Options:=StringGrid1.Options + [goEditing];
end;
В данном коде недоступна к редактированию вторая колонка.
|
| Madmech |
15-10-2006 15:23 498059 |
Спасибо за совет. С Вашей помощью я решил эту проблему так:
Код:
procedure TForm2.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var i:integer;
begin
for i := 1 to n do
if ARow = i then stringgrid1.Options := StringGrid1.Options + [goEditing];
for i := n + 1 to 2 * n + 4 do
if ARow = i then stringgrid1.Options := StringGrid1.Options - [goEditing];
end;
|
| detrin |
15-10-2006 19:53 498174 |
Ну цикл на самом деле здесь лишний.
Достаточно было сделать так:
Код:
procedure TForm2.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if (ARow > 0) and (ARow <= n) then stringgrid1.Options := StringGrid1.Options + [goEditing];
if (ARow > n) and (ARow <= 2*n+4) then stringgrid1.Options := StringGrid1.Options - [goEditing];
end;
А цикл только замедляет выполнение программы.
P.S. Спасибо в карман не положишь :)
|
| Madmech |
15-10-2006 20:47 498194 |
Ага, еще раз thanx, переделал.
Цитата:
P.S. Спасибо в карман не положишь
|
Если имеешь в виду, что поставить тебе "полезное сообщение", то уже сделал, причем 2 раза. :)
|
Время: 12:58.
© OSzone.net 2001-