Traduzindo o Preview do RAVE 5.0

Delphi

26/05/2003

Fonte: Adenilton Rodrigues http://lib.seven.com.br/

Veja algumas técnicas para a tradução e personalização dos formularios de Preview, Setup e Status do Rave 5.0 que acompanha o Delphi 7.0



Personalizando o Formulario de Preview do RAVE. Personalizar o Formulário de Preview do RAVE não é uma tarefa muito simples. A própria Nevrona já publicou várias formas de se fazer isso. Infelizmente não são práticas nem eficientes. Vou repassar aqui duas das que considero ´interessantes´: ================================================================================ Técnica 1 - Modificar os arquivos originais e fazer a sobreposição da compilação ================================================================================ Se você possui o código fonte do RAVE 5.0 (Disponível pra quem pagou pela versão Borland Extended - BEX), faça o seguinte: 1. Vá ao diretório Sources do RAVE e copie os arquivos abaixo para uma outra pasta: RpFormPreview.pas + RpFormPreview.dfm - Esses dois arquivos contém o formulário de visualização do relatório. Realize as customizações necessárias (Tradução, troca de icones, implementação de novos recursos, etc). RpFormSetup.pas + RpFormSetup.dfm - É responsável pela apresentação do formulário de seleção do destino da impressão, configuração da impressora, seleção de páginas, etc. Obs: Cuidado na hora da personalização, existe um TabSheet invisível (atrás do GroupBox chamado DestGB) que contém as opções de seleção de página. Para evitar esquecimento, vá ao Object Inspector e no ComboBox dos objetos do formulário, escolha o Tabsheet2. Realize as configurações necessárias. Volte ao TabSheet1 (pelo Object Inspector) e configure suas opções conforme sua necessidade. RpFormStatus.pas + RpFormStatus.dfm - Contém o formulário de status da impressão (aquele que é mostrado enquanto a impressão/geração do preview não finalizar). 2. Realize todas as customizações necessárias nesses arquivos. 3. Na IDE do Delphi, vá no menu principal em TOOLS/Environment Options, clique na Tabsheet ´Library´ e em Directories/Library Path adicione a pasta onde você realizou as modificações nos arquivos de visualização. IMPORTANTE: Após adicionar essa pasta, arraste-a para cima de forma ficar hierarquicamente superior à pasta do RAVE 5. Melhor exemplificando, ela deverá vir antes da pasta ´$(DELPHI)\\\\Rave5´. Isto é necessário porque o Delphi quando procura pelas units declaradas nos programas o fará iniciando pela primeira pasta desta configuração e descerá até encontrá-la. A primeira sempre terá prioridade sobre as demais. Desta forma ao encontrar os arquivos modificados, ele os ignorará na pasta do rave, assim seu formulário customizado terá prioridade sobre os formulários padrões do RAVE. 4. Pronto. Crie seus relatorios normalmente e na hora da compilação o seu formulario customizado será sobreposto ao do Rave. ================================================================================= Técnica 2 - Usar os eventos OnOverridePreview, OnOverrideStatus e OnOverrideSetup do Objeto TRVSystem. ================================================================================= Esta técnica consiste em criar os 3 formulários do RAVE (Preview, Setup e Status) e forçar a engine de relatórios (TRVSystem) a acioná-los através os eventos de sobreposição de formulários OnOverrideXXXXX. É uma técnica melhor que anterior porque torna os formulários independentes das configurações do Delphi, basta adicionar as units ao seu projeto e apontar os eventos para o novo formulário. Se você não quiser partir do zero, sugiro copiar os arquivos abaixo da pasta ´Sources´ do Rave5 e realizar as modificações necessárias: RpFormPreview.pas + RpFormPreview.dfm, RpFormSetup.pas + RpFormSetup.dfm, RpFormStatus.pas + RpFormStatus.dfm, 1. Copie os 6 arquivos para outra pasta. 2. Mude seu nomes para evitar transtornos com os formulários originais do Rave. Sugiro, por exemplo o seguinte padrão: CustomFormPreview.pas + CustomFormPreview.dfm, CustomFormSetup.pas + CustomFormSetup.dfm, CustomFormStatus.pas + CustomFormStatus.dfm, Abra o arquivo CustomFormPreview.pas no bloco de notas e troque o nome da unit de ´unit RpFormPreview´ para ´unit CustomFormPreview´. Faça o mesmo para os outros arquivos. 3. Execute o Delphi, abra o arquivo CustomFormPreview e mude o nome do formulário principal de ´RavePreviewForm´ para ´CustomPreviewForm´. Salve-o. Faça o mesmo para os outros arquivos. Vá se acostumando com a ´cara´ desses 3 formulários, pois serão eles que você irá customizar. 4. Abra novamente o arquivo ´CustomPreviewForm´ e realize as modificações abaixo: Localize a string TRavePreviewForm e troque todas ocorrências por TCustomPreviewForm 5. Abra o arquivo ´CustomStatusForm´ e realize as modificações abaixo: Localize a string TRaveStatusForm e troque todas ocorrências por TCustomStatusForm 6. Pronto, salve todas as modificações. 7. Para testar as customizações, crie um novo projeto contendo um TButton e um TRVSystem. . Adicione à cláusula uses: CustomFormPreview, CustomFormStatus, CustomFormSetup . No evento onClick do Button1 escreva: rvSystem1.Execute; . No Evento onOverridePreview escreva o código abaixo: case OverrideMode of omCreate: begin OverrideForm := TCustomPreviewForm.Create(AOwner); OverrideForm.Caption := ReportSystem.TitlePreview; OverrideForm.Width := ReportSystem.SystemPreview.FormWidth; OverrideForm.Height := ReportSystem.SystemPreview.FormHeight; OverrideForm.WindowState := ReportSystem.SystemPreview.FormState; (OverrideForm as TCustomPreviewForm).ReportSystem := ReportSystem; { esta linha abaixo não é compativel com o Rave 5.0.04 } { Baixe a atualização para o 5.0.08 no site da borland } { ou então remova-a } (OverrideForm as TCustomPreviewForm).OnAfterPreviewPrint := ReportSystem.OnAfterPreviewPrint; end; omShow: begin (OverrideForm as TCustomPreviewForm).RvRenderPrinter.MacroData.Assign(ReportSystem.StorageMacroData); (OverrideForm as TCustomPreviewForm).RvRenderPreview.MacroData.Assign(ReportSystem.StorageMacroData); { as duas linhas abaixo não são compativeis com o Rave 5.0.04 } (OverrideForm as TCustomPreviewForm).RvRenderPrinter.OnDecodeImage := ReportSystem.OnDecodeImage; (OverrideForm as TCustomPreviewForm).RvRenderPreview.OnDecodeImage := ReportSystem.OnDecodeImage; ReportSystem.SystemPreview.InitPreview((OverrideForm as TCustomPreviewForm).RvRenderPreview); if Assigned(ReportSystem.OnPreviewSetup) then begin ReportSystem.OnPreviewSetup((OverrideForm as TCustomPreviewForm).RvRenderPreview); end; (OverrideForm as TCustomPreviewForm).InputFileName := ReportSystem.SystemFiler.Filename; (OverrideForm as TCustomPreviewForm).InputStream := ReportSystem.SystemFiler.Stream; (OverrideForm as TCustomPreviewForm).InitFromRPSystem; if soPreviewModal in ReportSystem.SystemOptions then begin OverrideForm.ShowModal; end else begin OverrideForm.Show; end; end; omWait: begin if not (soPreviewModal in ReportSystem.SystemOptions) then begin repeat Sleep(250); Application.ProcessMessages; until not OverrideForm.Visible; end; end; omFree: begin if (ReportSystem.SystemFiler.StreamMode in [smTempFile,smFile]) then begin (OverrideForm as TCustomPreviewForm).RvRenderPreview.NDRStream.Free; (OverrideForm as TCustomPreviewForm).RvRenderPreview.NDRStream := nil; end; FreeAndNil(OverrideForm); end; end; . No Evento onOverrideSetup escreva o código abaixo: case OverrideMode of omCreate: begin OverrideForm := TCustomSetupForm.Create(Self); OverrideForm.Caption := ReportSystem.TitleSetup; (OverrideForm as TCustomSetupForm).ReportSystem := ReportSystem; end; omShow: begin with OverrideForm as TCustomSetupForm,ReportSystem do begin PreviewSetup := false; Aborted := ShowModal = mrCancel; end; end; omWait: begin end; omFree: begin FreeAndNil(OverrideForm); end; end; . No Evento onOverrideStatus escreva o código abaixo: if not (soShowStatus in ReportSystem.SystemOptions) then Exit; case OverrideMode of omCreate: begin OverrideForm := TCustomStatusForm.Create(AOWner); OverrideForm.Caption := ReportSystem.TitleStatus; (OverrideForm as TCustomStatusForm).ReportSystem := ReportSystem; end; omShow: begin with OverrideForm as TCustomStatusForm,ReportSystem do begin BaseReport.StatusLabel := StatusLabel; CancelButton.Caption := Trans(´Cancelar´); Show; end; end; omWait: begin with OverrideForm as TCustomStatusForm,ReportSystem do begin if soWaitForOK in SystemOptions then begin CancelButton.Caption := Trans(´Ok´); CancelButton.ModalResult := mrOk; FormClosed := false; repeat Application.ProcessMessages; until FormClosed; end; end; end; omFree: begin FreeAndNil(OverrideForm); end; end; 8. Execute o programa e você verá que as customizações serão compiladas e os formulários serão sobrepostos aos standard do Rave5. 9. Você certamente achará um grande inconveniente ter que escrever todo esse código a cada novo projeto. A minha recomendação é criar uma Unit, por exemplo ´CustomPreview.pas´, declarar as 3 rotinas como procedure. Para utiliza-las, bastaria adicionar a CustomPreview à cláusula Uses do seu programa e chamá-las em cada evento. 10. Infelizmente não posso publicar o código completo dos formulários aqui porque eles pertencem à Nevrona e só estão disponíveis para os usuários registrados do RAVE BEX. Estou disponibilizando as DCU´s dos arquivos modificados. Não garanto o funcionamento em todas as versões do RAVE (Realizei os testes nas versoes 5.0.04, 5.0.08 e 5.1.0). Estou à disposição para eventuais esclarecimentos em aden@aden.com.br. Não esqueça de atualizar o RAVE. A versão que acompanha o Delphi 7.0 é a 5.0.04. Atualize para 5.0.08 em: ftp://ftpd.borland.com/devsupport/delphi/d7/rave/rave_be_5_0_8.exe



Carnette

Carnette

Curtidas 0

Respostas

Rodvac

Rodvac

26/05/2003

Alguém já fez etiqueta com código de barra no Rave, se sim por favor como faço isso, estou querendo imprimir em uma impressora Eltron


GOSTEI 0
Carnette

Carnette

26/05/2003

Alguém já fez etiqueta com código de barra no Rave, se sim por favor como faço isso, estou querendo imprimir em uma impressora Eltron


Vai no site http://lib.seven.com.br/ eu lí algo sobre código de barras no Rave...só não lembro se falava sobre etiquetas...procura por lá..ok


GOSTEI 0
POSTAR