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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ссылки в Memo... нуждаюсь в помощи 
:(
    Опции темы
rameses
Дата 6.1.2011, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нужно вывести в Memo ряд гиперссылок... можно ли это сделать...  подскажите как... или предложите аналог решения проблемы... 

Зарание благодарен!
PM MAIL   Вверх
skyboy
Дата 6.1.2011, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



чтоб синенькие и с подчеркиванием или чтоб по клику открывался адрес?
обязательно использовать tmemo или можно и другие(trichedit for example)?
PM MAIL   Вверх
rameses
Дата 6.1.2011, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



... открывались по клику!

можно использовать и другие... (альтернатива)
PM MAIL   Вверх
Snowy
Дата 6.1.2011, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



PM MAIL   Вверх
Jakeroid
Дата 6.1.2011, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Меня заинтересовал подобный вопрос:
"Есть ли в делфи компонент, который мог бы отображать форматируемо html к примеру?"
То есть я ему отдаю html, а он выводит на экран уже отформатируемый, со ссылками, жирным текстом и другими элементарными вещами.
PM MAIL   Вверх
Snowy
Дата 6.1.2011, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Из стандартных: TWebBrowser, TRichEdit.
PM MAIL   Вверх
Snowy
Дата 6.1.2011, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



1. Кидаем на форму Memo1
2. Кидаем на форму Button1
3. Кидаем на форму TWebBrowser и, для краткости, обзываем его wb1.
У веббраузера нам понадобится событие OnBeforeNavigate2.
У кнопки, соответственно, событие OnClick.
Код такой:
Код
procedure LoadHtml(wb: TWebBrowser; html: AnsiString);
{* Вставить html код в браузер *}
var ms: TMemoryStream;
begin
  wb.Navigate('about:blank');
  ms:=TMemoryStream.Create;
  ms.Write(html[1], Length(html));
  ms.Position:=0;
  try
    while wb.ReadyState < READYSTATE_INTERACTIVE do
      Application.HandleMessage;
    (wb.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
  finally
    ms.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject); // OnClick
begin
  LoadHtml(wb1, AnsiString(Memo1.Lines.Text));
end;

procedure TForm1.wb1BeforeNavigate2(ASender: TObject; const pDisp: IDispatch;
  var URL, Flags, TargetFrameName, PostData, Headers: OleVariant;  var Cancel: WordBool);
{* Обработка нажимаемых ссылок *} // OnBeforeNavigate2
var
  s: string;
begin
  s := string(URL);
  if (Copy(s, 1, 6) = 'about:') then s := Copy(s, 7, Length(s));
  if (s[1] = '$') then // можно придумывать свои хитрые ссылки
  begin
    ShowMessage('Вы нажали хитрую ссылку с кодом ' + copy(s, 2, Length(s)-1));
    Cancel := True;
  end;
  // Обычную http ссылку открываем в браузере по умолчанию, остальные прямо тут
  if UpperCase(copy(s,1, 7)) <> 'HTTP://' then Exit;
  ShellExecute(0, nil, PWideChar(string(URL)), nil, nil, SW_SHOWNORMAL);
  Cancel := true;
end;

В мемо вбиваем html код.
Я писал пример под такой:
Код
<body scroll="auto">
<h1>Форум программистов <a href="http://forum.vingrad.ru/">Vingrad</a>!</h1>
<quote>Пишем <i>разные</i> <u>программы</u> на <b>Delphi</b></quote>
<hr><ul>
<li><a href="$1">Хитрая ссылка №1</a></li>
<li><a href="$два">Хитрая ссылка №2</a></li>
<li><a href="$Snowy">Хитрая ссылка №3</a></li>
</ul><hr>
<a href="javascript:alert('Кому говорят не нажимай!!!')">Не нажимай сюда</a>
<hr><a href="ftp://ftp.hp.com/">файлики</a>
</body>
Запускаем, нажимаем кнопку, радуемся.
P.S. Тестил на Delphi XE. Готовый проект (400kb)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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