Всем привет! Столкнулся с такой проблемой - создаю динамически RichEdit.
Увеличиваю высоту компонента в зависимости от количества строк. Увеличение высоты делаю в RichEditChange, вот код:
Код:
procedure TForm1.RichEditChange(Sender: TObject);
var
fr : TFormatRange;
r : TRect;
b : TBitmap;
RE : array [1..50] of TRichEdit;
begin
b:=TBitmap.create;
r:= rect(0, 0, RE[j].Width*screen.Pixelsperinch, RE[j].Height*screen.Pixelsperinch);
fr.hdc := b.canvas.handle;
fr.hdctarget:=b.canvas.handle;
fr.rc:=r;
fr.rcpage:=r;
fr.chrg.cpMin:=0;
fr.chrg.cpMax:=-1;
Sendmessage(RE[j].handle,EM_FORMATRANGE,1,longint(@fr));
RE[j].Height:=Trunc(screen.Pixelsperinch*fr.rc.bottom/1440)+8;
Sendmessage(RE[j].handle,WM_VSCROLL,SB_TOP,0);
RE[i].Height:=RE[j].Height;
b.Destroy;
end;
Для компонента, который кидается на форму во время проектирования, код работает замечательно. Но для динамически создаваемых, выбивает на строке:
Код:
r:= rect(0, 0, RE[j].Width*screen.Pixelsperinch, RE[j].Height*screen.Pixelsperinch);
Не могу понять в чем дело. Подскажите, пожалуйста. Заранее благодарен