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

Вниз

прокрутка РичЕдит   Найти похожие ветки 

 
Dmitrij_K   (2005-10-31 11:04) [0]

привет,
в риче надо запомнить позицию курсора и скрол бара, чтобы после изменений текста полностью восстановить картинку
делаю так, но прокручивается не на то место где было

procedure RESaveSelPos(re:TRichEdit);
begin
 re.Perform(EM_GETSEL, INTEGER(@save_sel.selstart), INTEGER(@save_sel.selend));
 save_sel.line_nom := re.Perform(EM_LINEFROMCHAR, save_sel.selstart,0);
 save_sel.scroll := GetScrollPos(re.Handle, SB_VERT);
end;

procedure REloadSelPos(re:TRichEdit;bol:Boolean);
var g:Integer;
begin
 if bol then re.Perform(EM_SETSEL, save_sel.selstart, save_sel.selend)
        else begin
               g := re.Perform(EM_LineIndex, save_sel.line_nom, 0);
               re.Perform(EM_SETSEL,g,g);
             end;
 SetScrollPos(re.Handle, SB_VERT, save_sel.scroll, false);
end;


помогите пожалуйста


 
Leonid Troyanovsky ©   (2005-10-31 11:59) [1]


> Dmitrij_K   (31.10.05 11:04)  

> в риче надо запомнить позицию курсора и скрол бара, чтобы
> после изменений текста полностью восстановить картинку


Вообще-то, у RichEdit есть SelStart, SelLength.
А для управления скролом служат сообщения EM_SCROLL*.

--
Regards, LVT.


 
Dmitrij_K   (2005-10-31 12:45) [2]

координаты курсора я могу сохранить и восстановить, а вот положение скрола не получается
(


 
Leonid Troyanovsky ©   (2005-10-31 14:48) [3]


> Dmitrij_K   (31.10.05 12:45) [2]
> координаты курсора я могу сохранить и восстановить, а вот
> положение скрола не получается



var
 SavedRange : TCharRange;
 Line : Longint;

 {сохраняем}
 RichEdit1.Perform( EM_EXGETSEL, 0, LParam(@SavedRange));
 Line :=  RichEdit1.Perform(EM_GETFIRSTVISIBLELINE, 0, 0);

 ..

{восстанавливаем}
 RichEdit1.Perform( EM_EXSETSEL, 0, LParam(@SavedRange));
 RichEdit1.Perform( EM_LINESCROLL,
                    0,
                    Line-RichEdit1.Perform(EM_GETFIRSTVISIBLELINE, 0, 0));


 Возможно, что пригодится:
 RichEdit1.Perform(WM_SETREDRAW, WParam(False), 0);
 RichEdit1.Perform(WM_SETREDRAW, -1, 0);

--
Regards, LVT.


 
Dmitrij_K   (2005-10-31 15:01) [4]

огромное спасибо
работает



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

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

Наверх




Память: 0.45 MB
Время: 0.013 c
3-1129522217
Vista
2005-10-17 08:10
2005.11.27
Люди добрые помогите....


2-1131113530
AlanB
2005-11-04 17:12
2005.11.27
Работа с файлами excel


14-1131030325
Kerk
2005-11-03 18:05
2005.11.27
Ниразу такого не видел..


14-1131363466
DD
2005-11-07 14:37
2005.11.27
Компоненты, раб-щие с арх. RAR и ZIP


2-1131525508
galexis
2005-11-09 11:38
2005.11.27
Не выводятся данные в DBGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский