Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Синхронный скролинг [D4, Win95/98, Win2k, WinXP]


cahek20000 ©   (2002-02-13 18:55:00) 

Есть два дбгрида. Нужно, прокручивая горизонтально один из них, параллельно прокручивать другой.


cahek2000   (2002-02-21 10:15:00) [1]

petr_v_a, ТЫ ВНИМАТЕЛЬНО ПРОЧИТАЛ ВОПРОС????!!!!!1
Я же по-русски написал " ГОРИЗОНТАЛЬНО"


petr_v_a   (2002-02-13 23:04:00) [2]

если это DBGrid, используйте Before/AfterScroll dataset`а


OlegY   (2002-02-13 19:13:00) [3]

Т. е создать дочерний класс от дбгрид, перехватывать события WM_VSCROLL и соответственно устанавливать Scrollы во втором гриде.


OlegY   (2002-02-13 19:04:00) [4]

Выдрал из конференций по CBuilder. В данном случае подход по моему аналогичный

body { font-family: "helvetica" } p { font-size: 14pt } a { color: #547098; text-decoration: none; }Re: Two TScrollBox Synchronized (Yoto Yotov, Sat Jul 8 08:59:12 2000)

> I didn"t find an event such as OnScroll


// Indeed, there"s no OnScroll event but you can always catch the
// WM_HSCROLL and WM_VSCROLL messages. To do so, I suggest you
// to create a descendant from TScrollBox (Component | New Component
// ..., then select as "Ancestor type" TScrollBox).

// Our new TScrollBoxEx component will contain the OnVerScroll and
// OnHorScroll events. Here"s how your code may look like. In the
// header file:

#ifndef ScrollBoxExH
#define ScrollBoxExH

#include
#include
#include
#include

class PACKAGE TScrollBoxEx : public TScrollBox
{
private:
TNotifyEvent FOnVerScroll, FOnHorScroll; // Added
protected:
virtual void __fastcall WndProc(TMessage&); // Added
public:
__fastcall TScrollBoxEx(TComponent* Owner);
__published:
__property TNotifyEvent OnVerScroll = // Added
{read = FOnVerScroll, write = FOnVerScroll};
__property TNotifyEvent OnHorScroll = // Added
{read = FOnHorScroll, write = FOnHorScroll};
};

#endif

// And in the component unit:

#include
#pragma hdrstop

#include "ScrollBoxEx.h"
#pragma package(smart_init)

static inline void ValidCtrCheck(TScrollBoxEx *)
{
new TScrollBoxEx(NULL);
}

__fastcall TScrollBoxEx::TScrollBoxEx(TComponent* Owner)
: TScrollBox(Owner)
{
}

// Added
void __fastcall TScrollBoxEx::WndProc(TMessage &Msg)
{
TScrollBox::WndProc(Msg);
if(Msg.Msg == WM_VSCROLL)
{
if(FOnVerScroll) FOnVerScroll(this);
}
else if(Msg.Msg == WM_HSCROLL)
{
if(FOnHorScroll) FOnHorScroll(this);
}
}

namespace Scrollboxex
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TScrollBoxEx)};
RegisterComponents("Samples", classes, 0);
}
}

// --
// Yoto Yotov


Наверх

Титульная страница Поиск, карта сайта Написать письмо