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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2011, 22:42   #1
Ветас
Пользователь
 
Регистрация: 09.11.2007
Сообщений: 45
По умолчанию Как убрать фокус с Radiobutton на Label в Delphi ?

Здравствуйте, уважаемые форумчане. У меня вопрос по Delphi
Подскажите пожалуйста как установить фокус на одну из надписей (Label) чтобы ни один из трех переключателей не был активным, а то получается, что когда открывается окно "О программе" (AboutBox), а фокус остается на одном из трех переключателей и зависает на нем пока не закончатся все вопросы теста.
Ветас вне форума Ответить с цитированием
Старый 29.01.2011, 23:14   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

на лейбл нельзя установить фокус, т.к. формально это не контрол.
Юзай SetFocus(), у кого он есть.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 29.01.2011, 23:20   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Label - это статик-текст, он не имеет и не может иметь фокуса!

давайте исходники Вашего проекта (можно просто тестовый пример, иллюстрирующий Вашу мысль), поговорим более конкретно.

пока могу предположить, что окошко "About" нужно сделать модальным!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.01.2011, 07:53   #4
was3110
Форумчанин
 
Аватар для was3110
 
Регистрация: 25.04.2010
Сообщений: 254
По умолчанию

Конечно, на Label фокус установить нельзя. Но Ветас надо убрать (даже не фокус) выделение с РадиоКнопок. А это возможно, установив свойство RadioBut.Checked:=false;
помогать студентам - моя вторая профессия

Последний раз редактировалось was3110; 30.01.2011 в 07:55.
was3110 вне форума Ответить с цитированием
Старый 30.01.2011, 13:41   #5
Ветас
Пользователь
 
Регистрация: 09.11.2007
Сообщений: 45
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Label - это статик-текст, он не имеет и не может иметь фокуса!

давайте исходники Вашего проекта (можно просто тестовый пример, иллюстрирующий Вашу мысль), поговорим более конкретно.

пока могу предположить, что окошко "About" нужно сделать модальным!
Окошко "About" у меня модальное.
Привожу код проекта:

Код:
procedure TForm1.RadioButton1Click(Sender: TObject);
var
    buf: string;
    i: integer;
begin

  if RadioButton1.Checked  then
        right := right + RadioButton1.Tag;

       if RadioButton1.Tag = 1 then begin
    
         MessageDlg('Правильно!',mtInformation,[mbOK],0);
 
    RadioButton1.Checked:=False;
    end
  else
  
    MessageDlg('Неправильно',mtError,[mbOK],0);

 

    if not NextQW then
  begin
      // здесь значение NextQw = FALSE
    

      // скрыть переключатели и поля меток
      RadioButton1.Visible := False;
      RadioButton2.Visible := False;
      RadioButton3.Visible := False;

      Label2.Visible := False;
      Label1.Visible:=False;
     

      buf := 'Тестирование завершено.' + #13 +
             'Правильных ответов: ' + IntToStr(right) +
             ' из ' + IntToStr(nq) + '.' + #13;
     Label4.Left:=178;
     Label4.Top:=178;
      Label4.Visible:=True;
      Label4.Caption := buf;
      N5.Enabled:=False;
      N4.Enabled:=True;
    end;
end;
Ветас вне форума Ответить с цитированием
Старый 30.01.2011, 19:18   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Проблема тут:

Код:
RadioButton1.Checked:=False;
Хотя бы одна из радиокнопок из одной группы всегда должна быть отмечена, иначе при переходе фокуса Дельфи (или винда, хз) вызывает OnClick() у последней выбранной.

Добавь ещё одну радиокнопку "Не знаю", и делай ей .Checked := True вместо RadioButton1.Checked:=False.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 12.02.2011, 19:52   #7
Ветас
Пользователь
 
Регистрация: 09.11.2007
Сообщений: 45
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
Проблема тут:

Код:
RadioButton1.Checked:=False;
Хотя бы одна из радиокнопок из одной группы всегда должна быть отмечена, иначе при переходе фокуса Дельфи (или винда, хз) вызывает OnClick() у последней выбранной.

Добавь ещё одну радиокнопку "Не знаю", и делай ей .Checked := True вместо RadioButton1.Checked:=False.
Попробовал сделать - написал вот так:

Код:
procedure TForm1.RadioButton1Click(Sender: TObject);
var
    buf: string;
    i: integer;
begin

  if RadioButton1.Checked  then
        right := right + RadioButton1.Tag;

       if RadioButton1.Tag = 1 then begin
    
         MessageDlg('Правильно!',mtInformation,[mbOK],0);

   RadioButton4.Checked:=True;  //Вот здесь добавил
 

    end
  else begin
  
    MessageDlg('Неправильно',mtError,[mbOK],0);
   
   RadioButton4.Checked:=True;  //Вот здесь добавил

end;
 

    if not NextQW then
  begin
      // здесь значение NextQw = FALSE
    

      // скрыть переключатели и поля меток
      RadioButton1.Visible := False;
      RadioButton2.Visible := False;
      RadioButton3.Visible := False;

      Label2.Visible := False;
      Label1.Visible:=False;
     

      buf := 'Тестирование завершено.' + #13 +
             'Правильных ответов: ' + IntToStr(right) +
             ' из ' + IntToStr(nq) + '.' + #13;
     Label4.Left:=178;
     Label4.Top:=178;
      Label4.Visible:=True;
      Label4.Caption := buf;
      N5.Enabled:=False;
      N4.Enabled:=True;
    end;
end;
Но ничего не изменилось: как был фокус на последней выбранной RadioButton - так он и остался. И как его перенести (фокус) на RadioButton4 ?
Ветас вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
InplaceEditor у StringGrid'а. Как убрать фокус TwiX Общие вопросы Delphi 2 03.06.2010 01:09
убрать фокус из ячейки DBGreed KaimNotark БД в Delphi 5 19.02.2010 07:33
Как убрать фокус со StringGrid? TwiX Общие вопросы Delphi 2 25.08.2009 01:32
Как убрать фокус с TrackBar?????? NBSTUDIO Общие вопросы Delphi 1 11.08.2009 16:24