Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.47.253] |
|
Сообщ.
#1
,
|
|
|
Сколько всего строк, понятно - EM_GETLINECOUNT, какая первая стока видна, понятно - EM_GETFIRSTVISIBLELINE
А как найти, сколько строк видно? |
Сообщ.
#2
,
|
|
|
Взять точку в левом нижнем углу и найти для неё ближайший символ EM_CHARFROMPOS, потом определить соответствующую строку EM_EXLINEFROMCHAR.
Вот на Delphi: function GetRichEditVisibleLinesCount(RE: TRichEdit): Integer; var p: tpoint; begin p := point(2, RE.ClientHeight - 2); Result := SendMessage(Re.Handle, EM_EXLINEFROMCHAR, 0, SendMessage(RE.Handle, EM_CHARFROMPOS, 0, Integer(@p)))- SendMessage(RE.Handle, EM_GETFIRSTVISIBLELINE, 0, 0); end; |
Сообщ.
#3
,
|
|
|
Цитата Артур @ А как найти, сколько строк видно? Наверное так: Сначала получить область форматирования - EM_GETRECT, потом получить индекс символа, EM_CHARFROMPOS, для нижнего угла, потом его строку EM_EXLINEFROMCHAR и т.д. |
Сообщ.
#4
,
|
|
|
Спасибо!
Хитро... Я-то думал, что для этого есть что-то стандартное. |
Сообщ.
#5
,
Сообщение отклонено: JoeUser -
|