Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.10;
Скачать: CL | DM;

Вниз

TRichEdit   Найти похожие ветки 

 
KA_   (2003-01-31 17:50) [0]

Есть форма с RichEdit"ом. У нее есть метод DrawOn. Он должен отрисовывать содержимое RichEdit"a на канве. Только не рисует и все тут. Где я в коде напортачил? Помогите плиз, не то помру от разрыва мозга :)

procedure TfrmMyRichTextEditor.DrawOn(pCanvas: TCanvas; pDrawRect: TRect);
var
mf: TMetafile;
mc: TMetaFileCanvas;
Range: TFormatRange;
OldMap: Integer;
k1, k2: Double;
EditorDC: HDC;
rtfRect: TRect;
begin
EditorDC := GetDC(RichEdit.Handle);
try
with RichEdit, Range do
begin
SendMessage(RichEdit.Handle, EM_FORMATRANGE, 0, 0);
FillChar(Range, SizeOf(TFormatRange), 0);
hdc := EditorDC;
hdcTarget := pCanvas.Handle;
if IsRectEmpty(PageRect) then
begin
SendMessage(RichEdit.Handle, EM_GETRECT, 0, LongInt(@rtfRect));
rc := rtfRect;
end
else begin
rc.left := PageRect.Left;
rc.top := PageRect.Top;
rc.right := PageRect.Right;
rc.bottom := PageRect.Bottom;
end;
rcPage := pDrawRect;
chrg.cpMax := -1;
OldMap := SetMapMode(hdc, MM_TEXT);
SendMessage(RichEdit.Handle, EM_FORMATRANGE, 1, Longint(@Range));
SendMessage(RichEdit.Handle, EM_FORMATRANGE, 0, 0);
SetMapMode(hdc, OldMap);
end;
finally
ReleaseDC(Self.Height, EditorDC);
end;
end;


 
MBo ©   (2003-01-31 18:02) [1]

{ set up the parameter record for EM_FORMATRANGE }
FillChar(fmtRange, SizeOf(fmtRange), 0);
with fmtRange do
begin
hDC := yourBitmap.Canvas.Handle;
hdcTarget := hDC;
intPPI := Screen.PixelsPerInch;
rc := Rect(ARect.Left*1440 div intPPI,
ARect.Top*1440 div intPPI,
ARect.Right*1440 div intPPI,
ARect.Bottom*1440 div intPPI);
rcPage := rc;
chrg.cpMin := 0;
chrg.cpMax := -1;
end;

{ format the text }
Flags := 1;

FRichedit.Perform(EM_FORMATRANGE, Flags, Longint(@fmtRange));

{ Free cached information }
FRichedit.Perform(EM_FORMATRANGE, 0, 0);

© Mike Shkolnik



 
KA_   (2003-01-31 18:17) [2]

Спасибо большое!



Страницы: 1 вся ветка

Текущий архив: 2003.02.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
4-29161
BillyJeans
2002-12-27 10:47
2003.02.10
как отловить завершение сеанса или просто перезагрузку?


7-29136
X-shadow
2002-12-08 06:23
2003.02.10
Насчет винчестера


1-28698
Separator
2003-01-31 11:31
2003.02.10
У меня глюки


14-29099
Думкин
2003-01-25 10:32
2003.02.10
Думкин день


3-28682
TUZ_SS
2003-01-24 15:04
2003.02.10
Набор дробных чисел на цифровой клавиатуре