Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.048 c
15-1155639110
Rouse_
2006-08-15 14:51
2006.09.10
Хех, народ хочет сделать Дельфи опенсорсным проектом :)


15-1155649947
DiamondShark
2006-08-15 17:52
2006.09.10
А у меня предложение.


9-1134888099
CrZarkon*
2005-12-18 09:41
2006.09.10
Milkshape


2-1156266682
she
2006-08-22 21:11
2006.09.10
Меньше нельзя


15-1155533431
Ega23
2006-08-14 09:30
2006.09.10
С Днём рождения! 13 августа





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский