home *** CD-ROM | disk | FTP | other *** search
Wrap
unit form_main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, interface_script, Printers, ShellApi; type TformMain = class(TForm) editPalavra: TEdit; memoTraducao: TMemo; listPalavras: TListBox; cbIdioma: TComboBox; imFundo: TImage; imCopiar: TImage; imImprimir: TImage; imTraduzir: TImage; imEmail: TImage; procedure FormCreate(Sender: TObject); procedure cbIdiomaChange(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure PreencheLista(S: String); function RemoveAcentos(S:String):String; procedure TraduzTexto(S: String); procedure listPalavrasClick(Sender: TObject); procedure imTraduzirClick(Sender: TObject); procedure imCopiarClick(Sender: TObject); procedure imImprimirClick(Sender: TObject); procedure imEmailClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var formMain: TformMain; MainPath: String; Lista, Doc, Ind: TStringList; implementation uses form_Aguarde; {$R *.DFM} procedure TformMain.FormCreate(Sender: TObject); var i: Integer; begin caption := Application.Title; //Criaτπo do MainPath MainPath := ExtractFilePath(Application.ExeName); if MainPath[Length(MainPath)]<>'\' then MainPath := MainPath + '\'; MainPath := MainPath+'dados\'; //Preenche a o Combo com a lista de dicionßrio Lista := TStringList.Create; if FileExists(MainPath+'lista.txt') then Lista.LoadFromFile(MainPath+'lista.txt') else Lista.Text:=''; for i:=0 to Lista.Count-1 do begin cbIdioma.Items.Add(Copy(Lista[i],pos('=',Lista[i])+1,Length(Lista[i]))); end; cbIdioma.Sorted:=True; cbIdioma.Text:='Selecione os Idiomas desejados.'; //StringList que vai conter o dicionario do idioma selecionado sem alteraτπo Doc:=TStringList.Create; Ind:=TStringList.Create; end; procedure TformMain.cbIdiomaChange(Sender: TObject); var i: Integer; begin //Doc lΩ o arquivo referente ao idioma escolhido Ind.Sorted:=True; for i:=0 to Lista.Count-1 do begin if FileExists(MainPath+Copy(Lista[i],0,pos(cbIdioma.Text,Lista[i])-2)+'.txt') then begin Doc.LoadFromFile(MainPath+Copy(Lista[i],0,pos(cbIdioma.Text,Lista[i])-2)+'.txt'); Ind.LoadFromFile(MainPath+Copy(Lista[i],0,pos(cbIdioma.Text,Lista[i])-2)+'.ind'); break; end else begin Doc.Text:=''; end; end; PreencheLista(editPalavra.Text); memoTraducao.Clear; end; procedure TformMain.FormDestroy(Sender: TObject); begin Lista.Free; Doc.Free; Ind.Free; end; procedure TformMain.PreencheLista(S: String); var i, Index: Integer; Sa, Sb: String; begin listPalavras.Clear; if Length(S)>0 then begin Sa := AnsiUpperCase(RemoveAcentos(S)); for i:=0 to Ind.Count-1 do begin Index := StrToInt(Copy(Ind[i],pos('#',Ind[i])+1,length(Ind[i]))); if (pos(Sa,Ind[i])>0) then begin listPalavras.Items.Add(Copy(Doc[Index],3,Length(Doc[Index]))); caption := ' Aguarde... Carregando dicionßrio. '+IntToStr(Trunc(100*i/(Doc.Count-1)))+'%'; end; end; end; listPalavras.Sorted := True; caption:= Application.Title; end; procedure TformMain.TraduzTexto(S: String); var i, j: Integer; Sb, Sa: String; begin memoTraducao.Clear; Sa := AnsiUpperCase(RemoveAcentos(S)); for i:=0 to Ind.Count-1 do begin Sb := Copy(Ind[i],0,pos('#',Ind[i])-1); if Sa=Sb then begin j:=StrToInt(Copy(Ind[i],pos('#',Ind[i])+1,length(Ind[i])))+1; while pos('##',Doc[j])=0 do begin memoTraducao.Lines.Add(Doc[j]); Inc(j); end; break; end; end; end; function TformMain.RemoveAcentos(S:String):String; var I : Integer; begin For I := 1 to Length(S) do begin if S[i] in ['ß','π','α','Σ','Γ'] then S[i]:='a' else if S[i] in ['┴','├','└','─','┬'] then S[i]:='A' else if S[i] in ['Θ','Φ','δ','Ω'] then S[i]:='e' else if S[i] in ['╔','╚','╦','╩'] then S[i]:='E' else if S[i] in ['φ','∞','∩','ε'] then S[i]:='i' else if S[i] in ['═','╠','╧','╬'] then S[i]:='I' else if S[i] in ['≤','⌡','≥','÷','⌠'] then S[i]:='o' else if S[i] in ['╙','╒','╥','╓','╘'] then S[i]:='O' else if S[i] in ['·','∙','ⁿ','√'] then S[i]:='u' else if S[i] in ['┌','┘','▄','█'] then S[i]:='U' else if S[i] in ['²',' '] then S[i]:='y' else if S[i] in ['▌','ƒ'] then S[i]:='Y' else if S[i] = '±' then S[i]:='n' else if S[i] = '╤' then S[i]:='N' else if S[i] = 'τ' then S[i]:='c' else if S[i] = '╟' then S[i]:='C' end; Result := S; end; procedure TformMain.listPalavrasClick(Sender: TObject); begin TraduzTexto(listPalavras.Items[listPalavras.ItemIndex]); end; procedure TformMain.imTraduzirClick(Sender: TObject); begin TraduzTexto(editPalavra.Text); PreencheLista(editPalavra.Text); end; procedure TformMain.imCopiarClick(Sender: TObject); begin if memoTraducao.SelLength<=0 then begin memoTraducao.SelectAll; memoTraducao.CopyToClipboard; memoTraducao.SelLength:=0; end else begin memoTraducao.CopyToClipboard; end; end; procedure TformMain.imImprimirClick(Sender: TObject); var Size: TSize; i: Integer; begin with Printer do begin BeginDoc; Canvas.Font.Assign(editPalavra.Font); Canvas.Font.Size := 16; i:=0; while i<memoTraducao.Lines.Count-1 do begin Size := Printer.Canvas.TextExtent(memoTraducao.lines[i]); Canvas.TextOut(250,250+((i*Size.cy)+10),memoTraducao.Lines[i]); if (memoTraducao.Lines[i][length(memoTraducao.Lines[i])]=';') or (memoTraducao.Lines[i][length(memoTraducao.Lines[i])]=' ') then begin Canvas.TextOut(250+Size.cx+10,250+((i*Size.cy)+10),memoTraducao.Lines[i+1]); Inc(i,2); end else begin Inc(i); end; end; EndDoc; end; end; procedure TformMain.imEmailClick(Sender: TObject); begin if ShellExecute(Handle,'open',PChaR('mailto:diogo@europanet.com.br'),nil,nil,SW_SHOW)<=32 then MessageBox(Handle,PChar('Nπo existe nenhum cliente de email configutado nesse computador.'),PChar(Application.Title),MB_OK+MB_ICONSTOP+MB_TASKMODAL); end; end.