Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.10;
Скачать: CL | DM;

Вниз

HTML и Буфер обмена   Найти похожие ветки 

 
SerJaNT ©   (2006-08-19 14:38) [0]

В буфере находится скопированная (через CTRL+C) в IE Web страничка. Как отобразить эту страничку (из буфера) в WebBrowser?


 
Пусик ©   (2006-08-19 14:58) [1]

Если страница не очень большая, можно получить буфер в строку,
потом

var
URL: OLEVariant;
begin
URL := "about:"+MyStrFromBuf;
WebBrowser1.Navigate2(URL);


 
SerJaNT ©   (2006-08-19 15:10) [2]

Делаю так:
procedure TMainForm.PasteHTMLClick(Sender: TObject);
var
 URL: OLEVariant;
begin
URL := "about:"+clipboard.AsText;
WebBrowser1.Navigate2(URL);
end;


Но ничего не грузится. Вернее грузится, только как plain text. А мвсе из-за clipboard.AsText! Как вставить в WebBrowser html?


 
TUser ©   (2006-08-19 15:11) [3]


> Но ничего не грузится. Вернее грузится, только как plain
> text. А мвсе из-за clipboard.AsText! Как вставить в WebBrowser
> html?

Ты же правильно сказал - в буфере нет html"а. Нечего вставлять.


 
Пусик ©   (2006-08-19 15:13) [4]


> Вернее грузится, только как plain text


Значит в буфере у тебя текст без разметки.
Естественно, так он и будет показан.


 
SerJaNT ©   (2006-08-19 15:18) [5]

> Значит в буфере у тебя текст без разметки.
> Естественно, так он и будет показан.


Нет, я в ослике веб страничку скопировал. В буфере значит уже не plain text будет т.к. например в ворд вставляется как web-страничка. Это все из-за clipboard.AsText - возвращает html как обычный текст. Ладно, тогда как получить содержимое буфера в виде html? И нужно без всякой доп.инфы  в начале html-кода типа:

StartHTML:000000213
EndHTML:000001726
StartFragment:000000703
EndFragment:000001647
StartSelection:000000703
EndSelection:000001647
SourceURL:res://C:\WINDOWS\System32\shdoclc.dll/navcancl.htm


 
Пусик ©   (2006-08-19 18:02) [6]

Например, так:

function TForm3.SetWBFromClibboard: Boolean;
var
Document: IHTMLDocument2;
V: OleVariant;
Data: THandle;
Len: Integer;
StartHtml,EndHtml: Integer;
w: WideString;
s,s1: String;
begin
Result := True;
try
 if WB.Document = nil then WB.Navigate("about:blank");

 while WB.Document = nil do Application.ProcessMessages;

 Clipboard.Open;
 Data := GetClipboardData(49337);
 try
  if Data <> 0
   then w := PWideChar(GlobalLock(Data))
   else w := "";
 finally
  if Data <> 0 then
    GlobalUnlock(Data);
    Clipboard.Close;
 end;
 s := Utf8ToAnsi(PChar(w));
 Len := Pos("<",s);
 s1 := Copy(s,1,Len);
 Len := Pos("StartHTML:",s1);
 Delete(s1,1,Len+9);
 Len := Pos(#13#10,s1);
 StartHtml := StrToInt(Copy(s1,1,Len-1));
 Delete(s1,1,Len+1);
 Len := Pos(":",s1);
 Delete(s1,1,Len);
 EndHtml := StrToInt(Copy(s1,1,Pos(#13#10,s1)-1) );

 s := Copy(s,StartHtml+1,EndHtml-StartHtml);
 try
  V := VarArrayCreate([0, 0], varVariant);
  Document:= WB.Document as IHtmlDocument2;
  V[0] := s;
  Document.Write(PSafeArray(TVarData(v).VArray));
 finally
  Document.Close;
 end;
except
 Result := False;
end;

end;


 
SerJaNT ©   (2006-08-22 13:01) [7]

> [6] Пусик ©   (19.08.06 18:02)


Спасибо за код, но он не работает т.е. появляется ошибка EConvertError. Уже что только с ним не делал, ничего не пойму. Переменная w просто пустая! А StrToInt пытается ее конвертировать в число,тут то и ошибка... Я посмотрел код скопированной странички, так там до startHTML еще какой-то текст есть.


 
SerJaNT ©   (2006-08-23 01:43) [8]

up!



Страницы: 1 вся ветка

Текущий архив: 2006.09.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.044 c
1-1153808383
atruhin
2006-07-25 10:19
2006.09.10
Модальное окно в MDI приложении


2-1155793360
DelphiLexx
2006-08-17 09:42
2006.09.10
Добавить записи из одного TList в другой


1-1153766697
AlexeyT
2006-07-24 22:44
2006.09.10
Отклик на команду XP "Каскадом"


15-1154079916
Внук
2006-07-28 13:45
2006.09.10
В отпуск!


15-1155703959
MASTAFA
2006-08-16 08:52
2006.09.10
Скомпилированный файл справки. Как сделать?