Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.10.02;
Скачать: [xml.tar.bz2];

Вниз

Самописный частичный аналог 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.003 c
15-1307584738
brother
2011-06-09 05:58
2011.10.02
Обновление прошивки в DI-804HV сбросятся ли настройки?


15-1307638058
uniken1
2011-06-09 20:47
2011.10.02
Драйвер под заказ


2-1308231708
@!!ex
2011-06-16 17:41
2011.10.02
TPageControl не получается сделать OwnerDraw


2-1307898394
jobitn@mail.ru
2011-06-12 21:06
2011.10.02
помогите переделать на delphi! горюю


15-1307004281
Term
2011-06-02 12:44
2011.10.02
Установка двух версий делфи на один комп





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский