{--------------------------------------------------------}
{    Programa WordWtil
{    Interface com o Word
{    Biblioteca de leitura de texto
{--------------------------------------------------------}

unit WuLe;

interface

uses dvcrt, winprocs, wintypes, dvwin,
     WuUtil, WuOpc, WuVars, WuMensa;

function  ModuloDeLeitura:string;

implementation


{--------------------------------------------------------------------}
function ModuloDeLeitura:string; {  procedure que tecla no programa  }
{--------------------------------------------------------------------}
var
   s, salva: string;
   c: char;
   interrompida, ja_Lido:boolean;

begin
    ja_Lido := false;
    interrompida := true;
    Novo_Modulo := 'leitura';
    textcolor (WHITE); textbackground (RED);
    mensagem ('wuleat', 0); { Modulo de leitura ativado. }
    textcolor (7); textbackground (BLACK);
    writeln;

    repeat

        while keypressed do
          begin
             c := readKey;
             interrompida := true;
          end;

        (* recorta a linha atual do Word *)
        salva := pegaLinha;

        (* retira os espacos em branco *)
        while (salva <> '') and (salva [length (salva)] = ' ') do
            delete (salva, length (salva), 1);
        s := salva;

        if s = '' then sintclek;

        (* limita a string a 79 caracteres *)
        write (copy (s, 1, 79));
        if not interrompida then
           begin
              c := ' ';
              sintetiza (s);
              ja_Lido := true;
              c := BAIX;
           end
        else (* apenas leitura *)
           begin
             sintBip;
             (* caso nao tenha sido executado o outro sintetiza *)
             if not ja_Lido then
                sintetiza (s);
             ja_Lido := false;

             (* substitui a area de transferencia *)
             putClipBoard (Clip_Board);
             checkFocus := true;

             checkBreak := false;
             c := sintEditaCampo (s, 1, wherey, 200, 80, false);
             checkBreak := true;

             (* se voutou ao programa *)
             if c = GOTFOCUS then
                verificaClipBoard; (* muda a area de transferencia se necessario *)
           end;

             checkFocus := false;

        while keypressed do
           begin
              readkey;    {ignora possiveis teclaços perigosos...}
              c := ' ';
              interrompida := true;
           end;

        writeln;
        case c of

            BAIX :  LinhaABaixo;   (* enviando caracter seta p/ baixo *)
            CIMA :  LinhaACima;   (* enviando caracter seta p/ cima *)
            PGDN :  PaginaABaixo;   (* enviando caracter Page Down *)
            PGUP :  PaginaACima;   (* enviando caracter Page Up *)
            #132 :  inicioDoTexto;
            #118 :  fimDoTexto;
            #104 :  interrompida := false;  (* Alt_F1 volta a leitura sequuencial *)
            F9   :  MenuOpcoes;    (* possibilita várias opcoes *)
            ESC  : Novo_Modulo := 'sair';
            F7   : Novo_Modulo := 'edicao';

        end;
    until (Novo_Modulo = 'sair') or (Novo_Modulo = 'edicao');

    ModuloDeLeitura := Novo_Modulo;
end;
end.