-
Здравствуйте! Два вопроса. Первый: От какого класса нужно порождать компонент, для того чтобы он имел полосы прокрутки и канву. У TScrollingWinControl есть Vert и HorzScrollBar, но нету Canvas. В TCustomControl наоборот. Думал в свой компонент запихнуть объекты TControlScrollBar, но он имеен защищённый конструктор, да и в хелпе сказано, что "если вы хотите, чтоб ваш контрол имел скролбары, то используйте TScrollingWinControl", но он не устраивает по описаной выше причине. Временно решил проблему тем, что продублировал код TCustomControl в котором происходит перехват WM_PAINT и вызов Paint. Есть ли др. варианты? Второй вопрос: Как сделать так, чтобы при прокрутке скролом смещение происходило ровно на величину VertScrollBar.Increment. В моём компоненте Increment равен высоте текста + межстрочный интервал. Когда я прокручиваю окно используя стрелки на прокрутке, то всё работает как надо , но если использую скролл, то позиция изменяется на один пиксель вверх-вниз
-
В общем, этот многострочный редактор должен работать как обычный Memo в плане отрисовки текста.
-
Канву легко создать посмотрев как это происходит в TCustomControl
-
-
Решил пойти от обратного. Родителем выбрал TCustomControl. А весь механизьм по работе со скроллом реализовал в компоненте. Так можно регулировать размер смещения при трекинге (отлавливая WM_V/HSCROLL и изменяя свойство Message.Pos). Теперь перемещение происходит ровно на величину строки.
2 DimaBr Пасиб!
|