Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 140

/ вопрос открыт /

Здравствуйте, эксперты!
Как реализовать перетаскивание мышью компонента
по форме(например Button)
След образом кликнул и пока не отпускаешь кнопка
перемещается вслед за курсором по форме(других компонент нет)

Приложение:
  1.  
  2.  
  3.  


Anderson N.N Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Anderson N.N (статус: 2-ой класс)
Вопрос отправлен: 28 ноября 2008, 22:25
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Anderson N.N!
Дергается/отстает/мерцает только по одной причине - неверно просчитываются координаты. Часто забывают, что они отсчитываются относительно кнопки. Но может и относительно формы.
Вот здесь http://delphi.about.com/library/weekly/aa102505a.htm есть статья (правда на английском), где рассказано на эту тему. Если с английским вообще туго, то на этой странце можно найти ссылку на архив с примером (http://delphi.about.com/library/weekly/code/src102505.zip)

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 29 ноября 2008, 00:19


Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 1 декабря 2008, 10:52; участников в обсуждении: 3.
Gooddy

Gooddy (статус: 3-ий класс), 29 ноября 2008, 11:23 [#1]:

ща я быркенько сделаю. для того чтобы мерцание убрать можно Form1.DoubleBuffered:=true
Чисти код! Чисти код! Чисти код!
Вадим К

Вадим К (статус: Академик), 29 ноября 2008, 11:36 [#2]:

to Failure
Зачем лечить то, что не надо лечить, а просто надо написать красиво и правильно? Это как Application.ProcessMessage для лечение торможения а не юзанья потоков.
Галочка "подтверждения прочтения" - вселенское зло.
Gooddy

Gooddy (статус: 3-ий класс), 29 ноября 2008, 11:37 [#3]:

сори так тока для канвы. Вадим К. правильно сказал - не верно просчитываются координаты
Чисти код! Чисти код! Чисти код!
Gooddy

Gooddy (статус: 3-ий класс), 29 ноября 2008, 11:42 [#4]:

2Вадим К
Да. некоторым незнакомым с потоками скажут на каком нибуть форуме горе-советчики юзать или потоки или строку в цикл вписывать. что они выбирают известно:) можно конечно не использовать потоки, но теряется всё преимущество винды перед досом:) в идеале конечно все тяжёлые процедуры в потоки, и если бы процесс создания и интеграции потоков был проще(куда уж проще только непонятно, ООП паскаля не позволит:)) то думаю все бы так и делали.
Чисти код! Чисти код! Чисти код!
Gooddy

Gooddy (статус: 3-ий класс), 29 ноября 2008, 11:47 [#5]:

кстати. каждый поток может использовать только 1 ядро. поэтому сейчас в приложениях лучше раздваивать потоки и использовать на максимум хотя бы 2 ядра. в идеале 4. а если в будущее смотреть все 8.
Чисти код! Чисти код! Чисти код!
Вадим К

Вадим К (статус: Академик), 29 ноября 2008, 13:03 [#6]:

И опять подмена понятий.
Итак, не поток может использовать один процессор, а операционная среда так не может раздвоить (хотя тут ещё и язык программирования виноват). А вот на уровне процессора можно считать, что любой поток обычно разбивается на кучку маленьких и выполняется в паралель. Называется это дело спариванием и распаралеливанием.
Некоторые ассемблерные команды, если они лежат в нужной последовательности, могут выполняться за один прием. А некоторые команды могут выполнятся паралельно (например один регистр увеличить на два, а второй на три).
Вот по этой причине и не рекомендуется без очень сильной надобности писать ассемблерные вставки. Можно просто написать неверную последовательность и код будет выполняться ужасно медленно.
Это было лирическое отступление:)

Так конечно и не понял, что там ООП паскаля непозволит...

А основная проблема в понимании потоков - это понять то, что поток выполняется паралельно. Для некоторых это очень сложно.
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 1 декабря 2008, 10:52 [#7]:

Может поможет вот
это?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:40
Выполнено за 0.02 сек.