Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши / 15 сообщений из 15, страница 1 из 1
19.10.2018, 13:15
    #39719928
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
Добрый день.
Ребят, создаю в рантайме на скроллбоксе спидбаттоны)
создаю их сразу же
Код: 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
19.10.2018, 13:23
    #39719931
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перетаскивание кнопки(run-time), вверх-вниз, курсором мыши
19.10.2018 13:15, Tech N9ne пишет:
> Но всё ровно срабатывает onclick.

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

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

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

Не помогло)

zinpubTech N9ne,

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

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

как делал?

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

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

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


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