Главная страница
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.47 MB
Время: 0.013 c
1-19148
Елена
2002-02-18 14:56
2002.03.07
Закрытие ДОС-окна


1-19228
dart
2002-02-19 12:21
2002.03.07
Один вопрос... :)


14-19300
vladislav
2002-01-20 18:22
2002.03.07
Инсталляция Delphi


3-19058
ol
2002-02-07 16:05
2002.03.07
Как в MSSQL в SQL работать с датами


1-19153
Roman_
2002-02-21 09:00
2002.03.07
Как округлить 0.0294... до 0.3