Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Мастера DELPHI. Новости мира компонент, FAQ, статьи...


Информационный Канал Subscribe.Ru

Ежедневная рассылка сайта Мастера DELPHI

DELPHIMASTER.ru

Выпуск от 06.09.04 09:18

Лучшее из нашего FAQ   |x|
Как перемещать компонент мышкой во время работы программы "runtime"?
Перехватить событие OnMouseDown, запомнить x и y координты курсора мыши. Отслеживать движение мыши по событию OnMouseMove и перемещать компонент вслед за курсором мыши до тех пор пока не произойдет событие OnMouseUp. В примере показано перемещение компонента TButton. Перемещение начинается, когда пользователь "берет" TButton мышью, удерживая нажатой клавишу "Сontrol".
Пример:

type
   TForm1 = class(TForm)
       Button1: TButton;
       procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
               Shift: TShiftState; X, Y: Integer);
       procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
               Y: Integer);
       procedure Button1MouseUp(Sender: TObject; Button:
               TMouseButton; Shift: TShiftState; X, Y: Integer);
   private
       {Private declarations}
   public
       {Public declarations}
       MouseDownSpot : TPoint;
       Capturing : bool;
end;

var
   Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
                   Shift: TShiftState; X, Y: Integer);
begin
   if ssCtrl in Shift then
   begin
       SetCapture(Button1.Handle);
       Capturing := true;
       MouseDownSpot.X := x;
       MouseDownSpot.Y := Y;
   end;
end;

procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,  Y: Integer);
begin
   if Capturing then
   begin
       Button1.Left := Button1.Left - (MouseDownSpot.x - x);
       Button1.Top := Button1.Top - (MouseDownSpot.y - y);
   end;
end;

procedure TForm1.But! ton1Mous eUp(Sender: TObject; Button:
           TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
   if Capturing then
   begin
       ReleaseCapture;
       Capturing := false;
       Button1.Left := Button1.Left - (MouseDownSpot.x - x);
       Button1.Top := Button1.Top - (MouseDownSpot.y - y);
   end;
end;



Источник: Дельфи. Вокруг да около.

Комментарий от "Владимир Парфишин" (Pvs@onego.ru) и "Константин Кочедыков" AKA Angel (angel999@mail.ru)
Еще с первой Delphi известен способ перемещения с помощью "магического
номера":
 
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
button1.perform(WM_SYSCOMMAND,$F012,0);
end;

Прав да, работает только с наследниками TWinControl, т.е. label таким способом не потаскаешь :-(

»»» Прислать свои комментарии

Обсуждается в конференциях   |x|
  • Вопрос по триггерам
    При создании расходной накладной ,создается временная таблица списка итуда забивают товар. При этом в этой таблице ...
  • Версия 1.94
    Новости от 5 сентября 2004 года KOL and MCK news (v1.94): [-]KOL: исправлена функция TrimRight (asm-версия), снова. ...
  • Нажатие кнопки в окне другого приложения
    Тут возникла необходимость автоматизировать setup сторонней проги т.. чтобы после запуска все ответы в InstalShield ...
  • JBuilderX & Delphi
    Здравствуйте, Мастера.Возникла следующая проблема.В JBuilderX создаю Enterprise JavaBeans.Чтобы установить его на ...
  • как поставить защиту на свою прог-му?
    Привет! Кто-нибудь занимался установкой зашиты на свою программу, подскажите как лучше это сделать. Хочу сделать из ...
  • TImgView32 и слои
    Доброго времени суток. Есть TImgView32. У него есть свойство Layers. Я пробую получить битмап из заданного слоя так: ...
  • OpenGL
    Нет ли у кого исходников (литературы) для реализации модели кубика Рубика на OpenGl? Просто я в OpenGl не бумбум. ...
У нас большой выбор статей   |x|
Кратко об истории и характеристиках стандартов MPEG
Статья будет интересна тем, кто интересуется методами и форматами сжатия аудиоданных.
Новинки книжного рынка   |x|
Создание компонентов в среде Delphi. Руководство разработчика (+CD-ROM)
Книга посвящена созданию компонентов на языке Object Pascal, предназначенных для использования в средах разработки фирмы Borland. Описываются особенности реализации ООП в Object Pascal и библиотеки классов VCL и CLX. Показывается, как расширять имеющиеся компоненты и писать собственные компоненты "с нуля". Рассматриваются невизуальные, графические и оконные компоненты, а также компоненты для работы с СУБД. Представлен процесс создания редакторов компонентов и их свойств, широко применяемых в Delphi. Даны практические рекомендации по распространению готовых компонентов и встраиванию их в среду разработки, по написанию справочной системы для разработанных компонентов, по расширению возможностей IDE Delphi. Приведено подробное описание малодокументированной возможности Object Pascal, связанной с получением и использованием информации времени выполнения (RTTI). Изложение сопровождается большим количеством примеров самых различных типов компонентов. На прилаг аемом компакт-диске содержатся все рассмотренные в книге примеры.
Автор: Михаил Голованов, Евгений Веселов
Опрос населения :)
Как вы нашли наш сайт?
»»» Поисковая система
»»» Рассылка
»»» Ссылка с другого сайта
»»» Через каталог сайтов
»»» Друг посоветовал
»»» Случайно
Для души

Хокку дня
У статуи будды Амиды
Валяется пьяная гейша
Монах проходил-и тот не сдержался...

Афоризмы
Чтобы сохранить мир в семье, необходимо терпение, любовь, понимание и по крайней мере два телевизора (Некий мичиганский политик)

Фраза дня
Скажи мне кто я, и я скажу тебе кто ты.

Дурацкие законы (информация предоставлена сайтом kurilka.com)
В Англии самоубийство расценивается как тяжкое преступление. (К сожалению, нам не удалось выяснить, какое за это предусмотрено наказание - наверное, смертная казнь.)
В городе Томбсоун в штате Аризона (США) мужчинам и женщинам старше 18-ти лет запрещено улыбаться, если у них отсутствует более одного переднего зуба.

И на закуску коротенький анекдот
- Товарищ водитель, почему ваша пассажирка не пристегнута ремнями безопасности?
- Так это же моя тёща!!!

Фотоприколы.
Начните день с хорошего настроения!
http://www.delphimaster.ru/cgi-bin/prikol.pl?id=23681640


На этом позвольте откланяться и пожелать вам удачного дня.
Искренне ваш, Алексей (merlin@delphimaster.ru)

Добро пожаловать на сайт -= Мастера DELPHI =- 

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.mdelphi
Отписаться

В избранное