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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.03.2015, 00:24
aqula aqula вне форума
Новичок
 
Регистрация: 19.10.2012
Сообщения: 95
Репутация: 10
По умолчанию Enter на Radiogroup

Есть RadioGroup1 в нем генерирую кнопки
Код:
Ocenka := TmpStr;
      I := RadioGroup1.Items.Add(Ocenka);
      RBtn := TRadioButton(RadioGroup1.Controls[i]);
     SetWindowLong(RBtn.Handle,GWL_STYLE,GetWindowLong(RBtn.Handle,GWL_STYLE) or BS_MULTILINE);
      RBtn.OnKeyDown:=RadioKeyDown; 

где RadioKeyDown
Код:
procedure TMasterOfInspections.RadioKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key in [VK_RETURN, VK_SPACE]) then Button1.Click;
  if (Key in [VK_LEFT, VK_BACK]) then Button5.Click;
end;

На нажатие Enter ругается ошибкой памяти Access violation at address...
Ответить с цитированием
  #2  
Старый 31.03.2015, 06:14
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. А у Button1 событие Onclick есть?
2. может лучше сразу вызывать Button1Click(Self)?
Ответить с цитированием
  #3  
Старый 31.03.2015, 14:18
aqula aqula вне форума
Новичок
 
Регистрация: 19.10.2012
Сообщения: 95
Репутация: 10
По умолчанию

Да. Есть событие. Делал и так все одно - ошибка памяти выскакивает
Ответить с цитированием
  #4  
Старый 31.03.2015, 23:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от aqula
Да. Есть событие. Делал и так все одно - ошибка памяти выскакивает
Значит надо смотреть код Button1Click. Видимо, ошибка где-то внутри обработчика нажатия кнопки.

ЗЫ. Кстати, обычно такая ошибка происходит при обращении к несозданному объекту (одна из самых частых ошибок новичков).
Ответить с цитированием
  #5  
Старый 01.04.2015, 12:50
aqula aqula вне форума
Новичок
 
Регистрация: 19.10.2012
Сообщения: 95
Репутация: 10
По умолчанию

в том то и прикол.
вот пытаюсь ее отловить. завернул событие Button1Click в try except showmessage('where are u'); end;
но ничего не выдает.
Ответить с цитированием
  #6  
Старый 01.04.2015, 12:53
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Выложи побольше кода, так на кофейной гуще сложно гадать.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #7  
Старый 01.04.2015, 14:31
aqula aqula вне форума
Новичок
 
Регистрация: 19.10.2012
Сообщения: 95
Репутация: 10
По умолчанию

Дело еще в том что я на кнопке Button1, которую я жму. Я обновляю список радиокнопок на котором у меня типа обрабатывается событие я его

Код:
    while RadioGroup1.Items.Count > 0 do  
       RadioGroup1.Items.Delete(0);
а затем создаем новые
Код:
Ocenka := TmpStr;
      I := RadioGroup1.Items.Add(Ocenka);
      RBtn := TRadioButton(RadioGroup1.Controls[i]);
     SetWindowLong(RBtn.Handle,GWL_STYLE,GetWindowLong(RBtn.Handle,GWL_STYLE) or BS_MULTILINE);
      RBtn.OnKeyDown:=RadioKeyDown;
Ответить с цитированием
  #8  
Старый 01.04.2015, 15:56
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Ошибка в 7-й строчке.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #9  
Старый 01.04.2015, 17:42
aqula aqula вне форума
Новичок
 
Регистрация: 19.10.2012
Сообщения: 95
Репутация: 10
По умолчанию

что за 7-ая строчка? Конкретизируйте пожалуйста.

Cейчас пытался обмануть. Cделал на FormKeyDown
Код:
procedure TForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = VK_ESCAPE) then Close;
  if (Key = VK_RETURN) and Assigned(Screen.ActiveControl)
    and (Screen.ActiveControl is TRadioButton) then Button1.Click;
end;
Но все равно вылезает ошибка иногда.
Ответить с цитированием
  #10  
Старый 01.04.2015, 18:49
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Ошибка на 7-й строке, сразу после закомментированной строчки.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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