Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вывод HTML файла на принтер [D5, Win95/98]


ksu ©   (2002-10-09 13:28:00) 

для отображения файла HTML на форме использую Active X компонент TDHTMLED,который был импортирован стандартным образом. Загружаю через метод LoadURL файл, печатаю на принтере методом PrintDocument - все выполняется нормально. При выходе из программы или при методе Destroy или Free компоненты TDHTMLED выдается сообщение об ошибке " Access violation in module DHTMLED.OCX ...". Помогите в чем проблема - может его надо проинициализовать как-то, а потом освободить. Может кто подскажет другой способ печати через компоненту WEBBrowser - не могу найти как через эту компоненту послать на печать файл HTML.


Владимир Васильев   (2002-10-09 14:07:00) [1]

procedure TOutForm.DoCopy;
var
A,B : OleVariant;
//Doc : IHTMLDocument2;
rng : IHTMLTxtRange;
Sel : IHTMLSelectionObject;

//TxtList : TStringList;
//SelTxt : WideString;
//Prn : System.Text;
//i : integer;

IECommand : IOleCommandTarget;

MaxBuff : integer;
begin
MaxBuff:=10240;

//Doc := WebBrowser1.Document as IHTMLDocument2;
if Doc=(nil) then
begin
//ShowMessage("Doc Not Loaded");
Exit;
end;

Sel:=Doc.selection as IHTMLSelectionObject;
rng:=Sel.createRange as IHTMLTxtRange;

if Length(rng.text)>MaxBuff then
begin
rng.collapse(true);
//rng.expand("Sentence");
//rng.moveEnd("Sentence",2);
//rng.moveEnd("word",2);
rng.moveEnd("character",MaxBuff);
rng.select;
end;

IECommand := Doc as IoleCommandTarget;
IECommand.Exec(nil, OLECMDID_COPY,OLECMDEXECOPT_PROMPTUSER, A, B);

Exit;

//Print

SelTxt:=rng.text;
if SelTxt="" then
begin
PrintAllDoc:=false;
ShowLocalHelpForm;
end
else
begin
OleCheck(Doc.QueryInterface(IOleCommandTarget,OleCommandTarget));
OleCommandTarget.Exec(nil,OLECMDID_PRINT,OLECMDEXECOPT_PROMPTUSER,A,A);
OleCommandTarget:=nil;
Exit;
end;

Application.ProcessMessages;

if PrintAllDoc then
begin
OleCheck(Doc.QueryInterface(IOleCommandTarget,OleCommandTarget));
OleCommandTarget.Exec(nil,OLECMDID_PRINT,OLECMDEXECOPT_PROMPTUSER,A,A);
OleCommandTarget:=nil;
end;

end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо