Komponent SynEdit a konkretnie SynEditPrint wykorzystuje moduł Graphic. Myślałem ,że jest to moduł standartowy Delphi ,ale u mnie (Delphi5 Standard) go nie ma. Gdzie mogę go znaleźć?--Pzdr.
W.
Graphic nie ma - Graphics jest i to standardowo.--Jest jeszcze jeden błąd ... :)
Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.
Chodzi oczywiście o Graphics . Mam taki problem . Po skompilowaniu edytorka z opcją drukowania przy pomocy SynEditPrint w dialogu drukowania nie są podawane strony dokumentu. Uruchamiając debuger znalazłem chyba miejsce odpowiedzialne za błąd. Mianowicie w SynEditPrint jest funkcja odczytu właściwości PageCount nazwana GetPageCaunt:
function TSynEditPrint.GetPageCount: Integer;
{Returns total page count. If pages hasn't been counted before,
then a UpdatePages is called with a temporary canvas}
var
TmpCanvas: TCanvas;
DC: HDC;
begin
Result := 0;
if FPagesCounted then
Result := FPageCount
else begin
TmpCanvas := TCanvas.Create;
try
{************}
{$IFNDEF LINUX}
DC := GetDC(0);
try
if DC <> 0 then begin
TmpCanvas.Handle := DC;
UpdatePages(TmpCanvas);
TmpCanvas.Handle := 0;
Result := FPageCount;
FPagesCounted := True;
end;
finally
ReleaseDC(0, DC);
end;
{$ENDIF}
finally
TmpCanvas.Free;
end;
end;
end;
Błąd zczyna się w linii:
TmpCanvas := TCanvas.Create
Przy sprawdzaniu debugerem uzyskuję informację T.Canvas.Create not accesible.
Stąd mój naiwny pewnie wniosek o braku TCanvas i w związku z tym braku modułu Graphics.
Będę wdzięczny za podpowiedź.--Pzdr.
W.
gavi napisał:
{$IFNDEF LINUX}
DC := GetDC(0);
try
if DC <> 0 then begin
TmpCanvas.Handle := DC;
UpdatePages(TmpCanvas);
TmpCanvas.Handle := 0;
Result := FPageCount;
FPagesCounted := True;
end;
finally
ReleaseDC(0, DC);
end;
{$ENDIF}
finally
TmpCanvas.Free;
end;
end;
end;
TmpCanvas := TCanvas.Create
Przy sprawdzaniu debugerem uzyskuję informację T.Canvas.Create not accesible.
Stąd mój naiwny pewnie wniosek o braku TCanvas i w związku z tym braku modułu Graphics.
Używasz Linuxa? hmm... to gorzej, bo nie mogę sprawdzić. Ale proponowałbym poszukać błędu w twoim programie, a nie w module SynEdit.--Jest jeszcze jeden błąd ... :)
Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.
Nie ,używam windy 98-ej , a wywala się dwie linijki wyżej ,przed dyrektywą {$IFNDEF LINUX}. Możliwe ,że jest to błąd w moim programie , ale dlaczego melduje ,że ma niedostępny kreator klasy canvacs ,jeśli w nagłówku modułu w sekcji uses występuje graphics?
Zresztą program jest trywialny ,najprostsze połączenie SynEdit i SynEditPrint. Zresztą przykład dostarczony w SynEdit też nie wyświetla identycznie ilości stron w drukowanym dokumencie , ale nie sprawdzałem czy z tej samej przyczyny.
Zastanawiam się , czy wina nie leży w tym że SynEdit jest robione w założeniach dla Delphi 6 a ja mam Delphi 5. Ale reszta działa OK , a jak mówisz w Delphi5 też jest Graphics. --Pzdr.
W.