Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.02.2010, 15:16
Аватар для San
San San вне форума
Прохожий
 
Регистрация: 17.11.2009
Сообщения: 4
Репутация: 10
Стрелка кнопки

Нужно чтобы при наведении отображалась вторая кнопка при нажатии третья
Изображения
Тип файла: png 68.png (2.4 Кбайт, 41 просмотров)

Последний раз редактировалось San, 12.02.2010 в 19:14.
Ответить с цитированием
  #2  
Старый 14.02.2010, 21:51
Mostovoi Mostovoi вне форума
Прохожий
 
Регистрация: 22.12.2009
Сообщения: 8
Репутация: 10
По умолчанию

Ну так обрабатывай события. онМаусМув, онКлик (или онМаусДаун)
Ответить с цитированием
  #3  
Старый 15.02.2010, 10:29
Аватар для Ultras
Ultras Ultras вне форума
Начинающий
 
Регистрация: 09.02.2010
Адрес: Россия / Ставрополь
Сообщения: 138
Репутация: 475
По умолчанию

да, эти события появились по-моему начиная с Delphi 6, помню в Delphi 5 самому приходило их дописывать в TLabel и т.д.

P.S.: Mostovoi, а вас случаем не Дмитрий зовут?

Последний раз редактировалось Ultras, 15.02.2010 в 10:46.
Ответить с цитированием
  #4  
Старый 15.02.2010, 11:57
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

А что это за кнопки???
Если обычные 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  
Старый 15.02.2010, 22:23
Аватар для Ultras
Ultras Ultras вне форума
Начинающий
 
Регистрация: 09.02.2010
Адрес: Россия / Ставрополь
Сообщения: 138
Репутация: 475
По умолчанию

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  
Старый 15.02.2010, 22:44
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Еще немного дописать класс, предложенный Ultras.
Так чтобы он принимал три картинки и будет полный шоколад
Ответить с цитированием
  #7  
Старый 16.02.2010, 01:02
Аватар для Ultras
Ultras Ultras вне форума
Начинающий
 
Регистрация: 09.02.2010
Адрес: Россия / Ставрополь
Сообщения: 138
Репутация: 475
По умолчанию

Цитата:
Сообщение от s0Creator
Еще немного дописать класс, предложенный Ultras.
Так чтобы он принимал три картинки и будет полный шоколад
ну, если автору темы это ещё нужно, пусть стукнет в аси: 815979 или 418018483 помогу, чем смогу.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:03.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025