{--------------------------------------------------------}
{    Programa WordWtil
{    Interface com o Word
{    Biblioteca do submenu arquivo
{--------------------------------------------------------}

unit WuArquiv;

interface

uses dvcrt, winprocs, wintypes, dvwin,WuMeFo,
     WuUtil, WuVars, WuMensa,
     strings, dvmacro;

function AbrirArquivo (NArq :string; TArq :string) :boolean;
function CriaNovo (NArq :string; TArq :string) :boolean;
procedure fecharArquivo;
function Salva:boolean;

implementation

{-----------------------------------------------------}
procedure fecharArquivo;  { fecha o aquivo sem salvar }
{-----------------------------------------------------}
begin
   setActiveWindow (Jan_Prog);
   repeat keypressed until getActiveWindow = Jan_Prog;

   (* fecha o arquivo já existente *)
   playInit (300);
   playVirtKey (VK_F4, true, false, false, 1);
   playStart;
   while  playIsActive do;
   delay (50);

   (* não confiarma a gravacao caso nao tenha sido feita *)
   if getActiveWindow <> Jan_Prog then
      begin
         enviaCarac (ord ('N'));
         delay (50);
      end;

end;

{-----------------------------------------------------------}
function AbrirArquivo (NArq :string; TArq :string) :boolean;
         {  funcao para abertura de arquivos  }
{-----------------------------------------------------------}
var
   nome :array [0..79] of char;
   jan_Abert :hwnd;
   tipo:array [0..3] of char;
   p:integer;
begin
   mensagem ('wuagin',1);  {Aguarde um instante.}

   p := pos ('.', NArq);
   if p = 0 then
      NArq := NArq + '.' + TArq;

   strpcopy (nome,NArq);
   putClipBoard (nome);

   setActiveWindow (Jan_Prog);
   repeat keypressed until getActiveWindow = Jan_Prog;

   (* acionado o menu Arquivo e Abrir *)
   playInit (300);
   playVirtKey (ord ('A'), true, false, false, 1);
   playStart;
   while  playIsActive do;
   delay (50);

   jan_Abert := getActiveWindow;

   (* muda para o tipo do arquivo *)
   enviaCarac (VK_TAB);
   enviaCarac (ord ('C'));
   enviaCarac (VK_HOME);

   strPcopy (tipo,TArq);

   ansiUpper (tipo);

   (* seleciona o tipo de arquivo *)
   if strComp (tipo, 'DOC') = 0 then
      enviaCarac (ord ('D'));

   enviaCarac (VK_RETURN);

   playInit (300);
   playVirtKey (ord ('N'), false, false, true, 1);
   playStart;
   while  playIsActive do;
   delay (50);

   (* colando o nome do arquivo *)
   playInit (300);
   playVirtKey (VK_INSERT, false, true, false, 1);
   playStart;
   while  playIsActive do;
   delay (50);

   (* comeca a abertura *)
   enviaCarac (VK_RETURN);

   playInit (300);
   playVirtKey (ord ('A'), false, false, true, 1);
   playStart;
   while  playIsActive do;
   delay (1000);

   if (getActiveWindow <> jan_abert) and (getActiveWindow <> jan_Prog)  then
      enviaCarac (VK_RETURN);

   (* se conseguiu abrir *)
   if getActiveWindow = Jan_Prog then
      AbrirArquivo := true
   else
      begin
         enviaCarac (VK_ESCAPE);
         enviaCarac (VK_ESCAPE);
         delay (100);
         AbrirArquivo := false;
      end;

   setActiveWindow (Minha_Jan);
   repeat keypressed until getActiveWindow = Minha_Jan;
end;

{------------------------------------------------------}
function CriaNovo(NArq :string; TArq :string) :boolean;
{        funcao para criacao de um novo arquivo
{------------------------------------------------------}
var
   nomeJan,nome :array [0..79] of char;
   tipo :array [0..3]  of char;
   p:integer;
begin
   mensagem ('wuagin',1);  {Aguarde um instante.}

   p := pos ('.', NArq);
   if p = 0 then
      NArq := NArq + '.' + TArq;

   strpcopy (nome,NArq);
   putClipBoard (nome);

   setActiveWindow (Jan_Prog);
   repeat keypressed until getActiveWindow = Jan_Prog;

   (* abre o arquivo novo *)
   playInit (300);
   playVirtKey (ord ('O'), true, false, false, 1);
   playStart;
   while  playIsActive do;
   delay (50);

   (* Regrava com outro nome *)
   playInit (300);
   playVirtKey (ord ('A'), false, false, true, 1);
   playStart;
   while  playIsActive do;
   delay (100);

   enviaCarac (ord ('C'));

   (* colando o nome do arquivo *)
   playInit (300);
   playVirtKey (VK_INSERT, false, true, false, 1);
   playStart;
   while  playIsActive do;
   delay (100);

   (* muda para o tipo do arquivo *)
   enviaCarac (VK_TAB);
   enviaCarac (ord ('C'));
   enviaCarac (VK_HOME);

   strPcopy (tipo,TArq);

   ansiUpper (tipo);

   (* seleciona o tipo de arquivo *)
   if strComp (tipo, 'DOC') = 0 then
      enviaCarac (ord ('D'));

   (* comeca a abertura *)
   enviaCarac (VK_RETURN);

   playInit (300);
   playVirtKey (ord ('S'), false, false, true, 1);
   playStart;
   while  playIsActive do;
   delay (100);

   (* espera tentar abrir *)
   delay (500);

   (* se conseguiu criar *)
   if getActiveWindow = Jan_Prog then
      begin
        CriaNovo := true;
        modulo := 'edicao';
      end
   else
      begin
         getwindowtext (getActiveWindow,nomeJan,80);


         if pos ('Propriedades',strpas (nomeJan)) <> 0 then
            begin
               enviaCarac (VK_RETURN);
               CriaNovo := true;
               modulo := 'edicao';
            end
         else
            begin
               enviaCarac (VK_ESCAPE);
               enviaCarac (VK_ESCAPE);
               delay (100);
               CriaNovo := false;
            end;
      end;

   playInit (300);
   playVirtKey (VK_END, false, true, false, 1);
   playStart;
   while  playIsActive do;
   delay (100);

   modificaBloco ('C');

   setActiveWindow (Minha_Jan);
   repeat keypressed until getActiveWindow = Minha_Jan;

   novo := true;
end;

{-------------------------------------------------------}
function Salva:boolean; { salvar o arquivo já existente }
{-------------------------------------------------------}
begin
   mensagem ('wuagin',1);  {Aguarde um instante.}
   setActiveWindow (Jan_Prog);
   repeat keypressed until getActiveWindow = Jan_Prog;

   playInit (300);
   playVirtKey (ord ('B'), true, false, false, 1);
   playStart;
   while  playIsActive do;
   delay (50);

   setActiveWindow (Minha_Jan);
   repeat keypressed until getActiveWindow = Minha_Jan;

   mensagem ('wuarsa',1);   { Arquivo salvo. }

end;
end.