Traduzindo o Preview do RAVE 5.0
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
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
Curtidas 0
Respostas
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
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