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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2012, 09:49   #1
Sergio_O
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 15
По умолчанию РадиоБатон vs РадиоГруп

Столкнулся с мелкой неприятностью. У RadioButton есть свойство ShowFocus, а у RadioGroup нету. И как следствие он выглядит ущербно со всей этой пунктирной линией. Я конечно могу заменить на обычный GroupBox, но в данном случае RadioGroup использовать целесообразнее из за кода.

Код:
procedure TFormStandSettings.RadioGroup_DatesChanging(Sender: TObject;
  NewIndex: Integer; var AllowChange: Boolean);
begin
  if NewIndex < 5 then
  begin
    DateEdit_End.Text:= '31.12.2100';
    TimePicker_End.Text:= '00:00:00';
  end;
  DateEdit_End.Visible:= NewIndex > 4;
  TimePicker_End.Visible:= NewIndex > 4;
  Label_DateEnd.Visible:= NewIndex > 4;
  case NewIndex of
    0:
      begin
        DateEdit_Start.Text:= DateToStr(IncYear(Now, -1));
        TimePicker_Start.Text:= '00:00:00';
      end;
    1:
      begin
        DateEdit_Start.Text:= DateToStr(IncMonth(Now, -1));
        TimePicker_Start.Text:= '00:00:00';
      end;
    2:
      begin
        DateEdit_Start.Text:= DateToStr(IncWeek(Now, -1));
        TimePicker_Start.Text:= '00:00:00';
      end;
    3:
      begin
        DateEdit_Start.Text:= DateToStr(IncDay(Now, -1));
        TimePicker_Start.Text:= '00:00:00';
      end;
    4:
      begin
        DateEdit_Start.Text:= DateToStr(Now);
        TimePicker_Start.Text:= '00:00:00';
      end;
    5:
      begin
        DateEdit_End.Text:= DateToStr(Now);
        TimePicker_End.Text:= TimeToStr(Now);
      end;
  end;
  AllowChange:= true;
end;
Изображения
Тип файла: jpg 1.JPG (58.3 Кб, 64 просмотров)
Тип файла: jpg 2.JPG (65.0 Кб, 97 просмотров)
Sergio_O вне форума Ответить с цитированием
Старый 04.07.2012, 10:55   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Собственно ничего не мешает создать свой вариант радиогруппы) или погуглить на предмет более подходящего варианта.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 05.07.2012, 07:15   #3
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

Общество анонимных извращенцев поможет!

Делаем кнопку размерами 1х1. Далее - на все твои радиобатоны вешаем вот такое:

Код:
procedure TfrmMain.RadioButton1Enter(Sender: TObject);
begin
   Button1.SetFocus;
   TRadioButton(Sender).Checked := True;
end;
Конечно, есть недостаток - с клавиатуры кнопками влево-вправо-вверх-вниз и табом отметить что-либо будет... х-м-м... затруднительно. Только мышью или хот-кеями (Ra&dioButton1 и т.п.).

Не! Это мы тоже заборем! Делаем так: в форме определяем
Код:
private
   Radio: TRadioButton;
Теперь немного меняем процедуру:

Код:
procedure TfrmMain.RadioButton1Enter(Sender: TObject);
begin
   Button1.SetFocus;
   Radio := TRadioButton(Sender);
   TRadioButton(Sender).Checked := True;
end;
И пишем обработчик для Button1:

Код:
procedure TfrmMain.Button1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   PostMessage(Radio.Handle, WM_KEYUP, 0, Key);
end;
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.

Последний раз редактировалось ych_del; 05.07.2012 в 08:55.
ych_del вне форума Ответить с цитированием
Старый 05.07.2012, 07:32   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
он выглядит ущербно со всей этой пунктирной линией.
А почему ущербно? Это выделение фокуса, между прочем очень даже спасительно, если ты работаешь на компьютере, у которого нет мышки - проверено на себе.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.07.2012, 07:37   #5
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

Помню, как-то доводилось читать занимательную книжку по usability - там еще рекомендовалось каким-нибудь еще способом (например - цветом) выделять текущий контрол. А то вдруг юзер отвлечется на пол-минуты и забудет, что делал.

И не ориентироваться только на мышководов, и не забывать про клаву - тоже было сказано.

Вообще - в той книжке было много здравых идей, надо будет её поискать и выложить для всеобщего ознакомления.
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
ych_del вне форума Ответить с цитированием
Старый 05.07.2012, 08:06   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и выложить для всеобщего ознакомления.
В раздел литературы выкладывай если что.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.07.2012, 08:56   #7
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Цитата:
Это выделение фокуса
Мне не на чем проверить, а разве нельзя просто сбросывать фокус на другой компонент.. выделение же должно пропасть, или нет?
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 05.07.2012, 08:59   #8
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

Valio, о том и написал (: Можно, ясен пень - на OnEnter. Если на OnClick вешать - будет мигать FocusRect, что не есть гут.
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
ych_del вне форума Ответить с цитированием
Старый 05.07.2012, 09:36   #9
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Да, действительно про это уже написали. С утра както лениво вчитываться )
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свой радиобатон ZvEr_HaCkEr Общие вопросы Delphi 6 13.05.2011 21:20