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




Вниз

ListBox 


Ser_Kham1   (2001-12-25 12:08) [0]

Добрый день мастера.
У меня два ListBoxa. Между их Itemaми взаимнооднозначное соответствие.
Вы мне не подскажите, можно ли как-нибудь сделать так, чтобы эти два ListBoxа можно было бы вместе прокручивать.
С уважением Ser_Kham



Alx2   (2001-12-25 12:53) [1]

Первое, что пришло в голову:

procedure TForm1.ListBox1Click(Sender: TObject);
begin
if ListBox2<>Sender then
ListBox2.TopIndex := ListBox1.TopIndex
else
ListBox1.TopIndex := ListBox2.TopIndex
end;
<\code>
Соответственно, нужно выполнить условие:
ListBox1.OnClick=ListBox2.OnClick=ListBox1Click



Ser_Kham1   (2001-12-25 13:17) [2]

А как быть, если захочется покручивать ListBox с помощью линейки прокрутки?
Ser_Kham



Builder   (2001-12-25 13:25) [3]

Вопрос данный пробегал раньше. Итог таков:
1. Я делал с помошью таймера - мне понравилось - прикольное небольшое отставание :)
2. Предлагалось отлавливать событие онСкролл и так сравнивать.

Чем кончилось - не помню :)



Alx2   (2001-12-25 13:26) [4]

Хм... Как бы я не стал делать - обрабатывать сообщение Idle и в нем вызывать присвоение TopIndexов (или по таймеру - но это еще хуже).

А сейчас пока попробую покопаться в листбоксовском WindowProc (так, для общего случая).



Alx2   (2001-12-25 15:39) [5]

Попробовал. С WindowProc что-то много возни получается :((
Но родился вот такой вариант:

procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
// Здесь хорошо бы, кроме адресата, еще и тип сообщения проверить...
if msg.hwnd = ListBox1.Handle then
ListBox2.TopIndex := ListBox1.TopIndex
else
if msg.hwnd = ListBox2.Handle then
ListBox1.TopIndex := ListBox2.TopIndex;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := AppMessage;
end;



Ser_Kham1   (2001-12-25 15:45) [6]

Здорово!
Спасибо.
Ser_Kham




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




Наверх





Память: 0.72 MB
Время: 0.043 c
1-42404           HydraMarat            2001-12-25 19:30  2002.01.14  
Версии из ресурсов!


14-42550          wHammer               2001-11-16 15:29  2002.01.14  
Nostalgia


1-42505           JetPaul               2001-12-26 10:29  2002.01.14  
Перевести программу с VB на Delphi


3-42347           Саня                  2001-12-06 13:54  2002.01.14  
Уважаемые мастера, а можно ли....


1-42454           @leche                2001-12-24 21:04  2002.01.14  
Как реализуется цвет в строке RichEdit или RxRichEdit ???