Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
(Q)두개의 StringGrid 수평스크롤바를 같이 움직이게 하려면...
현재 두개의 StringGrid를 가지고 한개의 StringGrid 수평스크롤바를 움직이면
나머지 StringGrid 수평스크롤바도 함께 움직이게 하고 싶습니다.
어떻게 하면 좋을지 많은 조언 부탁 드립니다.
감사합니다.
1
COMMENTS
김영대
•
1999.09.13 23:51
// 1.먼저 아래 콤포넌트를 설치한다
unit SyncStringGrid;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids;
type
TSyncKind = (skBoth, skVScroll, skHScroll);
TSyncStringGrid = class(TStringGrid)
private
FInSync: Boolean;
FsyncGrid: TSyncStringGrid;
FSyncKind: TSyncKind;
{ Private declarations }
procedure WMVScroll( Var Msg: TMessage ); message WM_VSCROLL;
procedure WMHScroll( Var Msg: TMessage ); message WM_HSCROLL;
protected
{ Protected declarations }
public
{ Public declarations }
procedure DoSync( msg, wparam: Integer; lparam: longint ); virtual;
published
{ Published declarations }
property SyncGrid: TSyncStringGrid read FSyncGrid write FSyncGrid;
property SyncKind: TSyncKind read FSyncKind write FSyncKind default skBoth;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TSyncStringGrid]);
end;
procedure TSyncStringGrid.WMVScroll( Var Msg: TMessage );
Begin
If not FInSync and
Assigned( FSyncGrid ) and
(FSyncKind In [skBoth, skVScroll])
Then
FSyncGrid.DoSync( WM_VSCROLL, msg.wparam, msg.lparam );
inherited;
end;
procedure TSyncStringGrid.WMHScroll( Var Msg: TMessage );
Begin
If not FInSync and
Assigned( FSyncGrid ) and
(FSyncKind In [skBoth, skHScroll])
Then
FSyncGrid.DoSync( WM_HSCROLL, msg.wparam, msg.lparam );
inherited;
end;
procedure TSyncStringGrid.DoSync( msg, wparam: Integer; lparam: longint );
begin
FInSync := True;
Perform( msg, wparam, lparam );
FinSync := False;
end;
end.
// 2.아래 예제를 실행하여 두 그리드의 scroll을 움직여 본다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, SyncStringGrid;
type
TForm1 = class(TForm)
SyncStringGrid1: TSyncStringGrid;
SyncStringGrid2: TSyncStringGrid;
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormActivate(Sender: TObject);
var
i, j: Integer;
begin
// StringGrid1의 크기와 값을 임의로 지정한다(예제용)
SyncStringGrid1.ColCount := 15;
SyncStringGrid1.RowCount := 20;
for i := 1 to SyncStringGrid1.ColCount - 1 do
SyncStringGrid1.Cells[i, 0] := Char(Ord('A')+i-1);
for i := 1 to SyncStringGrid1.RowCount - 1 do
SyncStringGrid1.Cells[0, i] := IntToStr(i);;
for i := 1 to SyncStringGrid1.ColCount - 1 do
for j := 1 to SyncStringGrid1.RowCount - 1 do
SyncStringGrid1.Cells[i, j] := Format('%.0n', [i * j * 10000.0]);
// StringGrid2를 StringGrid1과 동일하게
SyncStringGrid2.ColCount := SyncStringGrid1.ColCount;
SyncStringGrid2.RowCount := SyncStringGrid1.RowCount;
for i := 1 to SyncStringGrid1.ColCount - 1 do
for j := 1 to SyncStringGrid1.RowCount - 1 do
SyncStringGrid2.Cells[i, j] := SyncStringGrid1.Cells[i, j];
// 두 그리드의 scroll 을 동기화 시키도록 상호 지정한다
SyncStringGrid1.SyncGrid := SyncStringGrid2;
SyncStringGrid2.SyncGrid := SyncStringGrid1;
end;
end.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
오승섭
1999.09.14 18:40
0
COMMENTS
/
0
LIKES
256Kb이상인 화일을 내려받기하려면 ......
김여정
•
1999.09.14 18:18
1
COMMENTS
/
0
LIKES
Y2K - FormatDatetime
댕이
•
1999.09.14 19:34
김여정 wrote: > DB는 MS-SQL입니다. datetime형태의 field값이 null일 때(Key값 아님). > select해서 Fo...
jinifan
1999.09.14 11:28
0
COMMENTS
/
0
LIKES
Re: MDI 와 일반폼의 관계
이권혁
•
1999.09.14 12:22
1
COMMENTS
/
0
LIKES
ASyncPro라는 컴포넌트의 설명을 부탁드립니다.
이정욱
•
1999.09.14 12:24
AsyncPro는 시리얼 및 윈속 통신 컴포넌트 입니다. ZModem등 파일 전송 프로토콜, 팩스모뎀 콘트롤, 보이...
조한석
•
1999.09.14 09:17
2
COMMENTS
/
0
LIKES
좀 도와주세요 ^^; 탐색기에서 특정 매뉴 무효화시키는 방법좀..
댕이
•
1999.09.14 19:41
조한석 wrote: > 요즘 프로그램 공부를 좀 하고 있는데요. > 탐새기에서 특정 매뉴를 무효화 한다든가. ...
홍세비
•
1999.09.15 02:23
댕이 wrote: > 조한석 wrote: > > 요즘 프로그램 공부를 좀 하고 있는데요. > > 탐새기에서 특정 매뉴...
강민주
•
1999.09.14 10:26
1
COMMENTS
/
0
LIKES
창문짱처럼 폼에 텍스트 출력?
이정욱
•
1999.09.14 15:02
DrawText나 TextOut으로 Canvas에 그린것입니다. 강민주 wrote: > 안녕하세요. > 창문짱이나.. File...
심동현
1999.09.14 08:46
0
COMMENTS
/
0
LIKES
Exception 관련
정연섭
•
1999.09.14 07:10
1
COMMENTS
/
0
LIKES
테이블(컴포넌트)의 내용을 쏘트할려면??
이재식
•
1999.09.14 08:31
안녕하세요. 테이블 컴포넌트만 이용해서 소트를 하고 싶은 건가요? 아니면 그외에 쿼리 컴포넌트를 이용...
한 재
•
1999.09.14 03:42
1
COMMENTS
/
0
LIKES
영대님! AbsoluteIndex 에 대해서요...
구창민
•
1999.09.14 04:44
한 재 wrote: > 답장 감사합니다. > > AbsoluteIndex 에 대해서 좀더 배울 수 없을까요? 한번도 써...
문성준
•
1999.09.14 02:48
1
COMMENTS
/
0
LIKES
Field Editer에서 GetText 사용법
이재식
•
1999.09.14 03:30
안녕하세요? 아주 좋은 질문하셨습니다. 먼저 그 이벤트에 보면 세개의 매개변수가 있습니다. Sender : ...
최기훈
1999.09.14 02:21
0
COMMENTS
/
0
LIKES
String과 Record형의 형변환이 가능한가요?
양두석
•
1999.09.14 01:53
1
COMMENTS
/
0
LIKES
밑의 218번 질문에 답변주실분 없습니까?
이재식
•
1999.09.14 03:38
안녕하세요? 그 에러메시지는 저두 경험한 적이 있습니다. 제 경험으로는 이 에러메시지는 두가지 방법으...
박래균
1999.09.14 01:34
0
COMMENTS
/
0
LIKES
델파이4.0의 dbgrid를 비베에서 사용하려면.
홍길동
•
1999.09.14 02:51
1
COMMENTS
/
0
LIKES
Form Creation Check.....?
이준해
•
1999.09.16 07:11
pForm 은 아마 type 이 TForm 으로 정의된 변수겠죠 ? create method는 엄밀히 얘기해서 class reference ...
황선희
•
1999.09.14 01:13
1
COMMENTS
/
0
LIKES
StringGrid와 DBGrid의 사용법을 비교해서 설명해 주십시요.
이재식
•
1999.09.14 04:19
네, StringGrid를 쓰면 DataSource는 사용할 필요가 없습니다. 대신 StringGrid에 데이터를 뿌려주려면 결...
유희정
•
1999.09.14 00:41
1
COMMENTS
/
0
LIKES
같은 DB를 사용하는 EXE 를 여러개 Run시키려면?
정종구
•
1999.09.14 19:52
유희정 wrote: > 수고가 많으십니다. > 도움을 청하고자 이곳을 찾았습니다. > > 같은 exe를 여러번 ...
psb300
•
1999.09.13 19:25
1
COMMENTS
/
0
LIKES
(Q)두개의 StringGrid 수평스크롤바를 같이 움직이게 하려면...
현재 두개의 StringGrid를 가지고 한개의 StringGrid 수평스크롤바를 움직이면 나머지 StringGrid 수평스크롤바도 함께 움직이게 하고 싶습니다. 어떻게 하면 좋을지 많은 조언 부탁 드립니다. 감사합니다.
김영대
•
1999.09.13 23:51
// 1.먼저 아래 콤포넌트를 설치한다 unit SyncStringGrid; interface uses Windows, Messages, ...
이미형
•
1999.09.13 19:11
3
COMMENTS
/
0
LIKES
(급)Round 함수가 이상해요. 도와주세요...
유섭
•
1999.09.14 03:09
이미형 wrote: > 안녕하세요...델코 애용자입니다. > > (질문으로) > 저희 회사에서는 델파이로 개발...
이재식
•
1999.09.13 22:11
네, 그런 경우가 있습니다. 델파이 4에 패치 3을 쓴다면 값은 정확히 나옵니다. 그런데, 그것이 아니라면...
chaser
•
1999.09.13 19:38
이미형 wrote: > 안녕하세요...델코 애용자입니다. > > (질문으로) > 저희 회사에서는 델파이로 개발...
최기훈
1999.09.13 18:09
0
COMMENTS
/
0
LIKES
C Socket과 Delphi와 통신할때...
한 재
•
1999.09.13 10:39
2
COMMENTS
/
0
LIKES
부모와 자식 Node 지정하기
김영대
•
1999.09.14 02:12
한 재 wrote: > TreeView의 부모와 자식 노드에 각기 다른 텍스트화일을 지정하고 싶은데 잘 안되는군요...
chaser
•
1999.09.13 19:59
한 재 wrote: > TreeView의 부모와 자식 노드에 각기 다른 텍스트화일을 지정하고 싶은데 잘 안되는군요...
psb300
1999/09/13 19:25
Views
731
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
unit SyncStringGrid;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids;
type
TSyncKind = (skBoth, skVScroll, skHScroll);
TSyncStringGrid = class(TStringGrid)
private
FInSync: Boolean;
FsyncGrid: TSyncStringGrid;
FSyncKind: TSyncKind;
{ Private declarations }
procedure WMVScroll( Var Msg: TMessage ); message WM_VSCROLL;
procedure WMHScroll( Var Msg: TMessage ); message WM_HSCROLL;
protected
{ Protected declarations }
public
{ Public declarations }
procedure DoSync( msg, wparam: Integer; lparam: longint ); virtual;
published
{ Published declarations }
property SyncGrid: TSyncStringGrid read FSyncGrid write FSyncGrid;
property SyncKind: TSyncKind read FSyncKind write FSyncKind default skBoth;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TSyncStringGrid]);
end;
procedure TSyncStringGrid.WMVScroll( Var Msg: TMessage );
Begin
If not FInSync and
Assigned( FSyncGrid ) and
(FSyncKind In [skBoth, skVScroll])
Then
FSyncGrid.DoSync( WM_VSCROLL, msg.wparam, msg.lparam );
inherited;
end;
procedure TSyncStringGrid.WMHScroll( Var Msg: TMessage );
Begin
If not FInSync and
Assigned( FSyncGrid ) and
(FSyncKind In [skBoth, skHScroll])
Then
FSyncGrid.DoSync( WM_HSCROLL, msg.wparam, msg.lparam );
inherited;
end;
procedure TSyncStringGrid.DoSync( msg, wparam: Integer; lparam: longint );
begin
FInSync := True;
Perform( msg, wparam, lparam );
FinSync := False;
end;
end.
// 2.아래 예제를 실행하여 두 그리드의 scroll을 움직여 본다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, SyncStringGrid;
type
TForm1 = class(TForm)
SyncStringGrid1: TSyncStringGrid;
SyncStringGrid2: TSyncStringGrid;
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormActivate(Sender: TObject);
var
i, j: Integer;
begin
// StringGrid1의 크기와 값을 임의로 지정한다(예제용)
SyncStringGrid1.ColCount := 15;
SyncStringGrid1.RowCount := 20;
for i := 1 to SyncStringGrid1.ColCount - 1 do
SyncStringGrid1.Cells[i, 0] := Char(Ord('A')+i-1);
for i := 1 to SyncStringGrid1.RowCount - 1 do
SyncStringGrid1.Cells[0, i] := IntToStr(i);;
for i := 1 to SyncStringGrid1.ColCount - 1 do
for j := 1 to SyncStringGrid1.RowCount - 1 do
SyncStringGrid1.Cells[i, j] := Format('%.0n', [i * j * 10000.0]);
// StringGrid2를 StringGrid1과 동일하게
SyncStringGrid2.ColCount := SyncStringGrid1.ColCount;
SyncStringGrid2.RowCount := SyncStringGrid1.RowCount;
for i := 1 to SyncStringGrid1.ColCount - 1 do
for j := 1 to SyncStringGrid1.RowCount - 1 do
SyncStringGrid2.Cells[i, j] := SyncStringGrid1.Cells[i, j];
// 두 그리드의 scroll 을 동기화 시키도록 상호 지정한다
SyncStringGrid1.SyncGrid := SyncStringGrid2;
SyncStringGrid2.SyncGrid := SyncStringGrid1;
end;
end.