Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Excel VBA, CAD, Софт, ОС, Windows, Ubuntu, Android, VPS
Win Api, Assembler, C++, Java, Pascal, Lazarus, Delphi, OpenGL, DirectX
C#, Qt, .NET, ASP.NET, Windows Forms, ADO.NET, Framework, WPF, UWP, WinRT, XAML
HTML, CSS, JavaScript, Ajax, PHP, Perl, Python, Ruby, SQL, WordPress, API, XML, JSON, ActionScript, Flash

Ответ
 
Опции темы
Старый 26.12.2016, 01:27   #1
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 361
Репутация: 47
По умолчанию Длина строки TRichEdit

Всем привет. Сейчас пробую создать компонент на основе TRichEdit, но столкнулся с такой проблемой:

1. Длина строки. Создаю экземпляр от TRichEdit, задаю ширину размером с форму, а результат следующий:


Код:

procedure TRichMemoEditor.WMPaint(var Message: TWMPaint);
var
  DC : HDC;
  Brush : TBrush;
  i: Integer;
  Info: TPaintStruct;
begin
  DC := BeginPaint(Handle,Info);

  try
    Brush := TBrush.Create;
    Brush.Color := clLime;
    //SetBkMode(dc, TRANSPARENT);

    SelectObject(dc, Font.Handle);

    for i:=0 to Lines.Count-1 do
      begin
        TextOut(DC, 1, iStep*i+1, PWideChar(Lines[i]), length(Lines[i]));
      end;

  finally
    Brush.Free;
  end;

end;


Код:

procedure TForm1.Button2Click(Sender: TObject);
begin
  Editor:= TRichMemoEditor.Create(Form1);
  Editor.Parent:= Form1;
  Editor.Left:=0;
  Editor.Top:=0;
  Editor.Width:= Width;
  Editor.Height:= Height;
end;

С одной стороны - действительно задается максимальная ширина, но с другой стороны - напечатать строку длиной во всю форму - не удается ...


2. И корректно вообще вот таким образом текст выводить ? Или есть какие нибудь более грамотные способы ?
Изображения
Тип файла: png Безимени-2.png (6.9 Кб, 62 просмотров)
-Jack- вне форума   Ответить с цитированием
Старый 27.12.2016, 12:29   #2
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 107
Репутация: 25
По умолчанию

Я что-то не пойму что не удовлетворяет вас?Какая задача стоит я понял. Вам перенос текста надо отключить? Если да, то у компонента есть свойство ScrollBars ставите его в ssBoth и перенос будет отключен.
Или вам надо максимальную длину текста зафиксировать? Есть свойство MaxLength. Поподробнее пжалста.
__________________
Пишу много и развернуто
Heneken87 вне форума   Ответить с цитированием
Старый 27.12.2016, 13:08   #3
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк, Украина
Сообщений: 15,896
Репутация: 5728
По умолчанию

Цитата:
Или есть какие нибудь более грамотные способы ?
Конечно есть. Не делать ерунду с RichEdit, он и сам грамотно, в соответствии с форматированием выведет текст )) Вопрос в чем - какой фокус хочешь сделать с отображением текста, который он сам не может сделать?
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 27.12.2016 в 13:13.
Аватар вне форума   Ответить с цитированием
Старый 29.12.2016, 01:42   #4
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 361
Репутация: 47
По умолчанию

Цитата:
Сообщение от Heneken87 Посмотреть сообщение
Я что-то не пойму что не удовлетворяет вас?Какая задача стоит я понял. Вам перенос текста надо отключить? Если да, то у компонента есть свойство ScrollBars ставите его в ssBoth и перенос будет отключен.
Или вам надо максимальную длину текста зафиксировать? Есть свойство MaxLength. Поподробнее пжалста.
Сейчас возможности пока нет проверить ScrollBars, как проверю - отпишусь

Цитата:
Сообщение от Аватар Посмотреть сообщение
Конечно есть. Не делать ерунду с RichEdit, он и сам грамотно, в соответствии с форматированием выведет текст )) Вопрос в чем - какой фокус хочешь сделать с отображением текста, который он сам не может сделать?
По сути дела хочу сделать текстовый редактор, и для начала добавить подсветку строки, где расположен курсор, потом добавить нумерацию строк и подсветку синтаксиса ...

Пока решил начать с малого - мучаюсь с подсветкой строки и нумерацией строк.
-Jack- вне форума   Ответить с цитированием
Старый 29.12.2016, 05:32   #5
northener
Профессионал
 
Регистрация: 15.07.2013
Сообщений: 1,291
Репутация: 366
По умолчанию

Цитата:
Сообщение от -Jack- Посмотреть сообщение
Пока решил начать с малого
SynEdit тебе в помощь. И не изобретай велосипед с квадратными колесами.
Разве что тебе больше делать нечего.
northener вне форума   Ответить с цитированием
Старый 31.12.2016, 04:32   #6
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 361
Репутация: 47
По умолчанию

Не сказать, что совсем делать нечего ))) Но хочется попробовать это реализовать с нуля )
-Jack- вне форума   Ответить с цитированием
Старый 01.01.2017, 03:33   #7
northener
Профессионал
 
Регистрация: 15.07.2013
Сообщений: 1,291
Репутация: 366
По умолчанию

Цитата:
Сообщение от -Jack- Посмотреть сообщение
Но хочется попробовать это реализовать с нуля )
Странная реализация "с нуля", учитывая что Дельфийский TRichEdit всего лишь "оболочка" для стандартного класса Windows RICHEDIT. Что естественно очень ограничивает возможности произвольной его модификации.
northener вне форума   Ответить с цитированием
Старый 03.01.2017, 20:31   #8
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 361
Репутация: 47
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
SynEdit тебе в помощь. И не изобретай велосипед с квадратными колесами.
Разве что тебе больше делать нечего.
Всё же прислушался к вашему совету и воспользовался SynEdit. Настроить подсветку строки, нумерацию строк, синтаксис удалось ...


Но во время поиска информации по SynEdit наткнулся на такое видео:

https://www.youtube.com/watch?v=sPNC0EHXOyE

Вопрос вот в чем, это уже реализовано в SynEdit и если да, то как SynEdit настроить, чтобы подсветка так же работала ?
-Jack- вне форума   Ответить с цитированием
Старый 04.01.2017, 02:51   #9
northener
Профессионал
 
Регистрация: 15.07.2013
Сообщений: 1,291
Репутация: 366
По умолчанию

Цитата:
Сообщение от -Jack- Посмотреть сообщение
Вопрос вот в чем, это уже реализовано в SynEdit
А я не автор SynEdit.
northener вне форума   Ответить с цитированием
Старый 04.01.2017, 16:59   #10
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 361
Репутация: 47
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
А я не автор SynEdit.
Если ты пишешь про SynEdit, выходит ты с ним работал. А причем здесь тогда автор - не автор ??? не тупи ...
-Jack- вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TRichEdit почему то портит строку (добавляет перенос строки) Pcrepair Общие вопросы Delphi 1 17.03.2015 20:14
Укзатели. Длина строки. Chelovekpredel Помощь студентам 5 07.07.2012 19:25
Assembler длина строки Vitalii Помощь студентам 6 22.11.2011 23:14
Использовани компонента TRichEdit. Использовать компонент TRichEdit. Лелич Компоненты Delphi 4 05.03.2011 19:25
Длина строки С++ ArniLand Общие вопросы C/C++ 7 25.03.2010 11:59




02:47.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru