Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
Alex_C ©   (2006-11-15 09:50) [0]

Собственно проблема: пользователь читает текст в мемо. В это время в фоновом режиме в мемо добавляются строки. Текст при этом в мемо перескакивает на начало (если строки добавляем Text := Text + чего то там) или в конец мемо (Если так SelStart := Length(Text); SelText := чего то там). А как сделать, чтобы текст оставался на том месте, где и был?


 
clickmaker ©   (2006-11-15 10:08) [1]

Запомнить SelStart и SelLength


 
Alex_C ©   (2006-11-15 10:24) [2]

А при чем здесь SelStart? Пользователь читает текст прокручивая его ScrollBar. На положение SelStart это не влияет.


 
KilkennyCat ©   (2006-11-15 10:29) [3]

А не надо добавлять, пока пользователь крутить вниз не начнет.


 
clickmaker ©   (2006-11-15 10:30) [4]


> [2] Alex_C ©   (15.11.06 10:24)

ну идею-то понимаешь, да? Запомнить состояние, чтоб его восстановить потом


 
Gydvin ©   (2006-11-15 10:42) [5]

Вот. Только, чтоб не мыргала будешь делать сам

var
 x, y, a, b: integer;
begin
 t := true;
 x := 0;
 while t do begin
   a := memo1.SelStart;
   b := memo1.SelLength;
   y := SendMessage(memo1.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
   y := SendMessage(memo1.Handle, EM_LINEINDEX, y, 0);
   memo1.Lines.Add(inttostr(x));
   inc(x);
   memo1.SelStart := y;
   memo1.Perform(EM_SCROLLCARET, 0, 0);
   memo1.SelStart := a;
   application.ProcessMessages;
 end;


 
KilkennyCat ©   (2006-11-15 10:46) [6]

Жуть. Почему бы просто не работать со стринглистом, фрагмент которого отображается в мемо?


 
Gydvin ©   (2006-11-15 10:54) [7]

Может и проще, но сабж..


 
sniknik ©   (2006-11-15 11:34) [8]

удивляют меня всегда такие вот странные желания..., выбрать то что для этого не предназначено, метод какой нибудь в который разработчиком определялся для чегото совершенно другого и после бороться с проявлениями...
это я про
> Text := Text + чего то там)
а в базах, почемуто это свойство не используют, наоборот используют Add (специально чтобы побороться потом с неочищенным командами, что, тоже специально забывают... т.е. делается для одного значит используют для другого... блин, слов нет)

чего сложного/неподходящего в  
Memo1.Lines.BeginUpdate;
Memo1.Lines.Add(чего то там);
Memo1.Lines.EndUpdate;
???

все остается, а если еще позицию курсора (SelStart, SelLength) будеш сохранять на случай управления клавишами, вообще все "мертво" на месте стоять будет, не дрогнет даже.
зачем  сбивать внутреннюю "начинку", полной переинициализацией делаемой при полной загрузке текста, только затем чтобы после пытаться восстановить? непонимаю.


 
Gydvin ©   (2006-11-15 11:52) [9]


> sniknik ©   (15.11.06 11:34) [8]

Я и незнал, спасибо.

Тогда дополнение
memo1.DoubleBuffered:=true;



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

Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.045 c
15-1163158307
Андрей ББББ
2006-11-10 14:31
2006.12.03
проблемы с Windows XP


2-1163596338
Vitebsky
2006-11-15 16:12
2006.12.03
Динамическое создание попап-меню


5-1144833618
Святослав
2006-04-12 13:20
2006.12.03
Нужен специфический компонент


3-1159288763
Climber
2006-09-26 20:39
2006.12.03
BDE & FoxPro & SQL


2-1163737455
Steep
2006-11-17 07:24
2006.12.03
Строки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский