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

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


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

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

DELPHIMASTER.ru

Выпуск от 02.05.04 09:05

Кое-что из нашей кладовки   |x|
Лучшее из нашего 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|
  • Графический редактор
    Люди!!!!!!!!!!!!!!!! Помогите накатать в Delphi графический редактор( типа Paint'a)пожалуйсиа поподробнее, а то я ...
  • _NewControl
    Изучаю исходник KOLStGrd и просто не понимаю. код-то работает, сам подобное писывал... вот строка: TStGrd = object(...
  • Как выгрузить TMemoryStream в PChar?
    Делаю так, _MemoryStream.Position := 0; SetLength(_ReadBuf, _MemoryStream.Size); _MemoryStream.Read(_ReadBuf, ...
  • Регистрация кодека в системе
    Как зарегистрировать аудиокодек (файл с расширением .acm) в системе программно? Из вызовов есть только DriverProc (то ...
  • Хэндл
    Как определить хэндл объекта под курсором?
  • Оптимизация сканирования локальной сети
    Знатоки подскажите возможно оптимизировать скорость сканирования компов в сети? Есть вот такой способ (взят с этого ...
  • xpath
    Прочитал статью "Применение XML в реляционных БД для хранения объектов сложной структуры" (http://www.ibase....
У нас большой выбор статей   |x|
Примеры использования Drag and Drop для различных визуальных компонентов
Перетаскивание информации с помощью мыши стало стандартом для программ, работающих в Windows. Часто это бывает удобно и позволяет добиться более быстрой работы. В данной статье я постарался показать максимальное количество примеров использования данной технологии при разработке приложений в среде Delphi.
Новинки книжного рынка   |x|
Программирование в среде Delphi 7. Самоучитель
Книга предназначена для самостоятельного изучения последней версии популярной среды разработки программ - Delphi 7. Ее главная задача состоит в том, чтобы помочь новичкам освоиться в сложной структуре современных инструментальных средств программирования и приобрести навыки, необходимые для дальнейшей успешной работы. В книге рассматриваются основы базового языка Pascal, особенности интерфейса Delphi и методы программирования в этой среде.

Благодаря лаконичному, понятному изложению материал книги будет доступен широкому кругу читателей. Книга снабжена многочисленными врезками, а также тематическими контрольными вопросами, способствующими усвоению прочитанного.

Автор: Г. В. Галисеев
Другие сайты о DELPHI   |x|
Большой Delphi FAQ
Большой Delphi FAQ. Здесь есть практически все вопросы и ответы на них, встречающиеся по Delphi. FAQ разделен на категории.Есть удобный поиск.Ежедневное обновление! Добро пожаловать в раздел - ...

» Оценка сайта: 3
Опрос населения :)
Какой сайт по Delphi лучший?
»»» Королевство Дельфи
»»» Этот сайт
»»» Дельфи. Вокруг да около
»»» Другой
»»» Чем больше, тем лучше!
Для души

Хокку дня
Там среди ветвей
Тень вороны поплыла,
Темный лист упал.

Афоризмы
Затруднение чаще всего - дитя лени....

Фраза дня
В жаркую пору от мужчин отпочковываются пиджаки и галстуки.

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

И на закуску коротенький анекдот
- Ты уже 10 лет женат, и ни разу не изменил! Почему?
- Ну... на то есть две причины...
- Наверное любовь и верность?
- Нет, лень и порносайты!

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


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

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


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное