Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.07;
Скачать: CL | DM;

Вниз

Синхронный скролинг   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
4-19393
bohdan_k
2002-01-07 21:06
2002.03.07
Как загрузить файл со своим зарегестрированным заранее расширением в свою программу по щелчке на нём


7-19368
sedoy
2001-11-29 18:16
2002.03.07
одинаковые номера HDD


14-19326
Геннадий Михалев
2002-01-19 18:29
2002.03.07
Вопрос коммерч. характера.


3-19111
Alexy
2002-02-11 15:24
2002.03.07
Откат и обновление


1-19179
konrads
2002-02-18 12:00
2002.03.07
Картинки JPG, TIFF, GIF и т.п в базах данных