![]() |
|
#1
|
||||
|
||||
![]() Нужно чтобы при наведении отображалась вторая кнопка при нажатии третья
Последний раз редактировалось San, 12.02.2010 в 19:14. |
#2
|
|||
|
|||
![]() Ну так обрабатывай события. онМаусМув, онКлик (или онМаусДаун)
|
#3
|
||||
|
||||
![]() да, эти события появились по-моему начиная с Delphi 6, помню в Delphi 5 самому приходило их дописывать в TLabel и т.д.
P.S.: Mostovoi, а вас случаем не Дмитрий зовут? Последний раз редактировалось Ultras, 15.02.2010 в 10:46. |
#4
|
||||
|
||||
![]() А что это за кнопки???
Если обычные Button, то пробуй так(тут весь юнит формы, на ней 3 кнопки): Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} //Перемещение мыши по форме procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ((X>Button1.Left)and(X<(Button1.Left+Button1.Width))and (Y>Button1.Top) and(Y<(Button1.Top+Button1.Height))) then Button2.Visible := true else Button2.Visible := False; end; //Перемещение мыши по кнопке procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ((X<Button1.Width)and(Y<Button1.Height)) then Button2.Visible := true else Button2.Visible := False; end; //Клик по первой кнопке procedure TForm1.Button1Click(Sender: TObject); begin Button3.Visible := True; end; //Клик по третьей кнопке procedure TForm1.Button3Click(Sender: TObject); begin Button3.Visible := False; end; end. В начале был Бит, потом Байт и только потом появилось Слово... |
#5
|
||||
|
||||
![]() NIch, зачем такие извращения?
давным давно делал такое: Код:
unit UltraComp; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls; type TUButton = class(TButton) private { Private declarations } FOnMouseLeave: TNotifyEvent; FOnMouseEnter: TNotifyEvent; procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; published { Published declarations } property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; end; procedure Register; implementation { TUButton } procedure TUButton.CMMouseEnter(var Message: TMessage); begin if Assigned(FOnMouseEnter) then FOnMouseEnter(Self); end; procedure TUButton.CMMouseLeave(var Message: TMessage); begin if Assigned(FOnMouseLeave) then FOnMouseLeave(Self); end; procedure Register; begin RegisterComponents('UltraSoft', [TUButton]); end; end. потом подключаем этот компонент, кидаем на форму, и юзаем события OnMouseEnter и OnMouseLeave (по аналогии можно сделать для Label, ListBox, ComboBox и т.д.). Для нажатия используем событие OnMouseDown, в нём ставим условие: Код:
if Button = mbLeft then begin //реакция на нажатие левой кнопки end; Последний раз редактировалось Ultras, 27.02.2010 в 03:01. |
#6
|
||||
|
||||
![]() Еще немного дописать класс, предложенный Ultras.
Так чтобы он принимал три картинки и будет полный шоколад ![]() |
#7
|
||||
|
||||
![]() Цитата:
![]() |