Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Memo, полосы прокрутки...


Автор: Gen 29.3.2007, 14:44
У меня есть memo с неким текстом в нем. Далее я этот текст поэтапно считываю, обрабатываю и засовываю в vector. После окончания обработки очищаю данный memo и запихиваю в него получившиеся строки. Мне нужно в итоге чтобы позиции курсора и скроллинга в видоизмененном тексте остались теми, что были раньше.

Вопрос: как это можно сделать наиболее оптимальным способом?? smile 

Автор: Partizan 29.3.2007, 14:50
Кури GetCursorPos/SetCursorPos

Автор: Greeen 29.3.2007, 14:51
Что за memo?

Автор: Partizan 29.3.2007, 14:55
ах да...забыл....состояния ScrollBar-ов у memo тоже надо считывать/устанавливать...

Автор: Gen 29.3.2007, 15:08
 smile А в 1 действие тут уложиться никак нельзя??

ЗЫ. И, кстати - на счет ScrollBar-ов в memo я так и не доразобрался. smile smile Сеть по этому поводу меня мучает уже целый час почти.(((

Автор: Partizan 29.3.2007, 15:13
Gen, GetScrollInfo/SetScrollInfo

то есть нужно выполнить такую последовательность действий:

1. GetScrollInfo
2. GetCursorPos
3. считать текст
4. обработать текст
5. вогнать тескт обратно
6. SetScrollInfo
7. SetCursorPos

Автор: Gen 29.3.2007, 15:41
Аааааа... Вот оно что! А я пытался все - от memo то же самое провернуть.) Спасибо огромное всем, в частности Partizanу!!!!!

ЗЫ. Но всё же чего я тут делаю неправильно - я так понять и не смог.((((((
Код

void __fastcall TForm1::FAlignClick(TObject *Sender)
{
//...

tagPOINT cp; GetCursorPos(&cp);

SCROLLINFO si; GetScrollInfo(Memo1->Handle,SIF_POS,&si);

//...

Memo1->Clear();

// Вставляю много новых строк.

SetCursorPos(cp.x,cp.y);
SetScrollInfo(Memo1->Handle,SIF_POS,&si,true);
Memo1->SetFocus();
}


У Борланда 6 на это: 0 реакции.(((((((((((((((((((((((((( // В смысле - по сабжу.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)