![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с TSpeedButton'ом [D7]
DelphiLexx © (2006-05-04 13:13:00)Возникла следующая проблема:
На форме лежат два SpeedButton'a, которые объеденены в группу, что даёт возможность при включении одного из них другой выключается. Но как только в MouseDown я помещаю сообщение(ShowMessage), то получается бред, а именно вместо того, чтобы один из них был нажат, а другой отжат, получаем что они оба нажаты. Как с этим бороться исходники прилагаю.
http://www.rsdn.ru:80/File/26841/%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0%20(7).rar
DelphiLexx (2006-05-04 14:56:00) [1]
> Что мешает повесить кнопку на TAction и в OnUpdate у TActionList
> управлять доступностью акшена на основе пустоты текста,
> несохраненных изменений и текущего курса йены на марсе?
Ты имеешь ввиду через Action управлять Enabled'ом кнопки, то мне это не нужно, потому как все кнопки должны быть активны.
Reindeer Moss Eater (2006-05-04 14:39:00) [2]Ну и чего?
Что мешает повесить кнопку на TAction и в OnUpdate у TActionList управлять доступностью акшена на основе пустоты текста, несохраненных изменений и текущего курса йены на марсе?
DelphiLexx (2006-05-04 14:24:00) [3]
> Я бы ее задисэйблил и не парил бы мозги юзеру извращенным
> интерфейсом.
Но не совсем так, мне хотелось чтобы ты не очень обращал на интерфейсные бред, потому как этого бреда нет. В первом своем ответе я не очень хотел в падать в подробности, но придется. Когда выскакивает сообщение "Сохранить изменения?" и пользователь нажимает "ДА", то далее в программе идёь проверка на пустоту текста в редакторе. Если тектс в редакторе не пуст, то изменения сохраняются, и кнопка переключается, иначе же если в редакторе тектс пуст, то выдается сообщение, что "Текст в редакторе не может быть пустым!" и кнопка не переключается.
Reindeer Moss Eater (2006-05-04 14:11:00) [4]и тут выскакивает сообщение "Сохранить изменения?". Как раз-то это сообщение и хранится в MouseDown'e. Если выбрано "НЕТ", то я не должен переключать справочник, если "ДА", то переключение справочника происходит.
То есть если есть изменения и они не сохранены, то на кнопку и не следовало нажимать вообще, так как по твоей логике ничего не должно происходить при этом.
Я бы ее задисэйблил и не парил бы мозги юзеру извращенным интерфейсом.
DelphiLexx (2006-05-04 13:55:00) [5]
> Уйду из первого справочника не мышкой имелось ввиду
Более детально, что нужно сделать:
procedure
TForm1.SpeedButtonClick(Sender: TObject);
//Общий обработчик для 2-х кнопок события OnClick.
var
res: integer;
begin
res := MessageBox(self.Handle, 'Запретить переключение кнопки.', 'Вопрос', MB_YESNO or MB_ICONINFORMATION);
if res = mrYes then
{Тут нужно разместить код запрещающий переключение кнопки}
else if res = mrNo then
//Разрещаем переключение кнопки
end.
DelphiLexx (2006-05-04 13:47:00) [6]
> Уйду из первого справочника не мышкой имелось ввиду
А это что-ли? Нет tab'ом не получится т.к. он заблокирован.
Reindeer Moss Eater (2006-05-04 13:43:00) [7]Уйду из первого справочника не мышкой имелось ввиду
DelphiLexx (2006-05-04 13:42:00) [8]
> А если я табом уйду оттуда?
Откуда ты tab'ом уйдешь?
Reindeer Moss Eater (2006-05-04 13:38:00) [9]А если я табом уйду оттуда?
DelphiLexx (2006-05-04 13:33:00) [10]
> в MouseDown
> это настораживает... почему не в OnClick?
Есть редактор текста текущего справочника. Имеется 2 справочника, кнопки как раз-то отвечают за активизацию текущего справочника. Вот мы подредактировали текст в текущем справочнике, затем переключаемся на другой справочник и тут выскакивает сообщение "Сохранить изменения?". Как раз-то это сообщение и хранится в MouseDown'e. Если выбрано "НЕТ", то я не должен переключать справочник, если "ДА", то переключение справочника происходит.
MBo (2006-05-04 13:20:00) [11]> в MouseDown
это настораживает... почему не в OnClick?