![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Синхронный скролинг [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