imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 27.08.2004, 20:58     # 1
f00rd
::VIP::
 
Аватар для f00rd
 
Регистрация: 11.06.2003
Адрес: Там...
Сообщения: 236

f00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форуме
Связь двух TSpeedButton в Delphi

Может, конечно, я не очень понятно выразился в сабже, но нужно следующее:
есть два TSpeedButton'a и я хочу сделать так, чтобы при наведении мышки на первый, второй тоже перерисовывался так, как буд-то над ним мышь... Кнопки плоские, т.е. свойство Flat=true

Последний раз редактировалось f00rd; 27.08.2004 в 21:00.
f00rd вне форума  
Старый 27.08.2004, 21:46     # 2
Merlin Cori
Moderator
 
Аватар для Merlin Cori
 
Регистрация: 29.04.2002
Адрес: Moscow
Пол: Male
Сообщения: 2 980

Merlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБог
Merlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБогMerlin Cori СуперБог
А по событию Onmouseover над первой, кто тебе мешает менять свойства второй кнопки?
__________________
Есть две бесконечные вещи, Вселенная и глупость.
Впрочем, на счет Вселенной, я не уверен



Вклад IMHO.WS в медицину и науку
Присоединяйтесь!!!!!
Merlin Cori вне форума  
Старый 27.08.2004, 22:03     # 3
f00rd
::VIP::
 
Аватар для f00rd
 
Регистрация: 11.06.2003
Адрес: Там...
Сообщения: 236

f00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форуме
Merlin Cori
а подскажи свойство, которое делает то, что мне нужно, я не нашел...
f00rd вне форума  
Старый 28.08.2004, 12:45     # 4
dyr_farot
Advanced Member
 
Регистрация: 23.08.2003
Сообщения: 442

dyr_farot Нимб уже пробиваетсяdyr_farot Нимб уже пробивается
это не свойство это действие
когда мыш проходит над TSpeedButton вызывается ее OnMouseMove
в нем и перерисовуй вторую кнопку: Repaint()
dyr_farot вне форума  
Старый 30.08.2004, 15:51     # 5
f00rd
::VIP::
 
Аватар для f00rd
 
Регистрация: 11.06.2003
Адрес: Там...
Сообщения: 236

f00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форуме
dyr_farot

мда... все, что ты сказал, я знаю и так.... вызывать Repaint бестолку... надо с кнопкой что-то сделать, а потом Repaint.
f00rd вне форума  
Старый 30.08.2004, 17:47     # 6
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
У кнопки может быть всего два состояния: enable:=True и enable:=False; Соответственно кнопка юзает на эти два состояния разные иконки, или автоматом переводит в серую цветную при дефолтных параметрах. Если хочешь рулить изображениями на кнопках, то вешай два ImageList в стакане свойств на эти два случая и рули индексами иконок в обработчике события OnMouseOver...
/7y3uK вне форума  
Старый 30.08.2004, 20:22     # 7
f00rd
::VIP::
 
Аватар для f00rd
 
Регистрация: 11.06.2003
Адрес: Там...
Сообщения: 236

f00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форуме
ууу, меня не понимают =(
См. прицепленные рисунки......

там над кнопкой "Mouse Over" есть мышь, а над кнопкой "And Not" - нету... вот я хочу, чтобы было как с кнопкой "Mouse Over" только без навода мыши...
Изображения
Тип файла: jpg Untitled-1 copy.jpg (10.7 Кбайт, 6 просмотров - Кто скачивал? )
f00rd вне форума  
Старый 31.08.2004, 17:04     # 8
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
[QUOTE=f00rd]ууу, меня не понимают =(
[QUOTE]

ХЕ... ах вот ты какой, цветочек аленькой...

тут придеться поступить следующим образом: на событие над кнопкой нужно прогенерить событие (SendMessage по-моему или что-то вроде этого), тут уже смотри хелп по API.
/7y3uK вне форума  
Старый 31.08.2004, 17:31     # 9
dyr_farot
Advanced Member
 
Регистрация: 23.08.2003
Сообщения: 442

dyr_farot Нимб уже пробиваетсяdyr_farot Нимб уже пробивается
тю... так бы и сказал
за показанное отвечает свойство Flat
соответственно при вхождении мыши в клиентскую область одной кнопки ( TrackMouseEvent() ) изменяй это свойство во второй кнопке
dyr_farot вне форума  
Старый 31.08.2004, 17:32     # 10
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
f00rd
Напиши в событии MouseMove 1-й кнопки SpeedButton1 следующее:
SpeedButton2->Perform(CM_MOUSEENTER,0,0);
и вторая кнопка подымится

Правда возникнет другая проблемка: поскольку в TSpeedButton есть только событие MouseMove, но нету MouseEnter и MouseLeave, то сложно будет отследить момент выхода мышки из контрола, чтобы погасить поднятую кнопку с помощью сообщения CM_MOUSELEAVE. Правда и это можно обойти, но достаточно геморно и уже другая история...
ЕЖ вне форума  
Старый 31.08.2004, 19:45     # 11
spleenJack
Member
 
Аватар для spleenJack
 
Регистрация: 14.12.2003
Адрес: Дубна
Сообщения: 201

spleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царстве
Ничего сложного тут нету - надо создать новый компонент, предка от TSpeedButton для отлова CM_MOUSEENTER и CM_MOUSELEAVE.

Первая кнопка должна быть TwiceSpeedButton, а вторая обычный SpeedButton. Если хочешь, это можно легко исправить. Свойство SecondButton - твоя вторая кнопка.

Думаю разберешься, че с этим делать - будут вопросы, пиши.

Код:
unit TwiceSpeedButton;

interface

uses
  Classes, Controls, Buttons, Messages;

type
  TTwiceSpeedButton = class(TSpeedButton)
  private
    FSecondButton: TSpeedButton;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  published
    property SecondButton: TSpeedButton read FSecondButton write FSecondButton;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('AriX', [TTwiceSpeedButton]);
end;

{ TTwiceSpeedButton }

procedure TTwiceSpeedButton.CMMouseEnter(var Message: TMessage);
begin
  inherited;
  if (FSecondButton <> nil) and (FSecondButton.Flat) then
    FSecondButton.Perform(CM_MOUSEENTER, 0, 0);
end;

procedure TTwiceSpeedButton.CMMouseLeave(var Message: TMessage);
begin
  inherited;
  if (FSecondButton <> nil) and (FSecondButton.Flat) then
    FSecondButton.Perform(CM_MOUSELEAVE, 0, 0);
end;

end.
spleenJack вне форума  
Старый 31.08.2004, 19:58     # 12
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
AriX
Я, собственно, и имел ввиду примерно то, что ты написал. Просто это создание дополнительного отнаследованного компонента, которое может быть не всегда желательным
ЕЖ вне форума  
Старый 31.08.2004, 19:58     # 13
f00rd
::VIP::
 
Аватар для f00rd
 
Регистрация: 11.06.2003
Адрес: Там...
Сообщения: 236

f00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форуме
Ураааа! работает
ЁЖ, спасибо =)

Цитата:
Сообщение от dyr_farot
тю... так бы и сказал
извеняюсь =) в следующий раз буду пытаться выражаться более точно...

Всем спасибо....
f00rd вне форума  
Старый 31.08.2004, 20:44     # 14
spleenJack
Member
 
Аватар для spleenJack
 
Регистрация: 14.12.2003
Адрес: Дубна
Сообщения: 201

spleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царстве
ЁЖ
да я знаю, что ты имел ввиду
по-моему так проще всего.. если есть способ лучше - самому хотелось бы узнать..
f00rd
ничего плохого в создании своего компонента нету.. почти в каждой хотя бы немного серьезной программе приходится это делать - так как по другому нельзя.
spleenJack вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 17:39.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.