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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2011, 20:58   #1
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
Вопрос Как програмно снять выделение с кнопки

Собственно вопрос в названии темы.
Сам я пробовал использовать
Код:
SendMessage(Button1.Handle, CM_FOCUSCHANGED, ... , ... );
вот только я не знаю какие параметры посылать.
[add]
Может как по другому можно?
Что подскажите?
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 23.02.2011, 21:21   #2
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Код:
 SendMessage(Button1.Handle, BN_KILLFOCUS, 0, 0);
но ет работает только если она имеет стиль BS_NOTIFY
вот если кто нибудь подскажет как установить кнопке такои стиль, можеш воспользоваца етим

и вот можеш почитать все о кнопках
http://vla0760.narod.ru/help32/buttont_gen.html
VirusN13

Последний раз редактировалось ArtGrek; 23.02.2011 в 21:36.
ArtGrek вне форума Ответить с цитированием
Старый 23.02.2011, 22:18   #3
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

Можно еще просто фокус другому компоненту передать... Component.SetFocus
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/
VadikV вне форума Ответить с цитированием
Старый 23.02.2011, 22:27   #4
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
Сообщение от VadikV Посмотреть сообщение
Можно еще просто фокус другому компоненту передать... Component.SetFocus
нужно именно снять
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 24.02.2011, 08:24   #5
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

Если я с кнопки передам фокус на другую, она останется выделенной...
This world will never be What I expected (c)

Последний раз редактировалось misher; 24.02.2011 в 20:19.
misher вне форума Ответить с цитированием
Старый 25.02.2011, 19:14   #6
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

Так что, никто не знает как снять выделение с кнопки?
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 25.02.2011, 23:28   #7
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Может быть использовать кнопку без фокуса, например SpeedButton?
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 26.02.2011, 12:20   #8
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

Цитата:
Может быть использовать кнопку без фокуса, например SpeedButton?
Работает, спасибо
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 26.02.2011, 16:46   #9
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Немного поясню
1
TSpeedButton - не является потомком TWinControl => не может иметь фокус впринципе. По сути - он искуственно нарисованный элемент. Его рисует приложение, а не система.

2
Можно это сделать и с TWinControl.
На сколько я понял, кроме диактивации контрола (стяли жирную рамочку) нужно еще снять фокус (стяли пунктирную рамочку).
Короче как-то так
Код:
procedure KillFocus1 (AControl: TWinControl);
begin
  SendMessage (AControl.Handle, WM_KILLFOCUS, 0, 0);
  SendMessage (AControl.Handle, CM_FOCUSCHANGED, 0, 0);
  AControl.TabStop := False;
  AControl.ControlState := AControl.ControlState + [csFocusing]; // Он всю жизнь будет получать фокус, да так его и не получит :)
end;
или так
Код:
procedure KillFocus2 (AControl: TWinControl);
begin
  GetParentForm(AControl).ActiveControl := nil;
  AControl.TabStop := False;
  AControl.ControlState := AControl.ControlState + [csFocusing]
end;
Передовать фокус контролу всетаки можно (SetFocus), но визуально это никак не отображается.

Последний раз редактировалось Sibedir; 26.02.2011 в 23:00.
Sibedir вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как снять выделение с текста в поле ValueListEditor? befame Общие вопросы Delphi 2 10.07.2009 10:48
как называются кнопки(програмно)? blackstersl Общие вопросы Delphi 5 03.05.2009 16:40
Снять выделение с ComboBox nemaster21 Компоненты Delphi 5 06.06.2008 13:00
Снять выделение Михаил Юрьевич Общие вопросы Delphi 2 17.05.2008 21:44
Как програмно создавать кнопки лэйблы и другие элементы Zaher Помощь студентам 2 13.05.2008 08:59