Показать сообщение отдельно
  #1  
Старый 06.03.2012, 13:44
bambooshoot bambooshoot вне форума
Прохожий
 
Регистрация: 20.03.2011
Сообщения: 30
Репутация: 10
По умолчанию Высота RichEdit в зав-ти от кол-ва строк

Всем привет! Столкнулся с такой проблемой - создаю динамически 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);
Не могу понять в чем дело. Подскажите, пожалуйста. Заранее благодарен
Ответить с цитированием