Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2011, 19:28   #1
lblondy
Пользователь
 
Регистрация: 25.04.2011
Сообщений: 27
Вопрос stringgrid. проблема

У меня такая проблемка. в stringgrid в определенные ячейки (не все) вводятся числа. мне нужно сделать так, чтобы эти (только) ячейки пользователь не мог изменять. подскажите пожалуйста
lblondy вне форума Ответить с цитированием
Старый 26.04.2011, 10:15   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Код:
procedure TForm1.StringGridSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
begin
with (Sender as TStringGrid) do 
  begin  
  if (aCol=-1) or (aRow=-1) // если клетка вне поля - то выйдем, иначе может крешнуться
    then exit;
  if // здесь мегаусловие на все ваши клетки :D типа так ((acol=5) and (arow=10)) or остальные условия в том же духе
    then Options := Options - [goediting];  //запрещаем изменять весь грид
    else Options := Options + [goediting]; // разрешаем изменять весь грид
  end;
end;

Последний раз редактировалось phomm; 26.04.2011 в 18:37.
phomm вне форума Ответить с цитированием
Старый 26.04.2011, 10:49   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
....StringGrifMouseDown
ну да, а если пользователь ткнул не мышкой, а клавишами управления перешёл?
можно изменять всё, что угодно?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.04.2011, 14:36   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

ну да.. точно.. ну, собственно, тогда можно Onselectcell использовать, исправил пост

просто взял из проекта одного своего , да подрезал там-сям, а там в проекте ещё кой-чего навешано на мышеманипуляции и на селектселл, и вот только это и скопировал, ну, думаю, поможет всё равно )
phomm вне форума Ответить с цитированием
Старый 26.04.2011, 17:08   #5
lblondy
Пользователь
 
Регистрация: 25.04.2011
Сообщений: 27
По умолчанию

дико извиняюсь за свою недалекость, но почему в mousetocell в скобках 4 координаты????
lblondy вне форума Ответить с цитированием
Старый 26.04.2011, 18:36   #6
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

блин..я маразматик )) извините меня , на работе загон был.. в голове все мысли левые..

исправляю пост, смотрите в нем код )
phomm вне форума Ответить с цитированием
Старый 27.04.2011, 21:16   #7
lblondy
Пользователь
 
Регистрация: 25.04.2011
Сообщений: 27
По умолчанию

не работает((((((( получается,что мне нужно запретить изменять несколько ячеек....
lblondy вне форума Ответить с цитированием
Старый 28.04.2011, 18:53   #8
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

давайте подробное описание всех ячеек (которые надо) и данных грида - сколько всего и сколько фиксированных ячеек, и давайте уже, наконец, код, а то не понять, что Вам надо, НАУЧИТЕСЬ излагать ВАШИ проблемы
phomm вне форума Ответить с цитированием
Старый 29.04.2011, 00:00   #9
lblondy
Пользователь
 
Регистрация: 25.04.2011
Сообщений: 27
По умолчанию

Код:
for l:=1 to 16 do //всего должна выбрать 16 ячеек
begin
repeat   // программа сама выберает номер ячейки
 i:=random(9)+1;
 j:=random(n)+1;
until (StringGrid1.Cells[i,j-1]='');
StringGrid1.Cells[i,j-1]:=IntToStr(a[j,i]); //записывает в stringgrid 
//соответствующие значения из готового массива А
end;
и те ячейки, куда она запишет и нужно запретить изменять пользователю (все остальные кроме этих можно и нужно изменять)
в stringgrid 1 фиксированный столбец, 9 нефиксированных. количество строк изменяется в зависимости от уровня игры(курсовая--нужно сделать игру) от 3 до 8 строк. вроде все.

Последний раз редактировалось Stilet; 29.04.2011 в 08:29.
lblondy вне форума Ответить с цитированием
Старый 29.04.2011, 08:01   #10
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

В коде phomm нет "мегаусловий", т.к. до последнего не были известны критерии, по которым запрещается ввод в ячейки.

Теперь можно код дополнить.
При записи в ячейку:
Код:
  StringGrid1.Cells[i,j-1]:=IntToStr(a[j,i]); 
  StringGrid1.Objects[i,j-1] := TObject(1); //добавляем признак блокировки ячейки
В процедуре StringGridSelectCell:
Код:
  ...
  if Integer(StringGrid1.Objects[ACol, ARow]) = 1 then
    then Options := Options - [goediting]  //запрещаем изменять весь грид
    else Options := Options + [goediting]; // разрешаем изменять весь грид
  end;
Прик вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с записью в StringGrid novichok1 Общие вопросы Delphi 2 22.01.2011 19:25
StringGrid проблема Death_moroZ Общие вопросы Delphi 6 20.01.2011 19:43
Проблема с StringGrid HixoH Общие вопросы C/C++ 1 14.12.2010 19:13
Проблема в STRINGGRID !!! WeRsUs Помощь студентам 4 28.10.2010 21:35
проблема в StringGrid kta87 Общие вопросы Delphi 3 12.06.2010 14:42