Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2008, 18:37   #1
DeCoder
Пользователь
 
Регистрация: 17.04.2008
Сообщений: 22
Вопрос TRichEdit

Есть несколько вопросов по RichEdit'у.
1). Как осуществить форматирование текста данным способом: ['B']текст['/B'](только без " ' "). Т.е. как в большинстве форумов и других web-приложений.
2). Создавать гиперссылки. Т.е. например http://www.programmersforum.ru - чтоб при вводе 'http://' загружалась страница с данным адресом(естественно, при нажатии на данную ссылку).
3). Как вставлять картинки в стрику? например, так:
Код:
 RichEdit1.Lines.Add('текст'+image);
где "image"-картинка. Какой у неё тип данных? Как совместить TString с этим типом данных?

Пока всё. Скажу честно, искал везде: начиная с гугла, заканчивая яндексом. Есть интересный материал, но ответов на эти вопросы там нет:-(.

Последний раз редактировалось DeCoder; 30.04.2008 в 18:42.
DeCoder вне форума Ответить с цитированием
Старый 30.04.2008, 21:29   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

А компонент WebBrowser с вкладки Internet вам не подойдет?
Размещаете его на форме и грузите в него HTML:
Код:
 WebBrowser1.Navigate('http://programmersclub.ru');
Или вы хотите написать свой интерпретатор HTML?
_Dmitry вне форума Ответить с цитированием
Старый 30.04.2008, 21:38   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

DeCoder для ваших целей подойдет TRXRichEdit, а лучше TRichView. Да и вообще такие темы обсуждались столько раз, что уже тошно отвечать, и ненадо говорить что Вы искали и ничего ненашли...
BOBAH13 вне форума Ответить с цитированием
Старый 03.05.2008, 08:06   #4
DeCoder
Пользователь
 
Регистрация: 17.04.2008
Сообщений: 22
По умолчанию

Приведи пример(линк) роботы с гиперссылками в Риче. Если б я нащёл, то не спрашивал бы=\.
DeCoder вне форума Ответить с цитированием
Старый 03.05.2008, 09:38   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

На самом деле в демо проекта есть там про гиперссылки
Но всеравно вот вам пример
Вложения
Тип файла: zip ExampleLinks.zip (1.9 Кб, 69 просмотров)
BOBAH13 вне форума Ответить с цитированием
Старый 03.05.2008, 11:00   #6
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
Лампочка

Код:
{....}
protected
   procedure WndProc(var Message: TMessage); override;
{....}

uses Richedit, ShellApi;

procedure TForm1.FormCreate(Sender: TObject);
var
mask: Word;
begin
mask := SendMessage(RichEdit1.Handle, EM_GETEVENTMASK, 0, 0);
SendMessage(RichEdit1.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK);
SendMessage(RichEdit1.Handle, EM_AUTOURLDETECT, Integer(True), 0);
//Some text in RichEdit
RichEdit1.Text := 'Scalabium Software'#13#10 +
   ' Site is located at www.scalabium.com. Welcome to our site.';
end;

procedure TForm1.WndProc(var Message: TMessage);
var
p: TENLink;
strURL: string;
begin
if (Message.Msg = WM_NOTIFY) then
begin
   if (PNMHDR(Message.lParam).code = EN_LINK) then
   begin
     p := TENLink(Pointer(TWMNotify(Message).NMHdr)^);
     if (p.Msg = WM_LBUTTONDOWN) then
     begin
       SendMessage(RichEdit1.Handle, EM_EXSETSEL, 0, Longint(@(p.chrg)));
       strURL := RichEdit1.SelText;
       ShellExecute(Handle, 'open', PChar(strURL), 0, 0, SW_SHOWNORMAL);
     end
   end
end;
 
inherited;
end;
Можно и так в любой рич едит. Взято из DRKB. Скачай себе, оч. хорошая весчь! Есть оч. много полезного! Но тут встаёт проблема винды: и при нажатии ссылка не открывается в стандартном браузере, и при sellexecute тож. я с этой проблемой так и не разобрался. Почему после определённого момента винда перестаёт реагировать на такие сообщения я не знаю, может кто сталкивался с такой проблемой?
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 04.05.2008, 06:10   #7
DeCoder
Пользователь
 
Регистрация: 17.04.2008
Сообщений: 22
По умолчанию

В принципе, можно загрузчик-html страниццу со скриптом, чтоб открывал линк. при нажатии в риче не линк буит открваться страница html, которая в свою очередь осуществляет переход на
нужную страницу. Сам адрес линка можно скопировать в буф.обм. и вставлять на хтмл страницу; далее-переадресация га нужную страницу.

есть такой код:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
l:=chatmemo.Lines.Count-1; //ChatMemo=TRichEdit
  sw:=form1.ChatMemo.Lines[l];
if (pos('<B>',sw)<>0)and(pos('</B>',sw)<>0) then
  begin
      m:=pos('<B>',sw);
      delete(sw,m,3);
      m2:=pos('</B>',sw);
      delete(sw,m2,4);
      Chatmemo.Lines[l]:=SW;
      setline(Chatmemo,l,m-1);
      Chatmemo.SelLength:=m2-m;
      CurrText.Style := CurrText.Style + [fsBold];
  end;
end;



//функция CurrTex:
function TForm1.CurrText: TTextAttributes;
begin
  if Chatmemo.SelLength > 0 then Result := Chatmemo.SelAttributes
  else Result := Chatmemo.DefAttributes;
end;

//процедура setline
Procedure setline(TextEdit:TRichedit;Linepos,charpos:integer);
Begin
  with TextEdit do
  begin
    selstart:=perform(EM_LineIndex,Linepos,0)+charpos;
    perform(EM_ScrollCaret,0,0);
  end;
end;
- как видно из этого, если в тексте встречаются <B> и </B>, то текст становится жирным. Но почему-то, если в тексте в 1ой строке есть несколько данных выделений(например '<B>text</B> text <B>text</B>'), то весь текст становится жирным(курсивным, цветным и т.п.). Как это исправить?

Есть предложение сделать так, чтобы когда встречается '<B>', то весь текст побуквенно становился жирным до тех пор, пока не встретится </B>. Только вот что-то до меня не доходит, как это сделать...
Т.е. примерно это так: если есть_подстрока('<B>',в_строке_sw), то
<Цикл>(какой, кстати?)
{происходит посимвольное применение параметра до тех пор, пока не встретится '</B>'}
{но вопрос: если перебор посимвольный, то как найти '</B>'? - там 4 символа...}

В общем, помогите с алгоритмом пожалуйста.

З.Ы. вместо "<>" - "[]"

Отображение анимации в TRichEdit - это возможно сделать?

О, придумал!))
Так'c что, если сделать процедуру, которая объединяет весь этот бред в одно, и при выводе текста в ChatMemo обрабатывает текст в соответствии с заданными параметрами(т.е. каждую новую строку)?
Вот только ещё несколько вопросов:
1). Если текст вставляется в несколько строк, то обрабатывается только последняя - это в принципе, понятно, но вот как сделать построчную обработку... Помогите пожалуйста!
2). Так и не разобрался с обработкой... почему-то весь тест становится таким, как выделенные форматированием слова(нарпимер, красный-жирный-курсив-подчеркнутый, когда в тексте определённые слова выделены определённым цветом/стилем)

*3). Где скатать модуль для работы с gif - картинками в Риче?
Если знаете, киньте в меня линком.))

Последний раз редактировалось Alex21; 08.05.2008 в 17:41. Причина: Подряд сообщения не постить! Есть кнопка правки.
DeCoder вне форума Ответить с цитированием
Старый 15.05.2008, 14:44   #8
DeCoder
Пользователь
 
Регистрация: 17.04.2008
Сообщений: 22
По умолчанию

Никто не знает что-ль? Не верю)).
Ну пожалуйста, помогите хотябы с кодом!
Очень прошу. Очень надо).
DeCoder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TRichEdit satana Компоненты Delphi 3 10.07.2008 15:54
Проверка правописания в TRichEdit TIgor4 Общие вопросы Delphi 1 03.07.2008 17:17
Проект, используюший TRichEdit, Combobox. Stydent Помощь студентам 2 27.11.2007 23:43
TLabel или TRichEdit vovan_evv Компоненты Delphi 4 18.10.2007 09:57
Delphi7. Поиск в TRichEdit Andrei Компоненты Delphi 0 20.06.2007 12:52