![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как синхронизировать прокрутку двух Listbox'ов??? [D7, WinXP]
rolex © (2005-01-12 15:25:00)Меня не устраивает компонент Listview. Придётся изобретать велосипед, но всё-же.
rolex (2005-01-15 21:09:00) [1]
> Vit@ly © (14.01.05 19:51) [23]
> В догонку.
> Опиши кратко свою "железку"
P-III 866Mhz, 256Mb. Помоему этого достаточно, для выполнения таких операций.
Vit@ly (2005-01-14 19:51:00) [2]В догонку.
Опиши кратко свою "железку"
Vit@ly (2005-01-14 19:41:00) [3]2 rolex (14.01.05 19:07) [21]
См. (и желательно последуй) Vit@ly © (13.01.05 20:43) [19]
и никаких
сначала скролится один лист-бокс, а затем второй.
rolex (2005-01-14 19:07:00) [4]
> bulkas (13.01.05 22:39) [20]
> не, он не про то.
> сначала скролится один лист-бокс, а затем второй.
> как сделать, чтоб оба одновременно скролились?
Хоть ты меня понял.
bulkas (2005-01-13 22:39:00) [5]не, он не про то.
сначала скролится один лист-бокс, а затем второй.
как сделать, чтоб оба одновременно скролились?
Vit@ly (2005-01-13 20:43:00) [6]2 rolex (13.01.05 11:06) [16]
"Лечи" свой компьютер. Или проверь программу на компьютерах друзей
Все летает, ни каких задержек и тормозов
rolex (2005-01-13 19:06:00) [7]ауу!!! Помогите же.
rolex (2005-01-13 12:03:00) [8]
> а TListBo.TopIndex не спасеь отца русской демократии?
> и одно из двух событий OnDrawItem (теоретически должно вызываться
> при прокрутке, без изменения выделеной строки) или onClick
> (вызывается при именении выделеной строки)
Тоже самое, что и с предыдущим примером. Прокручиваются не совсем одновременно, вначале наблюдается отставание.
rolex (2005-01-13 11:06:00) [9]
> Всё работает замечательно. Но есть одно НО, сначала прокручивается
> один listbox, потом второй listbox. А нельзя чтоб они прокручивались
> одновременно?
> Похоже, что у тебя комп чем-то перегружен. У меня скролит
> одновременно, хотя у друзей тоже тормозит.
> Посмотри автозагрузку, нет ли чего-либо "лишнего"?
Нет, ты что. Ты попробуй не быстро прокручивать, а кратковременно курсором кликать на одну з стрелочек скроллбара.
rolex (2005-01-13 11:06:00) [10]
> Всё работает замечательно. Но есть одно НО, сначала прокручивается
> один listbox, потом второй listbox. А нельзя чтоб они прокручивались
> одновременно?
> Похоже, что у тебя комп чем-то перегружен. У меня скролит
> одновременно, хотя у друзей тоже тормозит.
> Посмотри автозагрузку, нет ли чего-либо "лишнего"?
Нет, ты что. Ты попробуй не быстро прокручивать, а кратковременно курсором кликать на одну з стрелочек скроллбара.
Vit@ly (2005-01-13 07:36:00) [11]Всё работает замечательно. Но есть одно НО, сначала прокручивается один listbox, потом второй listbox. А нельзя чтоб они прокручивались одновременно?
Похоже, что у тебя комп чем-то перегружен. У меня скролит одновременно, хотя у друзей тоже тормозит.
Посмотри автозагрузку, нет ли чего-либо "лишнего"?
TButton (2005-01-12 22:29:00) [12]а TListBo.TopIndex не спасеь отца русской демократии?
и одно из двух событий OnDrawItem (теоретически должно вызываться при прокрутке, без изменения выделеной строки) или onClick (вызывается при именении выделеной строки)
rolex (2005-01-12 22:09:00) [13]Вот код, который мне был предложен предыдущим постом:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
ListBox2: TListBox;
Splitter1: TSplitter;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
lbproc1, lbproc2: TWndMethod;
procedure NewProc1(var msg: TMessage);
procedure NewProc2(var msg: TMessage);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.NewProc1;
begin
case msg.Msg of
WM_VSCROLL, LB_SETCURSEL,
WM_KEYFIRST..WM_KEYLAST,
WM_MOUSEFIRST..WM_MOUSELAST:
lbproc2(msg);
end;
lbproc1(msg);
end;
procedure TForm1.NewProc2;
begin
case msg.Msg of
WM_VSCROLL, LB_SETCURSEL,
WM_KEYFIRST..WM_KEYLAST,
WM_MOUSEFIRST..WM_MOUSELAST:
lbproc1(msg);
end;
lbproc2(msg);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
lbproc1 := ListBox1.WindowProc;
ListBox1.WindowProc := NewProc1;
lbproc2 := ListBox2.WindowProc;
ListBox2.WindowProc := NewProc2;
end;
end.
Всё работает замечательно. Но есть одно НО, сначала прокручивается один listbox, потом второй listbox. А нельзя чтоб они прокручивались одновременно?
Vit@ly (2005-01-12 19:47:00) [14]http://denisov.i2x2.ru/delphi/Units/SListBox.rar
rolex (2005-01-12 18:57:00) [15]A с
ItemIndexкак??? На какое событие то ставить?
bulkas (2005-01-12 18:13:00) [16]если без примерчика не можешь присваивай ItemIndex, хоть поймешь что сделал.
rolex (2005-01-12 18:09:00) [17]Так всё-же как сделать с
WM_VSCROLL???
rolex (2005-01-12 16:35:00) [18]НУ помогите же!!! плиз! срочно надо!
rolex (2005-01-12 15:48:00) [19]а как это сделать? Я без примера не могу. Можно примерчик, ну пожалуйста!!!
begin...end (2005-01-12 15:42:00) [20]> [4] rolex (12.01.05 15:40)
Варианты есть. Примерчика нет.
Вариант: отлавливать в одном listbox'е WM_VSCROLL и пересылать его другому listbox'у.