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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2007, 23:02   #1
Hintman
Пользователь
 
Регистрация: 14.04.2007
Сообщений: 28
По умолчанию Как убрать с компонент штрихованную окаймовку?

Ребята, подскажите, а как можно убрать с кнопок (TButton),
радиогруппы (TRadioGroup) и некоторых других компонент
штрихованную окаймовку, которая появляется при нажатии.
Hintman вне форума Ответить с цитированием
Старый 19.05.2007, 23:38   #2
Fainder
Участник клуба
 
Регистрация: 15.02.2007
Сообщений: 1,112
По умолчанию

в конце обработчика события передать фокус другому компоненту, например, форме.
Полезно также отключить tabstop
Fainder вне форума Ответить с цитированием
Старый 19.05.2007, 23:41   #3
itisiam
аккаунт недоступен
Форумчанин
 
Регистрация: 23.01.2007
Сообщений: 107
По умолчанию

Если я вас правильно понял, то надо свойство TabStop у Button установит в false, но тогда стрелки убиваются вместе с ним (не будут опознаваться при нажатии).
Так же можнопри каком либо событии (напр на нажатии самой этой кнопки) делать кнопку недоступной (Enabled:=false) - тогда умолчание на кнопке убивается и непоявляется на других кнопках; нажатия на стрелочки при этом обрабатываются.
ввел пароль, который мне не известен
itisiam вне форума Ответить с цитированием
Старый 20.05.2007, 01:53   #4
Hintman
Пользователь
 
Регистрация: 14.04.2007
Сообщений: 28
По умолчанию

Ага, интересное решение, требующее смекалки.

Насчет передачи фокуса - здесь потребуется работать еще и
с событием OnMouseDown. Не уверен, что не возникнет глюков.

И все же хотелось бы сделать это какими-то стандартными методами
или настройками свойств компонент. Неужели другого выхода нету?
Hintman вне форума Ответить с цитированием
Старый 20.05.2007, 10:30   #5
Fainder
Участник клуба
 
Регистрация: 15.02.2007
Сообщений: 1,112
По умолчанию

Цитата:
Сообщение от Hintman Посмотреть сообщение
И все же хотелось бы сделать это какими-то стандартными методами
или настройками свойств компонент. Неужели другого выхода нету?
Вряд ли. Здесь, как я понял речь идёт об отображении фокуса ввода. Это системная фича и скорей всего она либо вообще не убивается либо надо убивать только на кокретной машине (через реестр или ещё как - нибудь) и тогда это отразится на всех прогах, а какой клиент захочет, чтобы твоя прога меняла ему системный интефейс.
Ещё варитант: не юзать компоненты, которые могут получить фокус ввода. Я имею в виду tlabel вместо tbutton и т.д. Это придаст твоему проекту оригинальный вид
Fainder вне форума Ответить с цитированием
Старый 20.05.2007, 10:33   #6
OrdJONY
.NET-чик
Форумчанин
 
Аватар для OrdJONY
 
Регистрация: 24.03.2007
Сообщений: 569
По умолчанию

С передачей фокуса не надо с мышей работать.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 ................... //Ваш код
  Form1.SetFocus;
end;
Но только выбор всеравно остаеться. МОжно передавать фокус какому нибудь объекту находящемуся за полем зрения Пользователя, а если форма можно растянгивать тогда при растягивании соответственно перемещать и объект
"Разработка под веб - как работа с пылесосом: нихрена не прикольно, но засасывает"
Мо маленький городок
OrdJONY вне форума Ответить с цитированием
Старый 20.05.2007, 12:49   #7
itisiam
аккаунт недоступен
Форумчанин
 
Регистрация: 23.01.2007
Сообщений: 107
Сообщение

Цитата:
Насчет передачи фокуса - здесь потребуется работать еще и
с событием OnMouseDown. Не уверен, что не возникнет глюков.
Если сделать к примеру 2кнопки Play/Pause то логично что при нажатии на Play он становится недоступным (и открывается кнопка Puase.) А при MouseDown фокус передается кнопке и с ней же становится недоступным.
Багов не возникает , я проверял
ввел пароль, который мне не известен
itisiam вне форума Ответить с цитированием
Старый 20.05.2007, 13:58   #8
Hintman
Пользователь
 
Регистрация: 14.04.2007
Сообщений: 28
По умолчанию Окаймовка в TRadioGroup

Да, еще одна интересная идея, действительно работает, спасибо

Код:
procedure TForm1.Button1MouseDown(...);
begin
Button1.Enabled:=false;
Button2.Enabled:=true;
end;

procedure TForm1.Button2MouseDown(...);
begin
Button1.Enabled:=true;
Button2.Enabled:=false;
end;
А в принципе, вместо TButton меня вполне устраивает TSpeedButton.

Остается открытым вопрос как поступить с TRadioGroup.
Вот что я попытался сделать:

Код:
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
RadioGroup1.Enabled:=false;
//Form1.SetFocus;
RadioGroup1.Enabled:=true;
Строку Form1.SetFocus можно раскомментировать, но ничего не изменяется.


Остается 2 вопроса.

1-ый: если пользователь повторно выбирает тот же вариант,
событие OnClick (RadioGroup1Click) почему-то не возникает,
и поэтому окаймовка снова появляется.

2-ой: при OnMouseDown также появляется окаймовка,
которая исчезает только после события OnClick (RadioGroup1Click).
А хотелось бы, чтобы окаймовки вообще не было.
Но для TRadioGroup событие OnMouseDown не предусмотрено.
Что делать?
Hintman вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
убрать пробелы zetrix Microsoft Office Excel 9 10.03.2009 10:03
Убрать символы. GreenDan Помощь студентам 3 31.08.2008 13:21
Как убрать/уничтожить с формы компонент TImage? ZhekON Общие вопросы Delphi 11 11.03.2008 17:28
Как убрать компонент SeRhy Помощь студентам 2 29.10.2007 17:29
Убрать из uses Маркъ Общие вопросы Delphi 3 03.02.2007 11:44