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

Вниз

SetScrollInfo и SetScrollPos не прокручивают текст внутри окна.   Найти похожие ветки 

 
misha_gr   (2008-03-04 20:56) [0]

SetScrollPos(ListBox1.Handle, SB_Vert, 50, true);

Бегунки передвигаются, но текст внутри окна не скроллится. Ровно такая же ситуация для TRichEdit и TMemo.

В чём же здесь собака порылась?


 
Игорь Шевченко ©   (2008-03-04 21:46) [1]

The SetScrollPos function sets the position of the scroll box (thumb) in the specified scroll bar and, if requested, redraws the scroll bar to reflect the new position of the scroll box.

Перевод нужен ?


 
misha_gr   (2008-03-05 13:57) [2]

Разве логично, что управляя движением скроллбара, я не управляю скроллингом окна? Ладно, вопрос риторический. А как прокрутить содержимое окошка? Если использовать напрашивающуюся функцию ScrollWindow - он не прорисовывает область сдвинувшуюся извне внутрь ClipRect. Плюс, команда рефреш возвращает всё в исходное положение. (то есть, бегунки установились).

 Вообще, может я не с той стороны к вопросу подхожу? Мне нужно программно управлять скроллингом окна.


 
Игорь Шевченко ©   (2008-03-05 14:52) [3]


> Мне нужно программно управлять скроллингом окна.


Обрабатывать сообщения WM_VSCROLL, WM_HSCROLL - они приходят, в частности от скроллбара.
В ответ на эти сообщения вызывать ScrollWindow - примеров в VCL море


 
misha_gr   (2008-03-05 16:06) [4]

> Обрабатывать сообщения WM_VSCROLL, WM_HSCROLL - они приходят, в
> частности от скроллбара. В ответ на эти сообщения вызывать
> ScrollWindow - примеров в VCL море

Сделал поиск по ..\Delphi\Source - ScrollWindow используется в Grids, DBGrids. Не мои клиенты.

Дело в том, что я использую стандартные компоненты, TListBox, TRichEdit, TMemo, и их скроллингом мне нужно управлять программно. Соответственно, по моему скромному AFAIK, их сообщения мне совершенно незачем обрабатывать - у них свой собственный обработчик, (причём не в VCL ессно).

В принципе, для TListBox и TMemo проблема решается так -

SendMessage(Memo1.Handle, WM_HSCROLL, SB_LINERIGHT, 0);
SendMessage(Memo1.Handle, WM_VSCROLL, SB_LINEDOWN, 0);

С TRichEdit помогает не всегда, он может скролиться попиксельно. Всякие
SB_THUMBPOSITION самым доблестным образом не работают.

Короче, тут явно какая-то подлянка, и не всё так просто как кажется...


 
misha_gr   (2008-03-05 16:09) [5]

> стандартные компоненты - уточню, стандартные виндовские компоненты.


 
Сергей М. ©   (2008-03-05 16:33) [6]


> Не мои клиенты


Твои, уважаемый.. Твои ...

А главный твой "клиент" - TScrollBox.


 
misha_gr   (2008-03-05 18:21) [7]

Уважаемые Мастера. Боюсь что в данном случае Вы ошибаетесь. То что работает с TScrollBox со стандартными виндовыми компонентами работать не будет.


 
Игорь Шевченко ©   (2008-03-05 22:32) [8]


> Дело в том, что я использую стандартные компоненты, TListBox,
>  TRichEdit, TMemo, и их скроллингом мне нужно управлять
> программно. Соответственно, по моему скромному AFAIK, их
> сообщения мне совершенно незачем обрабатывать


Тогда их надо посылать. Или посылать специфические для контролов сообщения, EM_xxxSCROLL, LB_SETCURSEL и т.п., что и делается в [4]

ScrollWindow они сами выполняют.



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

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

Наверх




Память: 0.46 MB
Время: 0.011 c
3-1214121493
vetalich
2008-06-22 11:58
2009.02.01
не подскажите формулу по которой можно вычислить...?


2-1229292385
Tatb9na
2008-12-15 01:06
2009.02.01
Файлы Delphi


15-1227739103
DillerXX
2008-11-27 01:38
2009.02.01
Вопрос к пользовтелям googlemail (gmail)


2-1229508260
Alex_C
2008-12-17 13:04
2009.02.01
Не пропадает Hint


6-1197549758
mary
2007-12-13 15:42
2009.02.01
idtcpclient





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский