Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.09.2019, 21:58
Maks19 Maks19 вне форума
Начинающий
 
Регистрация: 19.06.2019
Сообщения: 113
Версия Delphi: Delphi7
Репутация: 10
По умолчанию Запрет ввода данных в фиксированную ячейку StringGrid

Здравствуйте!
Как запретит ввод данных в фиксированную ячейку?
Так сделал.
Код:
 if (ARow=21)and(ACol=1)  then
  StringGrid1.Options:=StringGrid1.Options-[goEditing]
Не работает.
Ответить с цитированием
  #2  
Старый 21.09.2019, 02:17
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

А если в KeyPress написать:
Код:
  if (StringGrid1.Row = 21) and (StringGrid1.Col = 1) then
    Key := #0;
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #3  
Старый 21.09.2019, 22:04
Maks19 Maks19 вне форума
Начинающий
 
Регистрация: 19.06.2019
Сообщения: 113
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Kailon
А если в KeyPress написать:
Код:
  if (StringGrid1.Row = 21) and (StringGrid1.Col = 1) then
    Key := #0;
Если в KeyPress то работает.
Только у меня по событию RadioGroup3Click. Т. е не должно вводиться в ячейку, только после нажатия на кнопку. А в RadioGroup3Click не работает.
Ответить с цитированием
  #4  
Старый 23.09.2019, 23:54
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
По умолчанию

Цитата:
Сообщение от Maks19
Если в KeyPress то работает.
Только у меня по событию RadioGroup3Click. Т. е не должно вводиться в ячейку, только после нажатия на кнопку. А в RadioGroup3Click не работает.
Добавь еще одно условие проверки
Код:
if (StringGrid1.Row = 21) and (StringGrid1.Col = 1) and (RadioGroup1.ItemIndex = 2) then
  Key := #0;
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #5  
Старый 24.09.2019, 09:11
Maks19 Maks19 вне форума
Начинающий
 
Регистрация: 19.06.2019
Сообщения: 113
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Kailon
Добавь еще одно условие проверки
Код:
if (StringGrid1.Row = 21) and (StringGrid1.Col = 1) and (RadioGroup1.ItemIndex = 2) then
  Key := #0;
Вот так делаю и не работает:
Код:
procedure TForm1.RadioGroup3Click(Sender: TObject);
var ACol, ARow: Longint;
RowCount:integer;
Key:char;
begin
case RadioGroup3.ItemIndex of
0:
begin
//выражения
end;
1:
begin
//выражения
if (StringGrid1.Row = 18) and (StringGrid1.Col = 1) then Key := #0;
end;
end;
end;

Последний раз редактировалось Maks19, 25.09.2019 в 00:10.
Ответить с цитированием
  #6  
Старый 25.09.2019, 13:35
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

Всё правильно, за исключением того, что переменная Key в твоей процедуре RadioGroup3Click никакого отношения к StringGrid не имеет так как она является локальной. Перенеси свой код в процедуру KeyPress StringGrid'a и все будет у тебя работать. Примерно это будет выглядеть так:
Код:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  case RadioGroup3.ItemIndex of
  0:
    begin
    //выражения
    end;
  1:
    begin
    //выражения
      if (StringGrid1.Row = 18) and (StringGrid1.Col = 1) then Key := #0;
    end;
  end;
end;
И когда ты будешь выбирать в RadioGroup итем под номером 1, то ввод в ячейку с указанными координатами будет блокироваться.
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #7  
Старый 23.09.2019, 11:02
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Вы почти правильно сделали:
Код:
if (ARow=21)and(ACol=1)  then
 StringGrid1.Options:=StringGrid1.Options-[goEditing]
else
 StringGrid1.Options:=StringGrid1.Options+[goEditing]
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #8  
Старый 23.09.2019, 19:22
Maks19 Maks19 вне форума
Начинающий
 
Регистрация: 19.06.2019
Сообщения: 113
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Вы почти правильно сделали:
Код:
if (ARow=21)and(ACol=1)  then
 StringGrid1.Options:=StringGrid1.Options-[goEditing]
else
 StringGrid1.Options:=StringGrid1.Options+[goEditing]
Так не работает.
А условие после else мне не надо. Надо чтобы при нажатии на кнопку нельзя было ввести только в (ARow=21)and(ACol=1).

Последний раз редактировалось Maks19, 23.09.2019 в 19:32.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:12.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter