QRRichText (nowe)

0

Czy w QRRichText można za pomocą atrybutów ustalić odstęp pomiędzy wierszami?

0

Czy nikt nie zna odpowiedzi na to pytanie, czy jest ono zbyt trywialne?

0

08-12-2003 13:23
08-12-2003 13:53

Stary, w pol godziny ktos ma ci odpowiedziec - rzadko takie rzczy sie zdarzaja ...

0

OK, myslalem po prostu, że ja nie potrafię tego wynaleźć, a jest mi to niezbędne, bo muszę druknąć na gotowym formularzu z QRraportu

0

Z tego co wiem, to nie da się bezpośrednio tak tym strerować, bo TQRRichText pochodzi z TQRCustomRichText, który ma jako jeden z parametrów ParentRichEdit.
A zatem nie pochodzi on bezpośrednio od TCustomRichEdit więc nie można tak prosto tego użyć.
Jeśli chcesz coś zmodyfikować na raporcie to musisz odwoływać się do RichEdit-a (lub innego komponentu dziedziczącego po TCustomRichEdit) związanego z QRRichText-em.

Jeśli chodzi o odstępy między wierszami to zamiast zwykłego RichEdit-a musisz poszukać jakiegoś sensownego komponentu bądź sam oprogramować swój własny komponent, który używa PARAFORMAT2 zamiast _paraformat (jak to jest w standardowym RichEdit).
Zobacz te dwa typy w pliku RichEdit.pas

Aby użyć PARAFORMAT2 musisz napisać przynajmniej taką klasę:

interface
//wstepna deklaracja klasy
TMyRichEdit=class;
...
TParaAttributes2 = class(TPersistent)
private
RichEdit: TMyRichEdit;
function GetSpaceBefore: Longint;
function GetSpaceAfter: Longint;
procedure SetSpaceBefore(Value: Longint);
procedure SetSpaceAfter(Value: Longint);

 procedure InitPara2(var Paragraph2: TParaFormat2);

public
constructor Create(AOwner:TMyRichEdit);
procedure GetAttributes2(var Paragraph2: TParaFormat2);
procedure SetAttributes2(var Paragraph2: TParaFormat2);

 property SpaceBefore: 
            Longint read GetSpaceBefore write SetSpaceBefore;
 property SpaceAfter: 
            Longint read GetSpaceAfter write SetSpaceAfter;

end;

TMyRichEdit = class(TRichEdit)
private
FParagraph2: TParaAttributes2;
...
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property Paragraph2: TParaAttributes2 read FParagraph2;
...
end;

implementation
{ TParaAttributes2 }
constructor TParaAttributes2.Create(AOwner:TMyRichEdit);
begin
inherited Create;
RichEdit:=AOwner;
end;

function TParaAttributes2.GetSpaceBefore: Longint;
var Paragraph2:TParaFormat2;
begin
GetAttributes2(Paragraph2);
Result:=Paragraph2.dySpaceBefore div 20;
end;

function TParaAttributes2.GetSpaceAfter: Longint;
var Paragraph2:TParaFormat2;
begin
GetAttributes2(Paragraph2);
Result:=Paragraph2.dySpaceAfter div 20
end;

procedure TParaAttributes2.InitPara2(var Paragraph2: TParaFormat2);
begin
FillChar(Paragraph2, SizeOf(TParaFormat2), 0);
Paragraph2.cbSize := SizeOf(TParaFormat2);
end;

procedure TParaAttributes2.GetAttributes2(var Paragraph2: TParaFormat2);
begin
InitPara2(Paragraph2);
if RichEdit.HandleAllocated then
SendMessage(RichEdit.Handle,
EM_GETPARAFORMAT, 0, LPARAM(@Paragraph2));
end;

procedure TParaAttributes2.SetAttributes2(var Paragraph2: TParaFormat2);
begin
RichEdit.HandleNeeded;
if RichEdit.HandleAllocated then
SendMessage(RichEdit.Handle,
EM_SETPARAFORMAT, 0, LPARAM(@Paragraph2));
end;

{ TMyRichEdit }
constructor TMyRichEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FParagraph2:=TParaAttributes2.Create(Self);
SetParams;
end;

destructor TMyRichEdit.Destroy;
begin
FParagraph2.Free;
inherited Destroy;
end;

A później użyjesz czegoś w stylu MyRichEdit.Paragraph2.SpaceBefore:=4
i związesz to z QRRichText-em poprzez Raport.QRRichText1.ParentRichEdit:=MyRichEdit;

Powinno działać

0

dzięki za kodzik, ale jestem chyba zbyt "świeży" jak na takie coś, ale bede probował możę się uda

0

Ja musiałem oprogramować cały typ PARAFORMAT2 i u mnie działa, chociaż do raportu wcale nie używam QuickReporta tylko zciagnąłem z sieci pprev.zip.

Raczej nie za trudny komponent, i wyświetla zawartość RTF-a jako obrazki. Ładnie dzieli na strony i dodaje marginesy, numery stron itp.
Niestety jak nie pogrzebiesz w nim trochę, to będziesz musiał go użyć takim jaki jest, czyli ze wszystkimi klawiszami etc.
Znajdziesz go na stronce:
http://www.radix.net/~bziegler/Delphi/pprev.zip

0

dobra , edytuje nie wiem czy dobrze, ale byle do przodu, zostało mi chyba szukać nowego komponentu działającego na QRraport

0

Rafikus. Nie pisz jeden pod drugim odpowiedzi! Edytuj poprzednią. Taka jkonka z ołówkiem!!!!!!!!!!!!!!!!!!!!!!!

A tak poza tym to spróbuj na komponencie RxRichEdit.
Wiem ze to ma wienksze możliwości. (www.google.pl)

1 użytkowników online, w tym zalogowanych: 0, gości: 1