Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Gutter как в Delphi, Нумерация строк в RichEdit 
V
    Опции темы
CHERRY
Дата 8.3.2010, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Прохожий
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 17.6.2002
Где: Одесса

Репутация: нет
Всего: -2



Как организовать нумерцию строк в RichEdit?
Типа как в редакторе Delphi?
--------------------
Трясу надежды ветвь, но где желанный плод?
PM MAIL WWW   Вверх
Proxin
Дата 8.3.2010, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 363
Регистрация: 21.6.2008

Репутация: 1
Всего: 3



используйте synedit.
PM MAIL   Вверх
CHERRY
Дата 8.3.2010, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Прохожий
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 17.6.2002
Где: Одесса

Репутация: нет
Всего: -2



Цитата(Proxin @ 8.3.2010,  12:52)
используйте synedit.

Нет, хотелось бы самому.
Нарисовать Gutter не проблема. Номер строки написать тоже не проблема.
Как совместить TextOut(х,y,номер строки) с самой строкой в RichEdit.
И чтобы вместе двигались при скроллинге.?
--------------------
Трясу надежды ветвь, но где желанный плод?
PM MAIL WWW   Вверх
CHERRY
Дата 9.3.2010, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Прохожий
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 17.6.2002
Где: Одесса

Репутация: нет
Всего: -2



Вопрос нумерации строк в RichEdit я решил следующим образом.
Может быть не очень красиво, но работает неплохо.
Ф-ции GetFirstVisibleLine и GetLastVisibleLine описаны в DRKB как
function RE_GetLastVisibleLine(RichEdit: TRichEdit): Integer;
function RE_GetFirstVisibleLine(RichEdit: TRichEdit): Integer;
Код

{Рисуем Gutter}
procedure TChREdit.DrawGutter;
var
  MCanvas: TControlCanvas;
  nLine:String;
  lPt: TPoint;
  lPos,i: Integer;
Begin
  //Рисуем Gutter
  if FShowGutter then
  Begin
   MCanvas:=TControlCanvas.Create;
   Try
    MCanvas.Control:=Self;
    With MCanvas do
    Begin
     Brush.Color:=clBtnFace;
     Pen.Color:=clBlack;
     Rectangle(0, 0, FGutterWidth, Height);
     Font.Color:=clBlack;
     Font.Style:=[];
     Font.Name:='Courier New';
     Font.Size:=Self.Font.Size;
     Font.Pitch:=fpFixed;//для упрощения форматирования
     for I := GetFirstVisibleLine to GetLastVisibleLine do
      Begin
        //получаем номер символа в начале [текущей (-1)] i-й строки.
        lPos := SendMessage( Self.Handle, EM_LINEINDEX, i, 0 );
        if lPos<> -1 then
        //получаем координаты Left/Top символа с номером lPos
        SendMessage(Self.Handle, EM_POSFROMCHAR, Integer(@lPt), lPos );
        if i<10 then nLine:='  '+IntToStr(i)
        Else if (i>=10)and(i<100) then nLine:=' '+IntToStr(i)
        Else nLine:=IntToStr(i);
        TextOut(1{X},lPt.y{Y},nLine{число});
      End;
    end;
   finally
    MCanvas.Free;
   End;
  End;
End;


procedure TChREdit.WMPaint(var Message: TWMPaint);
Begin
  inherited;
  DrawGutter;
end;



Добавлено через 2 минуты и 8 секунд
Всем спасибо!
--------------------
Трясу надежды ветвь, но где желанный плод?
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0403 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.