Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.10.02;
Скачать: CL | DM;

Вниз

Самописный частичный аналог TButtonGroup   Найти похожие ветки 

 
Германн ©   (2011-05-27 01:44) [0]

Подскажите как реализовать перемещение TButton мышкой в пределах TPanel так чтобы в момент отпускания кнопки знать её координаты.
Д2007. WinXP и выше.


 
han_malign   (2011-05-27 17:18) [1]


> перемещение TButton мышкой

- а на клик она должна реагировать?
Если нет - см. WM_NCHITTEST (кажется HTCAPTION - не помню уже), и TWinControl.WindowProc(если наследоваться лень)...
Ну и WM_SIZE, OnMouseUp  - до кучи...


 
Rouse_ ©   (2011-05-27 22:48) [2]


>  чтобы в момент отпускания кнопки знать её координаты

Вопрос прочитал, но не понял. Рект в момент отпускания кнопки мыши снять нельзя?


 
Германн ©   (2011-05-27 22:53) [3]


> Вопрос прочитал, но не понял. Рект в момент отпускания кнопки
> мыши снять нельзя?

Если двигать так:
Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);,
то события отпускания не получаю. А по другому двигать не знаю как.


 
Германн ©   (2011-05-28 01:22) [4]


> han_malign   (27.05.11 17:18) [1]

Либо у меня руки кривые, либо что-то еще не так, но мой потомок TButton сообщение WM_NCHITTEST не получает.


 
Германн ©   (2011-05-28 02:41) [5]

Ну раз конкретный вопрос не нашел ответа, тогда сформулирую задачу.
На панели нужно в рантайме создать несколько кнопок. Кнопки создаются через PopupMenu или через MainMenu. Но нужно иметь возможность их перемещать. Панель с кнопками может быть расположена либо "снизу", либо сбоку окна.
Этот дизайнерский вопрос решается в конфигураторе.
Разместить панель я могу. Создать кнопки я тоже могу. Но заказчик просит дать возможность ему самому выбирать как размещать кнопки  внутри панели.


 
Германн ©   (2011-05-28 03:05) [6]

Да. Забыл сказать. Вопрос размещения кнопок реализуется в одной программе. А используются эти кнопки в другой.


 
Palladin ©   (2011-05-28 09:14) [7]

а почему именно TPanel? есть предназначенные для этого TToolBar, TCoolBar которые позволяют себя конфигурировать до посинения, в том числе и перетаскивать


 
Leonid Troyanovsky ©   (2011-05-28 09:18) [8]


> Германн ©   (28.05.11 02:41) [5]

http://groups.google.com/group/fido7.ru.delphi.chainik/msg/fa26f6a57ab5bc05

--
Regards, LVT.


 
Германн ©   (2011-05-28 21:47) [9]


>  Palladin ©   (28.05.11 09:14) [7]
>
> а почему именно TPanel? есть предназначенные для этого TToolBar,
>  TCoolBar

TToolBar, TCoolBar имеют слишком много специфичного, что мешает.


 
Германн ©   (2011-05-28 21:48) [10]


> Leonid Troyanovsky ©   (28.05.11 09:18) [8]
>

Спасибо, попробую применить.


 
Германн ©   (2011-05-29 01:54) [11]


> Leonid Troyanovsky ©   (28.05.11 09:18) [8]
>

То что надо! Спасибо.


 
Германн ©   (2011-05-29 05:24) [12]


> Leonid Troyanovsky ©   (28.05.11 09:18) [8]

Леонид, а не будет с моей стороны слишком большой наглостью спросить вас - "А нет ли в вашем архиве столь же простого примера от Питера Белова (или ещё от кого-нибудь, уважаемого) на тему "Как изменить в рантайме размеры контрола мышкой"?"


 
Германн ©   (2011-06-08 01:56) [13]


> Германн ©   (29.05.11 05:24) [12]
>
>
> > Leonid Troyanovsky ©   (28.05.11 09:18) [8]
>
> Леонид, а не будет с моей стороны слишком большой наглостью
> спросить вас - "А нет ли в вашем архиве столь же простого
> примера от Питера Белова (или ещё от кого-нибудь, уважаемого)
> на тему "Как изменить в рантайме размеры контрола мышкой"?
> "

Хм. Леонид. Неужели вам было так трудно сказать мне, что я дурак и неуч и вообще чукча! :(


 
KilkennyCat ©   (2011-06-08 02:29) [14]


> Германн ©   (27.05.11 22:53) [3]

я получал событие.
к тому же, таким макаром и размеры можно изменять, что удобно.


 
Германн ©   (2011-06-08 02:31) [15]


> KilkennyCat ©   (08.06.11 02:29) [14]
>
>
> > Германн ©   (27.05.11 22:53) [3]
>
> я получал событие.
> к тому же, таким макаром и размеры можно изменять, что удобно.
>

Ты об чём собственно, Костя?


 
KilkennyCat ©   (2011-06-08 02:38) [16]

procedure TForm1.MouseDown(..);
begin
 ReleaseCapture;
 perform(WM_SysCommand, $F012, 0);
end;


я сие использовал. замена $F012 (перемещение) на $F013..$F020 (непомню точно какие) вызывает изменение размеров контрола. и положение я нормально отслеживал, чтоб за границы не утащить. вроде, ничего заумного не делал.


 
Германн ©   (2011-06-08 02:57) [17]


> KilkennyCat ©   (08.06.11 02:38) [16]
>
> procedure TForm1.MouseDown(..);
> begin
>  ReleaseCapture;
>  perform(WM_SysCommand, $F012, 0);
> end;
>
> я сие использовал. замена $F012 (перемещение) на $F013..
> $F020 (непомню точно какие) вызывает изменение размеров
> контрола. и положение я нормально отслеживал, чтоб за границы
> не утащить. вроде, ничего заумного не делал.

Не хочу комментировать данное твоё высказывание.
Ты пойди и почитай по ссылке данной LVT.
Там никаких  "волшебных" перформов нет!


 
KilkennyCat ©   (2011-06-08 10:17) [18]

Перформ не волшебный. Номер - магический.
только 2 строчки мне больше нравятся - меньше разбираться, почему что-то не так, да еще в чужом коде.


 
Германн ©   (2011-06-09 02:36) [19]


> меньше разбираться, почему что-то не так, да еще в чужом
> коде.
>

Эээ. Разбираться в коде Питера Белов - уже значит "разбираться в чужом коде"?


 
KilkennyCat ©   (2011-06-09 07:27) [20]


> Эээ. Разбираться в коде Питера Белов - уже значит "разбираться
> в чужом коде"?

Слепая вера до добра не доведет-с...


 
Германн ©   (2011-06-10 01:48) [21]


> Слепая вера до добра не доведет-с...

Т.е. и Дельфи не стоит доверять? И перед использованием любой VCL-функции надо изучить её исходники?


 
KilkennyCat ©   (2011-06-10 01:56) [22]

А тебе там не встречались баги?
Но конечно, есть разумные пределы... а то так можно и транзисторы в процессоре проверять на количество и качество дырок :)


 
Германн ©   (2011-06-10 02:23) [23]


> Но конечно, есть разумные пределы... а то так можно и транзисторы
> в процессоре проверять на количество и качество дырок :)

Вот и я про то же. :)
Коду от ПБ я доверяю примерно так же как и коду в VCL.



Страницы: 1 вся ветка

Текущий архив: 2011.10.02;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.008 c
2-1307943465
Gu
2011-06-13 09:37
2011.10.02
Инициализация application в dll


2-1308015939
vasja666
2011-06-14 05:45
2011.10.02
sql запрос дата


2-1307290562
IPranker
2011-06-05 20:16
2011.10.02
Столкновения прямоугольников.


15-1307087801
Dennis I. Komarov
2011-06-03 11:56
2011.10.02
Воду заказывали?


2-1308121329
mefodiy
2011-06-15 11:02
2011.10.02
Разница между TIdAttachment и TIdAttachmentFile