Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по TrackBar  (Прочитано 7354 раз)
0 Пользователей и 1 Гость смотрят эту тему.
BlackStar
Постоялец

ua
Offline Offline
Пол: Мужской

WWW
« : 20-05-2008 08:50 » 

Доброго времени суток.

Коллеги, я хочу задать вам вопрос по поводу TTrackBar-а. Дело в том, что при клике на нем ползунок не перемещается сразу к тому месту, где кликнули, а передвигается только чуть-чуть в нужную сторону и всё, и нужно снова кликать. Нет ли какой-нибудь возможности заставить его перемещаться сразу в нужное место?
   И ещё. В силу специфики моего проекта, очень хотелось бы сделать TrackBar как в Фотошопе - полоска и перемещающийся треугольник. Существует ли вобще такой компонент для Delphi?
Записан

Программирование на заказ   C/C++, Delphi, PHP, javascript
zubr
Гость
« Ответ #1 : 20-05-2008 09:30 » 

Цитата
Коллеги, я хочу задать вам вопрос по поводу TTrackBar-а. Дело в том, что при клике на нем ползунок не перемещается сразу к тому месту, где кликнули, а передвигается только чуть-чуть в нужную сторону и всё, и нужно снова кликать. Нет ли какой-нибудь возможности заставить его перемещаться сразу в нужное место?
Переопределить свой класс от TTrackBar, в котором перехватывать сообщения WM_LBUTTONUP, определять позицию курсора и в зависимости от нее устанавливать свойство Position компонента.
Цитата
И ещё. В силу специфики моего проекта, очень хотелось бы сделать TrackBar как в Фотошопе - полоска и перемещающийся треугольник. Существует ли вобще такой компонент для Delphi?
Не знаю. Сторонними компонентами стараюсь не пользоваться. По необходимости пишу свои.
Записан
BlackStar
Постоялец

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 22-05-2008 09:35 » 

Спасибо за совет, но, к сожаленью, это не лучший вариант Жаль

Переопределить свой класс от TTrackBar, в котором перехватывать сообщения WM_LBUTTONUP, определять позицию курсора и в зависимости от нее устанавливать свойство Position компонента.

Вот, например, мне подсказали как это сделать без переопределения класса, но этот метод не точный и моему клиенту он не подойдет:

Код: (Text)
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
int x = Mouse->CursorPos.x - Form1->Left - TrackBar1->Left;
TrackBar1->Position=x * TrackBar1->Max / TrackBar1->Width;
}
Записан

Программирование на заказ   C/C++, Delphi, PHP, javascript
zubr
Гость
« Ответ #3 : 22-05-2008 09:46 » new

HempStar, тогда пиши свой тракбар.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines