Войти

Показать полную графическую версию : [решено] Delphi | Проблем с изменяемостью ячеек


Madmech
15-10-2006, 01:36
Ребза, нужен компетентный совет. Проблема такова: есть класс StringGrid1, то бишь табличка на форме. По умолчанию параметр (поле) goEditing (внутри Options) стоит в значении True, то есть ВСЕ ячейки можно изменять. Мне надо, чтобы часть ячеек, начиная с некоторой строчки, нельзя было редактировать. А все предыдущие - можно. Как это реализовать, а?

detrin
15-10-2006, 02:47
Попробуй данный код:
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
Спасибо за совет. С Вашей помощью я решил эту проблему так:
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
Ну цикл на самом деле здесь лишний.
Достаточно было сделать так:
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
Ага, еще раз thanx, переделал.
P.S. Спасибо в карман не положишь
Если имеешь в виду, что поставить тебе "полезное сообщение", то уже сделал, причем 2 раза. :)




© OSzone.net 2001-2012