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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2014, 01:15   #21
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Во первых зачем копировать, если можно присвоить обработчик?
Во вторых чем дальше тем ещё кривее. Реально проще написать свой контрол, потомок Image, и добавить одну единственную процедуру обработки выхода мыши за пределы Image. И кстати есть ещё третий вариант. В интернете полно исходников самых разных кнопок, в том числе и с возможностью запиливать на них Image.
XE5 вне форума Ответить с цитированием
Старый 30.03.2014, 02:07   #22
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Сообщение от XE5 Посмотреть сообщение
По решению.
...
Вариантов решения два, и оба описаны выше по теме. Если версия делфи критична, то это свой контрол, написанный на базе исходников контролов от XE, если не критична, то соответственно исполнение программы на XE и выше.
Вроде как на киберфоруме один автор (достаточно уважаемый) в ответ ТС'у привел код который работает в Д7 и без написания своего контрола хоть на базе, хоть без базы. Я его проверить не смог ввиду полной "пересборки" своего домашнего компьютера. Я много раз пытал ТС проверил ли он тот код у себя, но в ответ тишина.
northener вне форума Ответить с цитированием
Старый 30.03.2014, 12:06   #23
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну вот без своего контрола, но не удобно - на каждой форме при использовании переопределять класс TImage
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TImage = class(ExtCtrls.TImage)
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  end;
  TForm1 = class(TForm)
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
    b1,b2,b3: TBitmap;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var InImage,Down: Boolean;

procedure TImage.CMMouseEnter(var Message: TMessage);
begin
  InImage:=True;
  if not Down then Form1.Image1.Picture.Assign(Form1.b3);
  inherited;
end;

procedure TImage.CMMouseLeave(var Message: TMessage);
begin
  InImage:=False;
  if not Down then Form1.Image1.Picture.Assign(Form1.b1);
  inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  b1:=TBitmap.Create;
  b1.LoadFromFile('e:/b1.bmp');
  b2:=TBitmap.Create;
  b2.LoadFromFile('e:/b2.bmp');
  b3:=TBitmap.Create;
  b3.LoadFromFile('e:/b3.bmp');
  InImage:=False;
  Down:=False;
  Image1.Picture.Assign(b1);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  b1.Free;
  b2.Free;
  b3.Free;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  Down:=True;
  Image1.Picture.Assign(b2);
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  Down:=False;
  if InImage then Image1.Picture.Assign(b3) else Image1.Picture.Assign(b1);
end;

end.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 30.03.2014 в 12:09.
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формы С# . Событие MouseMove Serg94 Помощь студентам 3 04.10.2012 09:49
MouseMove Ko$ Помощь студентам 0 14.11.2011 16:26
Класс и MouseMove ZBEP Общие вопросы Delphi 7 07.04.2011 23:02
MouseMove muinmy Помощь студентам 1 28.09.2010 18:05
Реализовать событие Image? Serg-Grin Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 21.01.2010 23:55