Конференция "Компоненты" » Компонент со скроллом [D7, WinXP]
 
  • Elio (12.01.08 12:27) [0]
    Здравствуйте!
    Два вопроса. Первый: От какого класса нужно порождать компонент, для того чтобы он имел полосы прокрутки и канву. У TScrollingWinControl есть Vert и HorzScrollBar, но нету Canvas. В TCustomControl наоборот. Думал в свой компонент запихнуть объекты TControlScrollBar, но он имеен защищённый конструктор, да и в хелпе сказано, что "если вы хотите, чтоб ваш контрол имел скролбары, то используйте TScrollingWinControl", но он не устраивает по описаной выше причине. Временно решил проблему тем, что продублировал код TCustomControl в котором происходит перехват WM_PAINT и вызов Paint. Есть ли др. варианты?
    Второй вопрос: Как сделать так, чтобы при прокрутке скролом смещение происходило ровно на величину VertScrollBar.Increment. В моём компоненте Increment равен высоте текста + межстрочный интервал. Когда я прокручиваю окно используя стрелки на прокрутке, то всё работает как надо , но если использую скролл, то позиция изменяется на один пиксель вверх-вниз
  • Elio (12.01.08 12:31) [1]
    В общем, этот многострочный редактор должен работать как обычный Memo в плане отрисовки текста.
  • DimaBr © (14.01.08 10:05) [2]
    Канву легко создать посмотрев как это происходит в TCustomControl
  • DimaBr © (14.01.08 10:11) [3]
  • Elio (14.01.08 13:24) [4]
    Решил пойти от обратного. Родителем выбрал TCustomControl. А весь механизьм по работе со скроллом реализовал в компоненте. Так можно регулировать размер смещения при трекинге (отлавливая WM_V/HSCROLL и изменяя свойство Message.Pos). Теперь перемещение происходит ровно на величину строки.

    2 DimaBr
    Пасиб!
 
Конференция "Компоненты" » Компонент со скроллом [D7, WinXP]
Есть новые Нет новых   [134463   +60][b:0.002][p:0]