Вниз
Скачать: CL | DM;

Последняя видемая строка   Найти похожие ветки 

 
абырвалГ   (2004-02-08 15:34) [0]

Как зделать так, чтоб текст (допустим из Edit"a) вставлялся в последнюю видемую строку в Memo, Memo меняет размер т.е. последняя строка может быть по-разному!


 
Бином Ньютоныч   (2004-02-08 17:19) [1]

function GetBottomLine(Memo: TMemo): integer;
var
n: integer;
R: TRect;
Old: Thandle;
DC: HDC;
Sz: TSize;
begin
if Memo.Lines.Count = 0 then
begin
Result:=-1;
Exit;
end;
n:=SendMessage(Memo.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
SendMessage(Memo.Handle, EM_GETRECT, 0, integer(@R));
DC:=GetDC(Memo.Handle);
Old:=SelectObject(DC, Memo.Font.Handle);
GetTextExtentPoint32(DC, "W", 1, Sz);
SelectObject(DC, Old);
ReleaseDC(Memo.Handle, DC);
Result:=((R.Bottom - R.Top) + 1) div Sz.cy + n - 1;
if Result >= Memo.Lines.Count then
Result:=Memo.Lines.Count - 1;
end;


 
MBo ©   (2004-02-08 17:46) [2]

n:=Memo1.Perform(EM_CharFromPos,0,MakeLParam(1,Memo1.ClientHeight-Memo1.Font.Size)) shr 16;


 
Бином Ньютоныч   (2004-02-08 20:41) [3]

MBo ©

А ты попробуй [2] изменяя высоту Memo по 1 пикселю в пределах высоты строки. А потом еще размером и именем шрифта поиграй для полноты ощущений:)


 
MBo ©   (2004-02-09 06:20) [4]

>Бином Ньютоныч
Угу, может быть нестыковочка ;)
Хотя при нескольких тестах мне не удалось ее добиться. Но не исключено.



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.012 c
1-53489
jiurajhgjhgty
2004-02-06 10:31
2004.02.17
Как работать с функцией CreateProcess()?


1-53490
Максик
2004-02-06 10:10
2004.02.17
RunTime


14-53704
Ihor Osov'yak
2004-01-29 19:22
2004.02.17
PSAPI.dll в NT4 после какого SP штатно присутствует?


1-53616
Анатолий
2004-02-07 12:30
2004.02.17
Опять по автоматическому обнновлению программы


1-53572
HF-Trade
2004-02-08 22:38
2004.02.17
Form1.close; - Form2.open?




   Наверх