Copyright © 2010 Promsite. All Rights Reserved.


Синхронизация двух списков строк

Автор Матт Теллес                                                                     перевод Виктор Алексеев aka prom




void __fastcall TSyncListBox::HandleVScroll(
  TMessage& msg )
{
  // Let the default occur
  TCustomListBox::Dispatch( &msg );
  // Now, sync the two if necessary
  if ( pSyncBox )
    pSyncBox->TopIndex = TopIndex;
}


       В действительности обработка не сложная. Во-первых, вы позволяете основному списку вызвать событие как обычно -  которое позволяет прокручивать список в любом направлении. Если это сделано, то вы просто заставляете синхронизируемый  список прокручиваться в таком же направлении.

       Нет необходимости заботится  о направлении прокрутки или даже о самой прокрутке. TopIndex  класса TListBox позволяет вам контролировать позицию строки, которая окажется на самом верху. Всё что не хватает в коде, это заставить синхронизировать основной список с другим.

       Вам необходимо добавить в класс переменную-член представляющую другой список, и также метод, позволяющий программисту установить значений этой переменной. Этот код содержится в заголовочном файле компонента. Листинг А содержит законченный заголовочный файл класса.

Листинг A: TSyncListBox.h


//---------------------------------------------
#ifndef TSyncListBoxH
#define TSyncListBoxH
//---------------------------------------------
#include <vcl\SysUtils.hpp>
#include <vcl\Controls.hpp>
#include <vcl\Classes.hpp>
#include <vcl\Forms.hpp>
#include <vcl\StdCtrls.hpp>
//---------------------------------------------
class TSyncListBox : public TCustomListBox
{
private:
  virtual void __fastcall HandleVScroll(
                          TMessage& msg );
  TCustomListBox *pSyncBox;

protected:
  BEGIN_MESSAGE_MAP
    MESSAGE_HANDLER(WM_VSCROLL, TMessage,
                    HandleVScroll)
    END_MESSAGE_MAP(TCustomListBox)
public:
  __fastcall TSyncListBox(TComponent* Owner);
   void SetSyncListBox(
         TCustomListBox *pListBox )
   {
       pSyncBox = pListBox;
   }
__published:
};
//---------------------------------------------
#endif



стр. 3
стр. 3
P  R  O  M  S  I  T  E
Статьи по С++Builder 6
страницы: 1   2   3   4
страницы: 1   2   3   4

Для отображения Облака ссылок
необходим
Adobe Flash Player 9
или выше.