{--------------------------------------------------------}
{    Programa WordWtil
{    Interface com o Word
{    Biblioteca de opcoes do menu Procurar
{--------------------------------------------------------}

unit WuMeProc;

interface

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

procedure menuProcurar;

implementation
{-------------------------------------------------------------------------}
procedure BuscaPalavra (existe :boolean); { busca uma determinada palavra }
{-------------------------------------------------------------------------}
var
  janTemp:hwnd;
  spalavra:string;
  achou:boolean;

label sem_Palavra;

begin
   achou := true;
   if not existe then
      begin
         mensagem ('wubupa',0);   { Buscar qual palavra? }
         sintReadln (spalavra);
         strPCopy (palavra,spalavra);

         if (palavra <> '') then
            putClipBoard (palavra)
         else
            goto sem_Palavra;
      end;

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

   enviaCarac (VK_END);

   (* submenu localizar *)
   playInit (300);
   playVirtKey (ord ('L'), true, false, false, 1);
   playStart;
   while  playIsActive do;
   delay (50);

   (* opcao de localizar *)
   playInit (300);
   playVirtKey (ord ('L'), false, false, true, 1);
   playStart;
   while  playIsActive do;
   delay (50);

   (* campo de edicao da palavra *)
   playInit (300);
   playVirtKey (VK_TAB, false, false, false, 1);
   playStart;
   while  playIsActive do;
   delay (50);


   if not existe then (* se digitou o nome, passa o nome para o word *)
      begin
         playInit (300);
         playVirtKey (VK_INSERT, false, true, false, 1);
         playStart;
         while  playIsActive do;
         delay (50);
      end;

   janTemp := getActiveWindow;

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

   enviaCarac (VK_ESCAPE);

   if getActiveWindow = janTemp then
      begin
         achou := false;
         enviaCarac (VK_ESCAPE);
      end;

   sintBip; sintBip;

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

   if not achou then
      mensagem ('wunapa',1);   { O WordUtil não achou a palavra ou nova ocorrencia. }

   mensagem ('wubuter',1);   { Busca terminada. }

sem_Palavra:

end;

{--------------------------------------------------------}
procedure substituir;
{  substitui as palavras do texto por outra epecificada  }
{--------------------------------------------------------}
var
  achar,trocar:string;
  char_achar,char_trocar: array [0..80] of char;
  jan_Temp:hwnd;

begin
  textcolor  (WHITE); textbackground (BLUE);
  mensagem ('wulo',0);   {  Localizar o que }
  textcolor  (7); textbackground (BLACK);
  sintReadln (achar);
  textcolor  (WHITE); textbackground (BLUE);
  mensagem ('wusupo',0);  { Substituir por: }
  textcolor  (7); textbackground (BLACK);
  sintReadln (trocar);

  strpcopy (char_achar,achar);
  strpcopy (char_trocar,trocar);

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

  enviaCarac (VK_HOME);

  (* ativa a opao de substituir do word *)
  playInit (300);
  playVirtKey (ord ('U'), true, false, false, 1);
  playStart;
  while  playIsActive do;
  delay (50);

  jan_Temp := getActiveWindow;


  (* transfere a palavra a ser substituida *)
  putClipBoard (char_achar);

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

  enviaCarac (VK_TAB);

  (* transfere a palavra que substituira *)
  putClipBoard (char_trocar);

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

  enviaCarac (VK_TAB);

  (* opcao de substituir todas existente *)
  enviaCarac (ord ('S'));


  (* loop até que o word envie uma janela de mensagens *)
  while getActiveWindow  = jan_Temp do;

  (* sai da substituicao *)
  playInit (300);
  playVirtKey (VK_F4, false, false, true, 1);
  playStart;
  while  playIsActive do;
  delay (50);

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


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

  mensagem ('wusuter',1); {Substituicao terminada}
end;

{---------------------------}
procedure menuProcurarAjuda;
{---------------------------}
begin
   mensagem ('wumeprp',1); { P - Busca Palavra }
   mensagem ('wumeprn',1); { N - Busca Palavra novamentre }
   mensagem ('wumeprs',1); { S - Substituir }
   while sintFalando do;
end;

{----------------------------------------------}
procedure menuProcurar;    { funcoes de Busca  }
{----------------------------------------------}
var
   op:char;

label retorno;
begin
retorno:
   textcolor (WHITE); textbackground (RED);
   mensagem ('wumeprqu',0);  { Menu Procurar, qual sua opcao? }
   textcolor (7); textbackground (BLACK);

   op := sintReadKey;
   writeln (op);
   if op = #$0 then
      op := ReadKey;

   if op = F9 then while keypressed do;

   case upcase (op) of
      (* so permite a substituicao se estiver no modulo de edicao *)
      'P': BuscaPalavra (false); (* busca uma palavra *)
      'N': BuscaPalavra (true);  (* busca a mesma *)
      'S': begin
              if modulo = 'edicao' then substituir    (* substitui uma palavra por outra *)
              else mensagem ('wuesexed',1);  { Esse comando so pode ser executado em modulo de edicao }
           end;
      ESC: mensagem ('wucoca',1); { Operecao cancelada. }
      F1 : begin
              menuProcurarAjuda;
              goto retorno;
           end;
      else
         mensagem ('wuopin',1);   { Opcao invalida. }

   end;
end;
end.