Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2009, 03:31   #1
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Вопрос Изменить вид TrackBar

!Здравствуйте!
Подскажите мне пожалуйста как можно реализовать вот это:
1.jpg

Это так называемый "TrackBar".
Как его можно изменить что бы он стал примерно таким же?
!Заранее очень благодарен!
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 08.11.2009, 03:45   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

самостоятельно его отрисовывать
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.11.2009, 04:40   #3
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
По умолчанию

Это я понял, а вот как это сделать, я понятия не имею? Если бы кто-то пример выложил!
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 08.11.2009, 10:13   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Линия - LineTo(...)
Движок - Ellipse(...)
Посмотрите в хэлпе про эти функции - и "уперод"...
Тем более, что там и примеры есть
mihali4 вне форума Ответить с цитированием
Старый 08.11.2009, 10:27   #5
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
По умолчанию

Это я тоже знаю! Но вот как сделать так что бы вместо обычного вида получить такой?
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 08.11.2009, 10:47   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Не TrackBar устанавливать, а просто рисовать.
Что ж тут непонятного-то?
Не хочется рисовать - пишите свой компонент - наследник от TrackBar.
Книжка Р. Конопки вам в помощь...

Последний раз редактировалось mihali4; 08.11.2009 в 10:50.
mihali4 вне форума Ответить с цитированием
Старый 08.11.2009, 11:37   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

1) берем делаем 3 картинки:
- высотой 1 пкс подложка движка
- высотой 1 пкс позиция движка
- сам траск-движок (самый верхний, эллипс)
2) ложишь на форму друг на друга 3 timage (назовем их SldPosback, SldPosback2 и dv), transparent:= true
3) подгружаешь картинки, либо их заранее в ресурс гонишь, либо подгружаешь из общего скина, вариантов масса
4) объединяешь под одними событиями 2 нижних image (SldPosBack, SldPosBack2):
Код:
procedure Tvid.SldPosbackMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if (Button = mbLeft) then set_pos(x)
end;
procedure Tvid.SldPosbackMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 if Shift = [ssLeft] then set_pos(x)
end;

...
// собственно обработка изменения положения
procedure tvid.set_pos(_x:longint);
begin
 //if (Player.Initialized)and(PlayState <> STATE_STOP) then
  //begin
   if _x < 0 then _x:= 0;
   if _x > SldPosBack.Width then _x:= SldPosBack.Width;
   //dsmpSetPos(Player,_x, SldPosBack.Width,true)
 // end
end;
события самого верхнего траск-движка:
Код:
// проверка положения, чтоб не выходил за границы
procedure tvid.dv_nmov;
begin
 if dv.Left < 16-(dv.Width div 2) then
  dv.Left:= 16-(dv.Width div 2);
 if dv.Left > SldPosBack.Width+16-(dv.Width div 2) then
  dv.Left:= SldPosBack.Width+16-(dv.Width div 2)
end;

// нажатие левой кнопкой и подгрузка картинки
procedure Tvid.dvMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 application.ProcessMessages;
 skinImgSetCellAndUpdate(TImage(Sender), 1);
 movi:= true;
 dv_move:= Point(x, y)
end;

// движение траск-движка при нажатии
procedure Tvid.dvMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 if (ssLeft in Shift)and(Player.Initialized) then begin
  dv.Left:= dv.Left + x - dv_move.X;
  dv_nmov; // обработка положения
  set_pos(dv.Left-16)
 end 
end;

// отжатие левой кнопки и возврат прежней картинки
procedure Tvid.dvMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 GenericButMouseUp(Sender, X, Y);
 movi:= false
end;

procedure Tvid.GenericButMouseDown(Sender: TObject;Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
begin
 skinImgSetCellAndUpdate(TImage(Sender), 1);
 Application.ProcessMessages
end;
function Tvid.GenericButMouseUp(Sender: TObject;X, Y: Integer): boolean;
begin
 skinImgSetCellAndUpdate(TImage(Sender), 0);
 Application.ProcessMessages;
 Result:= skinImgInside(TImage(Sender), X, Y)
end;
модуль <skinned> прилагаю...
Вложения
Тип файла: zip Skinned.zip (1.1 Кб, 127 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 09.11.2009, 05:30   #8
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
По умолчанию

Спасибо тебе большое raxp!!! =-)
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменить вид рамок delphi guffer Общие вопросы Delphi 2 28.08.2009 09:27
trackbar larry Win Api 3 28.07.2009 09:47
Как изменить вид ползунка у компонента таскбара (TTackBar)? SkAndrew Компоненты Delphi 3 15.08.2008 16:36
ВИд benjaminfran Софт 2 22.02.2008 08:55
TrackBar Михаил Юрьевич Общие вопросы Delphi 2 29.01.2008 00:43