Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/37: Рейтинг темы: голосов - 37, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 15.06.2010
Сообщений: 5

Скрол на TMemo

15.06.2010, 21:51. Показов 7761. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два столбца данных, они записаны в двух TMemo
нужно сделать так что бы двигая ползунок на одном tmemo двигалось на столько же на другом

Заранее Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.06.2010, 21:51
Ответы с готовыми решениями:

Убрать из TMemo запятые, числа расположить в столбик, и вывести все это во второе поле TMemo
Привет всем вообщем помогите с программой ) у нас есть поле TMemo в котором числа расположены числа вида 1231243,123543,21454... и так...

Скрол
Быть может есть готовая библиотека для скрола. К примеру стандартный прячем, через дополнительную библиотеку ставим свой скрол, без фона,...

Изменить скрол
Как изменить вид скролла(ползунка)? который в блоке

12
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
16.06.2010, 11:34
zackkc, а почему бы не использовать TStringGrid и не выдумывать колеса?
0
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
16.06.2010, 16:48
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
а почему бы не использовать TStringGrid и не выдумывать колеса?
Ну почему же колесо сразу? В Total Commander'e есть такая опция Файл - Сравнить по содержимому. Там два поля и при прокрутке одного сравниваемый текст прокручивается в обеих полях... Может автор имел ввиду это?
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
16.06.2010, 23:28
Лучший ответ Сообщение было отмечено как решение

Решение

zackkc, Размещаете на форме два TMemo. Также, добавляете один TScrollBar.
Делаете его вертикальным (в инспекторе - Kind = sbVertical).
Далее, обьявляете глобальную переменную:
C++
1
int Value = 0;
После этого обрабатываем событие OnChange для компонента TScrollBar:
C++
1
2
3
4
5
6
7
8
if (ScrollBar1->Position > Value) {
  Memo1->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo2->Perform(EM_SCROLL,SB_LINEDOWN,0);
} else {
  Memo1->Perform(EM_SCROLL,SB_LINEUP,0);
  Memo2->Perform(EM_SCROLL,SB_LINEUP,0);
}
  Value = ScrollBar1->Position;
Вот вам решение вашей проблемы. Также можете обработать события OnChange для обоих TMemo. Зачем? Обьясню. Когда вы загружаете в TMemo какой-либо текст происходит изменение позиции TScrollBar'a и меняется количество строк в TMemo. Соответственно, вам нужно будет изменить:
C++
1
2
3
ScrollBar1->Max = Memo1->Lines->Count // или максимум для Memo2;
ScrollBar1->Position = 0;
Value = 0;
Дальнейшие ухищрения зависят только от вашей фантазии
6
0 / 0 / 0
Регистрация: 15.06.2010
Сообщений: 5
19.06.2010, 09:20  [ТС]
спасибо!
0
4 / 4 / 0
Регистрация: 04.10.2010
Сообщений: 33
26.11.2010, 11:29
Так а если в процессе работы программы добавляются данные в TMemo1, TMemo2... И на экран выводятся только последние параметры. А скролл остался сверху. Как сделать так, что скролл начинался снизу, и все колонки поднимались/опускались синхронно. (у меня 9 полей TMemo и во все одновременно (в одном цикле) добавляется по параметру). Я делал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void __fastcall TForm2::Memo1Change(TObject *Sender) {
ScrollBar1->Max = Memo1->Lines->Count;
ScrollBar1->Position = 0;
scrval = 0; }
void __fastcall TForm2::ScrollBar1Change(TObject *Sender) {
if (ScrollBar1->Position > scrval) {
  Memo1->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo2->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo3->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo4->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo5->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo6->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo7->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo8->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo9->Perform(EM_SCROLL,SB_LINEDOWN,0); }
else {
  Memo1->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo2->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo3->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo4->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo5->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo6->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo7->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo8->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo9->Perform(EM_SCROLL,SB_LINEDOWN,0);  }
  scrval = ScrollBar1->Position;     }
Добавлено через 3 минуты
А ещё можно было бы как-нибудь выделять целую строку во всех полях TMemo - ну чтобы подсвечивался параметр с одинаковым номером во всех полях TMemo, например, при выделении в одной из колонок или наведения в одной из колонок на него. Или это трудно реализуемо?
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
26.11.2010, 13:27
Цитата Сообщение от ANTi1 Посмотреть сообщение
Как сделать так, что скролл начинался снизу, и все колонки поднимались/опускались синхронно.
Позицию у ScrollBar установить в позицию Max.

Цитата Сообщение от ANTi1 Посмотреть сообщение
А ещё можно было бы как-нибудь выделять целую строку во всех полях TMemo
Про цвет текста на форуме уже были обсуждения. Воспользуйтесь поиском.
0
4 / 4 / 0
Регистрация: 04.10.2010
Сообщений: 33
26.11.2010, 13:50
Ну установил я позицию скролла в Макс (у меня по умолчанию Min=0; Max=100)
Да, скроллинг снизу, но когда его поднимаешь, поля TMemo не поднимаются вверх.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TForm2 *Form2;
int scrval = 0; 
 
...
 
void __fastcall TForm2::Memo1Change(TObject *Sender) {
ScrollBar1->Max = Memo1->Lines->Count;
ScrollBar1->Position = 100;}
void __fastcall TForm2::ScrollBar1Change(TObject *Sender) {
if (ScrollBar1->Position > scrval) {
  Memo1->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo9->Perform(EM_SCROLL,SB_LINEDOWN,0); }
else {
  Memo1->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo9->Perform(EM_SCROLL,SB_LINEDOWN,0);  }
  scrval = ScrollBar1->Position;     }
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
26.11.2010, 13:59
ANTi1, а не забыли задать нужное значение переменной scrval? Ибо судя по вашему коду, она так и осталось равной нулю.
Внимательно пересмотрите ваш код и он заработает, даю гарантию
0
4 / 4 / 0
Регистрация: 04.10.2010
Сообщений: 33
26.11.2010, 14:44
MikeSoft, т.е. вы имеете ввиду 5ую строчку:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm2::Memo1Change(TObject *Sender) {
ScrollBar1->Max = Memo1->Lines->Count;
ScrollBar1->Position = 100;
scrval=ScrollBar1->Position;}
void __fastcall TForm2::ScrollBar1Change(TObject *Sender) {
if (ScrollBar1->Position > scrval) {
  Memo1->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo9->Perform(EM_SCROLL,SB_LINEDOWN,0); }
else {
  Memo1->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo9->Perform(EM_SCROLL,SB_LINEDOWN,0);  }
  scrval = ScrollBar1->Position;     }
если да, то не помогает она. Прокручиваю скроллинг вверх, а текст в полях ТМемо стоит на месте... Или я не так Вас понял?
0
4 / 4 / 0
Регистрация: 04.10.2010
Сообщений: 33
06.12.2010, 22:17
MikeSoft, написал Вам даже в личку, вы всё равно не ответили...
разобрался сам: дело было в SB_LINEUP. По ошибке везде вставил SB_LINEDOWN =)
И нормально скроллилось только вниз. =) А вверх не хотело и всё.

C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm2::Memo1Change(TObject *Sender) {
ScrollBar1->Max = Memo1->Lines->Count;
ScrollBar1->Position = 1000;
scrval=ScrollBar1->Position;}
void __fastcall TForm2::ScrollBar1Change(TObject *Sender) {
if (ScrollBar1->Position > scrval) {
  Memo1->Perform(EM_SCROLL,SB_LINEDOWN,0);
  Memo9->Perform(EM_SCROLL,SB_LINEDOWN,0); }
else {
  Memo1->Perform(EM_SCROLL,SB_LINEUP,0);
  Memo9->Perform(EM_SCROLL,SB_LINEUP,0);  }
  scrval = ScrollBar1->Position;     }
И снова вопрос: а где в настройках ScrollBar есть настройка параметров скрости прокрутки (или я даже не знаю как это назвать...) Объясню: если быстро прокручивать - то оно прокручивает 30-50 значений от Min до Max. Хотя реально там около 800 значений. А если прокручивать медленно (имеется ввиду стать мышкой на бегунок и медленно поднимать/опускать) - то нормально можно прокрутить от Min до Max и увидеть все значения.
0
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 12
12.12.2010, 14:47
а у меня вот так вот вопрос: как настроить шаг прокрутки? то бишь как сделать так что бы дойдя до конца последней строки ползунок был в конце, а не по середине?
0
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
05.05.2011, 21:07
MadChild не знаю подойдет Вам или нет, но я попробовал таким образом:
C++
1
2
3
4
int RELCount = RichEdit1->Lines->Count;
int SBHeight = ScrollBar1->Height;
    if(RELCount != 0)
    ScrollBar1->PageSize = (SBHeight/RELCount)*7;
И сам ползунок менял свой размер как раз под текст, но почему то как он поменяет свой размер, и потом после этого попробовать загрузить в RichEdit текст из документа то выходит ошибка: ScrolBar property out of range. Как разобраться с этой проблемой не знаю, подскажите пожалуйста. Заранее спасибо!

Добавлено через 48 минут
С проблемой раобрался, надо было обнулять PageSize сролбара перед откртием, типа так:
C++
1
ScrollBar1->PageSize = 0;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.05.2011, 21:07
Помогаю со студенческими работами здесь

Скрол мышкой
Всем доброго времени _уток. Пишу бот для игры, столкнулся с необходимостью управления мышкой. В частности нужно один раз проскролить...

Скрол блоков
Столкнулся с проблемой размещения сразу 2-х скрол страниц (те блоков, просто чаще можно встретить ввиде длинного лендинга со скролом). ...

Антимасштпбируемый скрол
Здравствуйте. Подскажите как сделать такой же скролл как на сайте. http://gor-polyana.ru Там контента под иллюстрацией не видно как бы...

Скрол на странице
сделал страницу! Её содержание выходит за приделы страницы. Но скрол почему-то не появляется(!?) чем это можно обьяснить и что делать!? ...

Listbox1 скрол
Как сделать так, что б у listbox1 и listbox2 ползунок двигался одновременно и на одинаковом положении был всегда?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru