Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

снова TrackBar   Найти похожие ветки 

 
Robt   (2007-06-26 19:28) [0]

а как работать с "тиками" ?
менять растояние между ними
типа frequency в vcl
и как вариант фиксированое "прыганье" ползунка
по "тикам"


 
Vladimir Kladov   (2007-06-26 19:46) [1]

Как в VCL - не знаю. В исходник KOLTrackbar"а посмотрите. Там есть все, что предоставляет API для тракбара.


 
robt   (2007-06-27 14:01) [2]

а как определить изменение позиции то? :(
OnChange как в VCL нету не через события же мыши и клавы определять ?


 
=BuckLr=   (2007-06-27 15:50) [3]


> не через события же мыши и клавы определять ?

А почему бы и нет?


 
robt   (2007-06-27 16:06) [4]

патаму что быть такого не может
чтобы системный контрол не посылал
уведомлений о изменении своего основного параметра


 
Vladimir Kladov   (2007-06-27 16:37) [5]

MSDN:

Notifications
NM_CUSTOMDRAW (trackbar)
Sent by a trackbar control to notify its parent windows about drawing operations. This notification is sent in the form of a WM_NOTIFY message.

NM_RELEASEDCAPTURE (trackbar)
Notifies a trackbar control"s parent window that the control is releasing mouse capture. This notification is sent in the form of a WM_NOTIFY message.



Других нотификаций для тракбара нет.


 
Galkov ©   (2007-06-27 20:30) [6]

А мой MSDN пишет примерно такое:

Trackbar Notification Messages
A trackbar notifies its parent window of user actions by sending the parent a WM_HSCROLL or WM_VSCROLL message. A trackbar with the TBS_HORZ style sends WM_HSCROLL messages. A trackbar with the TBS_VERT style sends WM_VSCROLL messages. The low-order word of the wParam parameter of WM_HSCROLL or WM_VSCROLL contains the notification code. For the TB_THUMBPOSITION and TB_THUMBTRACK notifications, the high-order word of the wParam parameter specifies the position of the slider. For all other notifications, the high-order word is zero; send the TBM_GETPOS message to determine the slider position. The lParam parameter is the handle to the trackbar.

The system sends the TB_BOTTOM, TB_LINEDOWN, TB_LINEUP, and TB_TOP notification messages only when the user interacts with a trackbar by using the keyboard. The TB_THUMBPOSITION and TB_THUMBTRACK notification messages are only sent when the user is using the mouse. The TB_ENDTRACK, TB_PAGEDOWN, and TB_PAGEUP notification messages are sent in both cases. The following table lists the trackbar notification messages and the events (virtual key codes or mouse events) that cause the notifications to be sent.

Notification message Reason sent
TB_BOTTOM        VK_END
TB_ENDTRACK      WM_KEYUP(the user released a key that sent a relevant virtual key code)
TB_LINEDOWN      VK_RIGHT or VK_DOWN
TB_LINEUP        VK_LEFT or VK_UP
TB_PAGEDOWN      VK_NEXT (the user clicked the channel below or to the right of the slider)
TB_PAGEUP        VK_PRIOR (the user clicked the channel above or to the left of the slider)
TB_THUMBPOSITION WM_LBUTTONUP following a TB_THUMBTRACK notification message
TB_THUMBTRACK    Slider movement (the user dragged the slider)
TB_TOP           VK_HOME


 
Vladimir Kladov   (2007-06-27 22:26) [7]

Ну так это отрабатывается в OnScroll.


 
robt   (2007-06-28 10:53) [8]

фишка вся в том что OnScroll кокраз и не срабатывает вабще :(
хоть чо с ним делай например :

procedure TForm1.TrackBar1Scroll(Sender: PTrackbar; Code: Integer);
begin
inc(i);
form.Caption:=int2str(i);
end;


 
Vladimir Kladov   (2007-06-28 15:28) [9]

Если только вы программно присваиваете Position, то да, не сработает. Так сами и обработайте, что присвоили.


 
robt   (2007-06-28 16:20) [10]

дело в том что програмно ничо не присваеваеца

это тупо форма+тракбар+
procedure TForm1.TrackBar1Scroll(Sender: PTrackbar; Code: Integer);
begin
inc(i);
form.Caption:=int2str(i);
end;

и все!
никакой реакции ни на мышь ни на клаву хоть куда тыкай


 
robt   (2007-06-28 16:24) [11]

с mhtrackbar такаяже ситуация


 
Vladimir Kladov   (2007-06-28 18:44) [12]

А у меня работатет. Код:
procedure TForm1.TrackBar1Scroll(Sender: PTrackbar; Code: Integer);
begin
 Form.Caption := Int2Str(Sender.Position);
end;


 
Galkov ©   (2007-06-28 19:45) [13]

На своем форуме я обычно добавляю:

Вопрос: что я делаю не так ???

:))


 
mdw ©   (2007-06-28 20:18) [14]


> А у меня работатет. Код:

Специально проверил сейчас, у меня тоже работает.


 
Robt   (2007-09-13 21:22) [15]


> А у меня работатет. Код:
> procedure TForm1.TrackBar1Scroll(Sender: PTrackbar; Code:
>  Integer);
> begin
>  Form.Caption := Int2Str(Sender.Position);
> end;

вылетает при любом упоминании Position с переполнением диапазона

function TTrackbar.GetVal( const Index: Integer ): Integer;
begin
 Result := Perform( WM_USER + ( HiWord( Index ) and $7FFF ), 0, 0 );
end;

коректно работает тока в пустом проекте
кол последний

чо делать ?


 
robt   (2007-09-14 09:54) [16]

на работе пустой проект с темже кодом (Form.Caption := Int2Str(Sender.Position);)
ВОБЩЕ не работает !!! хотя 2 мес. назад работал....
кол 2.37

по моему где то косяк тракбара с обработкой сообщений
веть даже если у меня ошибка в программе (чего не может быть в принципе в "пустом" проекте)
даже в этом случае это не должно влиять на внупренние процессы в тракбаре .


 
Vladimir Kladov   (2007-09-14 14:10) [17]

Проверьте, что вы не используете в своем приложении сообщений WM_USER, пересекающихся с сообщениями trackbar"а.


 
robt   (2007-09-14 16:06) [18]

использую WM_USER+101 и выше это где вылетает с переполнением,
а "пустой" проект для теста это тупо форма+тракбар и фсе...


 
robt   (2007-09-14 16:13) [19]

и кроме того VCL версия тоже использует WM_USER но проблем не возникает
а тут то Range error то ноль эмоций

забыл сказать, когда onScroll пустой Range error нету, тока чонить написал-капец


 
Robt   (2007-09-14 20:09) [20]

кароче эта хрень изза отладочной инфы :(
2 дня изза нее промудохался ....

и чо теперь ? без отладки работать ?


 
Robt ©   (2007-12-18 08:48) [21]

после установки последней версии кола 2.84
trackbar отказывается програмно становица "в фокусе" любыми способами
только если на него мышью нажать

возврат к 2.73 - все нормально

чтоли гдето чтото поменялось ?


 
Jon ©   (2007-12-18 11:56) [22]

You need to do the following:

 TrackBar := NewTrackbar(....);
 TrackBarTabstop := True;
 TrackBar.Style := TrackBar.Style or WS_TABSTOP;


Work for me in all versions including current 2.85


 
Robt ©   (2007-12-19 08:30) [23]

да я не табуляцию имел в виду а Focused


 
Dy1   (2009-02-17 09:52) [24]

КОЛнМЦК 2.88, Д7
вылет при попытке прочитать trackbar.Position


 
Dy1   (2009-02-25 17:02) [25]

помогите пожалуйста


 
Jon ©   (2009-02-25 17:33) [26]

Use Position property - KOL only example shown:

program Trackbar;

uses KOL, KOLCCtrls;

procedure TrackbarChange(Dummy: Pointer; Sender: PTrackbar; Code: Integer);
begin
 Applet.Caption := Int2Str(Sender.Position);
end;

begin
 Applet := NewForm(nil,"Trackbar");
 NewTrackbar(Applet,[],TOnScroll(MakeMethod(nil,@TrackbarChange))).ResizeParent;
 Run(Applet);
end.



 
Дмитрий К ©   (2009-02-26 18:27) [27]


> Dy1   (25.02.09 17:02) [25]

Если не удастся победить ошибку, попробуй http://kolnmck.kolmck.net/files/components/controls/kolxitrackbar.7z Этот контрол не основан на системном трекбаре.


 
Dy1   (2009-02-28 13:04) [28]

Не удалось. Может ли xitrackbar выглядеть системным?


 
имя   (2009-02-28 22:34) [29]

Удалено модератором


 
PeTRoViCH   (2009-03-23 19:03) [30]

У меня тоже не работает.
Как выяснилось, в модуле KOLCCtrls.pas в функции WndProcTrackbarParent
после Trackbar := Pointer(GetProp(Msg.lParam, ID_SELF));
имеем Trackbar=nil
Выяснять причину не стал из-за лени.
Проблему решил так:
(все изменения в юните KOLCCtrls.pas)

1. В функции NewTrackbar:
Перед AParent.AttachProc( WndProcTrackbarParent ); добавляем строку:
SetWindowLong(Result.Handle,GWL_USERDATA,Integer(@Result));

2. В функции WndProcTrackbarParent:
Строку Trackbar := Pointer(GetProp(Msg.lParam, ID_SELF)); заменяем на:
Trackbar := Pointer(GetWindowLong(Msg.lParam,GWL_USERDATA));

Удачи.


 
имя   (2009-03-27 13:14) [31]

Удалено модератором


 
Dy1   (2009-06-22 20:51) [32]

не помогло



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.079 c
2-1343328927
Alez
2012-07-26 22:55
2013.03.22
Microsoft OneNote


2-1337886159
novichek
2012-05-24 23:02
2013.03.22
FilterGraph Яркость


15-1353443403
Юрий
2012-11-21 00:30
2013.03.22
С днем рождения ! 21 ноября 2012 среда


2-1347783911
alfa
2012-09-16 12:25
2013.03.22
Требуется разъяснение команды AS


15-1333812420
БарЛог
2012-04-07 19:27
2013.03.22
Перенести иероглифы с листа А4 на обои





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский