Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 11.09.2009, 10:50   #1
nusik
Форумчанин
 
Регистрация: 13.04.2009
Адрес: Азербайджан, Баку
Сообщений: 117
Репутация: 10
По умолчанию Синхронизация скролбара

Хочу Синхронизировать скролбары в ричЕдит.
Как узнать позицию:
Код:
GetScrollPos(RichEdit1.Handle,SB_VERT))
затем с помощью SetScrollBar -ом установлю позицию скрола в RichEdit2.
Я написал это в OnClick. А мне нужно событие которое будет постоянно синхронизировать, идеальным таким событием является OnScroll (OnVScroll). Вот конкретно что необходимо сделать:
1. Как написать обработчик, ведь в списке Events его нет?
2. скроллер прокручивается а текст остается на месте, значит его отдельно надо крутить, вопрос как?
3. Если есть другие идеи, не стесняйтесь
Большое спасибо.
nusik вне форума   Ответить с цитированием
Старый 11.09.2009, 11:06   #2
russian-stalker
Профессионал
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
Репутация: 489
По умолчанию

Используйте таймер
__________________
pushl $0x18E3DF6B
call ICQ

Последний раз редактировалось russian-stalker; 11.09.2009 в 11:14.
russian-stalker вне форума   Ответить с цитированием
Старый 11.09.2009, 11:49   #3
nusik
Форумчанин
 
Регистрация: 13.04.2009
Адрес: Азербайджан, Баку
Сообщений: 117
Репутация: 10
По умолчанию

Попробовал таймер.
2 пункт пока актуален.
И ещё если производить прокурту RichEdit не станет моргать?
nusik вне форума   Ответить с цитированием
Старый 11.09.2009, 12:04   #4
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Адрес: Россия, Тюмень, центральный район
Сообщений: 215
Репутация: 62
По умолчанию

Можно попробовать отловить onMouseWheel
Код:
procedure TForm1.RichEdit1MouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
У richEdit`а есть
__________________
[Ferox]
postal2 вне форума   Ответить с цитированием
Старый 11.09.2009, 13:15   #5
nusik
Форумчанин
 
Регистрация: 13.04.2009
Адрес: Азербайджан, Баку
Сообщений: 117
Репутация: 10
По умолчанию

Колесико уловили.
но осталось ещё куча событий... нажатия клавиш pgdwn и.т.п,
ну и есстественно мышкой
я помню что когда делал собственный хинт...
Application.OnShowHint:=MyShowHint;
Может быть можно сделать нечто аналогичное, присвоить "чему-то" OnRichEdit1MouseWheel... вопрос чему.
Спасибо что помогаете.
nusik вне форума   Ответить с цитированием
Старый 11.09.2009, 14:03   #6
Kotofff
Профессионал
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Адрес: Россия. Кубань.
Сообщений: 1,916
Репутация: 1296
По умолчанию

Можно попробовать так :
Код:
RichEdit1.SelStart:=RichEdit2.SelStart;

Более правильный подход - это создание потомка RichEdit и описание в нем процедур отлавливания прокруток по вертикали и горизонтали. К примеру :
Код:
TScrollRichEdit = class(TRichEdit)
procedure WM_HScroll(var Msg: TWMHScroll); message WM_HSCROLL;
procedure WM_VScroll(var Msg: TWMVScroll); message WM_VSCROLL;
end;

...

procedure TScrollRichEdit.WM_HScroll(var Msg: TWMHScroll);
begin
  ... Обрабатываем горизонтальную прокрутку
end;
procedure TScrollRichEdit.WM_VScroll(var Msg: TWMVScroll);
begin
  ... Обрабатываем вертикальную прокрутку
end;
__________________
Кому iPhone и Swarovski, кому Афон и Саровский...
Kotofff вне форума   Ответить с цитированием
Старый 11.09.2009, 14:54   #7
nusik
Форумчанин
 
Регистрация: 13.04.2009
Адрес: Азербайджан, Баку
Сообщений: 117
Репутация: 10
Хорошо

Kotofff
То что надо было!
нашел в инете как с ЛистБоксом , почти тоже самое, но там они компонент новый регистрировали... не буду же для каждого чиха компонент создавать

Теперь создал я дин. два ричедита:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  re:=TScrollRichEdit.Create(self);
  re.Parent:=Form1;
  re.Left:=0;
  re.Top:=0;
  re.Width:=400;
  re.Align:=alLeft;
  re.ScrollBars:=ssBoth;
  re.HideScrollBars:=false;
  re2:=TScrollRichEdit.Create(self);
  re2.Parent:=Form1;
  re2.Left:=0;
  re2.Top:=0;
  //re2.Height:=200;
  re2.Align:=alClient;
  re2.ScrollBars:=ssboth;
  re2.HideScrollBars:=false;
  re.Lines.LoadFromFile('E:\Azeri Viterbi\All\1\(((bir qayda olaraq.txt');
  re2.Lines.LoadFromFile('E:\Azeri Viterbi\All\1\(((bir qayda olaraq-1.txt');
end;
когда тяну мышкой по скролу он движется но потом возвращается на ноль, эт я так понимаю номарльно...


Код:
procedure TForm1.RichEdit1MouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
VAR I:INTEGER;
begin
   i:= GetScrollPos(RichEdit1.Handle,SB_VERT);
   SetScrollPos(re.Handle,SB_VERT,i,TRUE);
end;
Теперь осталось синхронизацию вписать в обработчики WM_Scroll чесно говоря пока не врубаюсь как...
nusik вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Синхронизация yarilo Софт 2 07.08.2009 15:50
Синхронизация с FTP mephist Работа с сетью в Delphi 1 16.06.2009 23:09
Синхронизация колонок eImage Microsoft Office Excel 4 13.03.2009 21:42
Синхронизация приложений format Помощь студентам 2 13.04.2008 17:29


23:35.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.