Alternativa alterar unit original

Delphi

25/09/2007

Algum tempo atráz precisei incluir as 2 linhas abaixo nas procedures BeginDoc e NewPage da unit original Printers, nunca tinha dado problema, porém agora começou dar conflito (was compiled version different) com um novo componente que instalei.

Tem alternativa ao invés de mexer na unit original do Delphi, porque estas linhas pra funcionar tem que estar antes da linha StartPage(DC). Pensei em criar uma unit nova descendente de Printers só com BeginDoc, NewPage pra sobrepor os originais, mas não sei como fazer isto.

DevMode.dmDefaultSource:=FNumBand; // <-- muda bandeja impressão
Windows.ResetDC(DC,DevMode^); // <-- aplica alteração


procedure TPrinter.BeginDoc;
var
DocInfo: TDocInfo;
begin
CheckPrinting(False);
SetState(psHandleDC);
Canvas.Refresh;
TPrinterCanvas(Canvas).UpdateFont;
FPrinting := True;
FAborted := False;
FPageNumber := 1;
FillChar(DocInfo, SizeOf(DocInfo), 0);
with DocInfo do
begin
cbSize := SizeOf(DocInfo);
lpszDocName := PChar(Title);
end;
SetAbortProc(DC, AbortProc);
StartDoc(DC, DocInfo);

DevMode.dmDefaultSource:=FNumBand; // <-- muda bandeja impressão
Windows.ResetDC(DC,DevMode^); // <-- aplica alteração

StartPage(DC);
end;


procedure TPrinter.NewPage;
begin
CheckPrinting(True);
EndPage(DC);

DevMode.dmDefaultSource:=FNumBand; //<-- muda bandeja impressão
Windows.ResetDC(DC,DevMode^); //<-- aplica alteração

StartPage(DC);
Inc(FPageNumber);
Canvas.Refresh;
end;


Obrigado,


Edurocha

Edurocha

Curtidas 0

Respostas

Weber

Weber

25/09/2007

Copie a Unit original do Delphi para a pasta do seu projeto, então faça as alterações na cópia da unit dentro da pasta do seu projeto.
Quando você compilar o Delphi vai assumir esta cópia da unit.


GOSTEI 0
Edurocha

Edurocha

25/09/2007

Valeu Weber já deu uma luz... fiz isto só que quando compilo o conflito continua, pois neste mesmo projeto utilizo os componentes novos que gera o erro was compiled version different.

O que mais poderia fazer ? Tem alguma forma de compilar o form que usa o componente novo utilizar a unit original do Delphi e o restante do meu projeto utilizar a unit alterada ?

Obrigado,


GOSTEI 0
Paulo Samurai

Paulo Samurai

25/09/2007

Seria ruim criar um descendente da TPrinter e usar o descendente? Daí voce trabalharia com o TNewPrinter onde for necessário e deixaria a TPrinter do jeito que está ;)

[]´s


GOSTEI 0
Edurocha

Edurocha

25/09/2007

ótima idéia, porém não sei como faze-lo, alguem poderia dar uma ajuda ? por onde começar.


GOSTEI 0
Martins

Martins

25/09/2007

ótima idéia, porém não sei como faze-lo, alguem poderia dar uma ajuda ? por onde começar.


E se você mudasse o nome da unit q vc copiou para a pasta do seu projeto, deixando a original do Delphi como era antes das modificações, não resolveria?


GOSTEI 0
Edurocha

Edurocha

25/09/2007

Valeu Martins, funcionou tudo certinho, mudei somente o nome da unit é isto mesmo né ? não preciso mexer em mais nada no corpo da unit ?


GOSTEI 0
Martins

Martins

25/09/2007

Valeu Martins, funcionou tudo certinho, mudei somente o nome da unit é isto mesmo né ? não preciso mexer em mais nada no corpo da unit ?


Teoricamente isso deveria resolver seu problema e o Delphi continuaria funcionando perfeitamente, qualquer problema, retorne e nos informe sobre o erro q tentaremos juntos encontrar uma solução.

Bons códigos!


GOSTEI 0
POSTAR