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

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

Из Delphi в HTML [D5, WinXP]


Natalie_Q ©   (2004-07-19 17:17:00) 

Проблема у меня такая: нужно заполнить форму Delphi, а затем перенести эти данные в HTML для распечатки. Я сделала шаблон страницы HTML и обрабатываю его TPageProducer'ом. Но загвоздка вот в чем, как отобразить уже обработанную страницу, не используя TWebModule? Заранее спасибо!


Ega23   (2004-07-19 17:20:00) [1]

Давно писалось, тут из запроса файл генериться и IE запускается. Посмотри, может поможет...

Function QueryToHTML(rq:TRxQuery;sqls:string='*';aFile:string=''; browsekind: integer=1):boolean;
var
   ss,fURL,fFn:string;
   slst:tstringlist;
   hnd:Thandle;
//.......
Procedure ChangeFileDate(aFn:string;aDate:tdatetime=0);
var dt:tdatetime;
   hnd:integer;
begin
try
 hnd:=-100;
 if aDate=0 then dt:=now()-100 else dt:=aDate;
 hnd:= FileOpen(aFN, fmOpenWrite or fmShareDenyNone);
 if hnd>0 then FileSetDate(Hnd, DateTimeToFileDate(dt) );
finally
 if hnd>0 then FileClose(hnd);
end;
end;

//.......

Function DoBrowse:boolean;
begin
     if BrowseKind=1 then
     begin
      hnd:= FileExecute(fURL, '', '', esNormal);
       if hnd <= 32 then
       begin
        ShowMessage('Не могу запустить iexplore.exe');
        exit;
       end;
      hnd:=FindWindow('IEFrame',nil);
      if hnd <>0 then BringWindowToTop(hnd);
     end;//of BrowseKind=1

end;
//.......
Begin
result:=false;
 if NoConnectGlb then exit; //@@ 09-10-2001

TRY
  if trim(aFile)='' then fFn:=extractfilepath(paramstr(0))+'\form0.htm'
                    else fFn:=aFile;
  fURL:='file://localhost/'+fFn;

  if RQ=nil then // просто показать файл
  begin
   if not FileExists(fFn) then exit;
    DoBrowse;
    result:=true;
    exit;
  end;

  if sqls<>'*' then RQ.Sql.text:=sqls;
   RQ.Close;
   Application.ProcessMessages;
   RQ.Open;
   RQ.first;
   ss:='';
   while not RQ.eof do
   begin
    ss := ss+ RQ.Fields[0].asString;
    RQ.next;
   end;

  if (ss<>'') then
  begin
    //if trim(aFile)='' then fFn:=extractfilepath(paramstr(0))+'\form0.htm'
   //                  else fFn:=aFile;
   // fURL:='file://localhost/'+fFn;
      slst:=tstringlist.Create;
      slst.Add(ss);
      slst.SaveToFile(fFn);
      slst.free;slst:=nil;
    ChangeFileDate(fFn);
    DoBrowse;
   result:=true;
  end;
FINALLY
 if slst<>nil then begin slst.free;slst:=nil; end;
END
(* Чтобы iexplore стоял на экране - в приложение добавить на таймер ???
var hnd :thandle;
begin
 hnd:=FindWindow('IEFrame',nil);
 if hnd <>0 then BringWindowToTop(hnd);
end;
*)
//QueryToHTML(rq,'exec s_InfSchedSummary @schedcod=1, @persid=0');
end;


Наверх

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