Форум: "Основная";
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];
ВнизСинхронный скролинг Найти похожие ветки
← →
cahek20000 (2002-02-13 18:55) [0]Есть два дбгрида. Нужно, прокручивая горизонтально один из них, параллельно прокручивать другой.
← →
OlegY (2002-02-13 19:04) [1]Выдрал из конференций по 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 <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>
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 <vcl.h>
#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
← →
OlegY (2002-02-13 19:13) [2]Т. е создать дочерний класс от дбгрид, перехватывать события WM_VSCROLL и соответственно устанавливать Scrollы во втором гриде.
← →
petr_v_a (2002-02-13 23:04) [3]если это DBGrid, используйте Before/AfterScroll dataset`а
← →
cahek2000 (2002-02-21 10:15) [4]petr_v_a, ТЫ ВНИМАТЕЛЬНО ПРОЧИТАЛ ВОПРОС????!!!!!1
Я же по-русски написал " ГОРИЗОНТАЛЬНО"
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c