powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
15 сообщений из 15, страница 1 из 1
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
    #39719928
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Ребят, создаю в рантайме на скроллбоксе спидбаттоны)
создаю их сразу же
Код: pascal
1.
SpeedButon[i].Align := AlTop;


Нужна возможность курсором перетаскивать их вверх вниз, менять местами, короче.
В принципе на mouse move сделал привязку к курсору, и двигаю кнопку.
Двигаю так:
Код: pascal
1.
2.
3.
4.
5.
  if ( GetAsyncKeyState( VK_CONTROL ) <> 0 ) and ( GetAsyncKeyState( VK_LBUTTON ) <> 0 ) then
 begin
   {SensorTag  -   integer, содержит tag кнопки, на которую навёл курсором}
   SBTN[SensorTag].Top := Mouse.CursorPos.Y - form1.top;
 end;


Но по завершению, когда передвинул и отжимаешь кнопку мыши, то срабатывает onClick этой кнопки, за счет того что курсор на нём и кнопка нажата.
Пробовал на время перемещения выставлять SBTN[SensorTag].Enabled := False;
На MouseUp enabled := true;
Но всё ровно срабатывает onclick.
...
Рейтинг: 0 / 0
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
    #39719931
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
19.10.2018 13:15, Tech N9ne пишет:
> Но всё ровно срабатывает onclick.

как только начал тащить, выставь BitButton1.OnClick := nil;
а как закончишь тащить, верни назад BitButton1.OnClic := BitButton1Click;
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
    #39719933
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tech N9ne,

Можно перехватывать WM_NCHITTEST, и передавать ему HTCAPTION...
...
Рейтинг: 0 / 0
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
    #39719939
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий19.10.2018 13:15, Tech N9ne пишет:
> Но всё ровно срабатывает onclick.

как только начал тащить, выставь BitButton1.OnClick := nil;
а как закончишь тащить, верни назад BitButton1.OnClic := BitButton1Click;

Не помогло)

zinpubTech N9ne,

Можно перехватывать WM_NCHITTEST, и передавать ему HTCAPTION...
Ам, можно чутка по подробнее?)
...
Рейтинг: 0 / 0
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
    #39719941
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эх ладно... Придется двигать не левой кнопкой мыши))
сделал на VK_MBUTTON
...
Рейтинг: 0 / 0
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
    #39719942
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
    #39719947
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
19.10.2018 13:32, Tech N9ne пишет:
> Не помогло)

как делал?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
    #39719970
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий19.10.2018 13:32, Tech N9ne пишет:
> Не помогло)

как делал?

на mousedown задавал nil;
на mouseup указывал процедуру онклика
в mousemove двигал кнопку
но не помогло.
Мне кажется из-за того, что срабатывает mouseup в котором присваивается onclick
и только потом срабатывает onclick
...
Рейтинг: 0 / 0
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
    #39719973
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9ne,

мне ведь что бы начать двигать, нужно нажать на кнопку и потянуть.
при отпускании кнопки onclick происходит, потому что я mousedownИЛ её)
по этому пытался дать enabled кнопки false; но опять же, сначала mouseup в котором уже enabled true! И только потом onclick
...
Рейтинг: 0 / 0
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
    #39719975
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу конечно сделать костыль, что бы в MOUSEUP, передавалось :
SetCursorPos() и отвести курсор от кнопки, тогда onclick не сработал бы
Но надеюсь что есть другой вариант))
...
Рейтинг: 0 / 0
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
    #39719981
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь что пишу не одним сообщением. Не привык к форумам, где нет возможности редактировать сообщение.

Если что delphi 7, win 7, кнопки alphaskins. Сторонние компоненты мне не подойдут, интерфейс будет не тот, на который рассчитываю)
...
Рейтинг: 0 / 0
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
    #39720079
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neЕсли что delphi 7, win 7, кнопки alphaskins.
а ты выше описанные советы на стандартных бутонах пробовал?
...
Рейтинг: 0 / 0
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
    #39720092
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокTech N9neЕсли что delphi 7, win 7, кнопки alphaskins.
а ты выше описанные советы на стандартных бутонах пробовал?
Дело не в скинах, я просто не могу правильно придумать перемещение кнопок.
Наверное буду создавать на сроллбоксе панельку и в нее кнопку, align alright
будет возможность таскать панельку вверх вниз, вместе с этой кнопкой
...
Рейтинг: 0 / 0
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
    #39720095
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поставь на форме чекбокс "Режим редактирования".
и всё.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
    #39720116
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно костыль в виде флага "FMoved: TButton" и в OnMove присваивать его кнопке, а в онклик
Код: pascal
1.
2.
3.
4.
5.
if FMoved = Sender then 
begin
  FMoved := nil; 
  Exit;
end;
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]