Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Delphi | Проблем с изменяемостью ячеек (http://forum.oszone.net/showthread.php?t=72927)

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 раза. :)


Время: 21:52.

Время: 21:52.
© OSzone.net 2001-