Помогите с ScrollBars в Мемо
От: room  
Дата: 08.05.07 15:39
Оценка:
у меня много текста и 1 Мемо чтобы выбрать другой текст я нажимаю кнопку возращаюсь в меню и выбераю текст Мемо загружает его а скрол остается там где я его оставил когда читал первый текст
я хочу чтобы когда я нажал на кнопку вернулся и выбрал другой текст скрол стоял в начале
Re: Помогите с ScrollBars в Мемо
От: Leonid Troyanovsky  
Дата: 08.05.07 15:53
Оценка:
Здравствуйте, room, Вы писали:

R>я хочу чтобы когда я нажал на кнопку вернулся и выбрал другой текст скрол стоял в начале


Лучше хотеть, чтобы стоял в конце.
--
С уважением, LVT
Re: Помогите с ScrollBars в Мемо
От: ak_miass Россия  
Дата: 10.05.07 07:51
Оценка:
Здравствуйте, room, Вы писали:

Вот так поможет?
Memo->SelStart = 0;
Memo->SelLength = 0;
SendMessage(Memo->Handle, EM_SCROLLCARET, 0, 0);
Re[2]: Помогите с ScrollBars в Мемо
От: ak_miass Россия  
Дата: 10.05.07 07:55
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:

LT>Лучше хотеть, чтобы стоял в конце.


Не факт. Очень сильно зависит от задачи.
Чтобы стоял в конце как правило требуется когда в мемо постоянно пишется какой нибудь лог. А если нужно именно поменять весь текст, который читать будут наверное всё таки с начала, то пожалуй нужно перемотать в начало.
Re[2]: Помогите с ScrollBars в Мемо
От: Arioch  
Дата: 10.05.07 13:46
Оценка:
_>
_>SendMessage(Memo->Handle, EM_SCROLLCARET, 0, 0);
_>


А зачем через Windows API ? Разве положение курсора не вынесено в свойства TMemo/TEdit ?

Как еще один зверский (ugly hack) вариант — делать TMemo.Clear; Application.ProcessMessages; перед присвоением нового текста;
Re[3]: Помогите с ScrollBars в Мемо
От: ak_miass Россия  
Дата: 10.05.07 14:45
Оценка:
Здравствуйте, Arioch, Вы писали:

_>>
_>>SendMessage(Memo->Handle, EM_SCROLLCARET, 0, 0);
_>>


A>А зачем через Windows API ?

Действительно. Сейчас заглянул в VCL5:
procedure TCustomEdit.SetSelLength(Value: Integer);
var
  Selection: TSelection;
begin
  SendMessage(Handle, EM_GETSEL, Longint(@Selection.StartPos), Longint(@Selection.EndPos));
  Selection.EndPos := Selection.StartPos + Value;
  SendMessage(Handle, EM_SETSEL, Selection.StartPos, Selection.EndPos);
  SendMessage(Handle, EM_SCROLLCARET, 0,0);
end;




Всё равно странно что отдельный метод не сделали.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.