Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.117.154.41] |
|
Сообщ.
#1
,
|
|
|
Вот такой вопросик возник, я в Memo постоянно добавляю строки, потом их становится, больше и больше, добавляются они туда программно. Как можно сделать, чтобы всегда было видно самое последнее сообщение снизу, а не верхнее. Раньше както делал, сейчас не помню.
|
Сообщ.
#2
,
|
|
|
если добавляешь всегда в конец то просто посылай WM_SCROLLCARET
если в любое место, то посылай WM_LINESCROLL и lParam индекс последней строки |
Сообщ.
#3
,
|
|
|
Передвигай TMemo.SelStart на последнюю строчку.
|
Сообщ.
#4
,
|
|
|
Цитата rhf, 09.09.02, 16:04:16 если добавляешь всегда в конец то просто посылай WM_SCROLLCARET если в любое место, то посылай WM_LINESCROLL и lParam индекс последней строки А какой функцией мне это послать и как? |
Сообщ.
#5
,
|
|
|
Цитата Song, 09.09.02, 17:43:48 Передвигай TMemo.SelStart на последнюю строчку. Как это программно сделать? |
Сообщ.
#6
,
|
|
|
Цитата Monster, 09.09.02, 17:52:08 Как это программно сделать? With Memo1 Do SelStart:=Perform(EM_LINEINDEX,Lines.Count-1,0); |
Сообщ.
#7
,
|
|
|
2 Song, а разве через selStart мы не просто каретку переведем? теперь нужно еще WM_SCROLLCARET послать.... наверное
//так переход к последней строке<br>with memo1 do perform(WM_LINESCROLL,0,items.count-1);<br>//а так к последнему добавленого символу<br>memo1.perform(WM_SCROLLCARET,0,0);<br> |
Сообщ.
#8
,
|
|
|
Автору нужно было видеть последнюю строчку. Этого мы и добьёмся переводя туда курсор. Попробуйте.
|
Сообщ.
#9
,
|
|
|
Цитата Song, 09.09.02, 19:41:42 With Memo1 Do SelStart:=Perform(EM_LINEINDEX,Lines.Count-1,0); Это желательно вставлять в OnPaint формы? И как это на Си выглядит если ни секрет? |
Сообщ.
#10
,
|
|
|
Это нужно вставлять после каждого добавления информации в TMemo
|
Сообщ.
#11
,
|
|
|
Цитата Song, 10.09.02, 13:04:45 Это нужно вставлять после каждого добавления информации в TMemo Хорошо. Но как это правильно написать, так как мне написали билдер не воспринимает. А я никак не могу правильно написать. Я вообще не понимаю, что такое with. |
Сообщ.
#12
,
|
|
|
Неужели никто не может сказать как правильно эту строку в Билдере написать, чтобы компилятор её понял?
With Memo1 Do SelStart:=Perform(EM_LINEINDEX,Lines.Count-1,0); |
Сообщ.
#13
,
|
|
|
Memo1->SelStart=Memo1->Perform(EM_LINEINDEX,Memo1->Lines->Count-1,0);
|
Сообщ.
#14
,
|
|
|
Короче ничего не получается.
Когда строка добовляется методом Add мне виден самый низ Мемо, как и было. Потом форма перерисовывается, и мы оказываемся в верху Мемо. Неужели всётаки ничего нельзя придумать? |
Сообщ.
#15
,
|
|
|
Вообще странно... значит у Вас курсор переводится наверх при прорисовке.
Тогда попробуйте EM_LINESCROLL или WM_VSCROLL |
Сообщ.
#16
,
|
|
|
Всё вопрос отпал.
Заменил этот Мемо лист боксом, и перехожу вот так. ListBox8->ItemIndex=ListBox8->Items->Count-1; |