ソス@ソスソスソスソスソスソスソスフソスソスXソスgソス{ソスbソスNソスXソスフスソスNソスソスソス[ソスソスソスソスXソスソスソス[ソスYソスノ連ソスソスソスソスソスソスノは?
|
ソスEC/C++
ソスEDelphi
ソスEVisual BasicソスソスソスSソスソス
ソス@(VB2-VB6ソスソス.NETソスソスソスp)
ソスEVisual Basic(VB2-VB6)
ソスEVisual Basic .NET
ソスEVisual C++
ソスEpapy's softwarelibrary
ソスRソスツゑソスソスソスListBoxソスフスソスNソスソスソス[ソスソスソスiTopIndexソスフ托ソスソスソスソスjソス同趣ソスソスノ行ソスソスソスソスソスソス
ソスXソスNソスソスソス[ソスソスソスoソス[ソスソスPosionソスソスgソスソスソスト会ソスソスLソスフようソスノゑソスソスワゑソスソスソスソスB
ListBox1.TopIndex := ScrollBar1.Position;
ListBox2.TopIndex := ScrollBar1.Position;
ListBox3.TopIndex := ScrollBar1.Position;
ソスiソスCソスxソスソスソスgソスヘスソスNソスソスソス[ソスソスソスoソス[ソスソスOnChangeソスナゑソスソスj
ソスナゑソスソスソスソスAソスPソスソスレのスソスNソスソスソス[ソスソスソスフ搾ソス
ListBox1ソスソスソスソスListBox3ソスワで擾ソスソスヤにカソス^ソスソスソスJソス^ソスソスソスJソス^ソスソスソスニゑソスソスソスソスソスソスソスソスソスソスソス
ソスXソスNソスソスソス[ソスソスソスソスソストゑソスソスワゑソスソスワゑソスソスB
ソスQソスソスレ以降ソスフスソスNソスソスソス[ソスソスソスナは3ソスツとゑソスソスソスソスソスノスソスNソスソスソス[ソスソスソスソスソストゑソスソスソスソスフでゑソスソスソス
ソスヌゑソスソスソスソストゑソスPソスソスレゑソスソスソスソスソスソスソスソスソスソスノスソスNソスソスソス[ソスソスソスソスソストゑソスソスソスネゑソスソスト搾ソスソスソスソストゑソスソスワゑソスソスB
ソスソスソスニ擾ソスナはスソスNソスソスソス[ソスソスソスoソス[ソスソスgソスソスソストゑソスソスワゑソスソスソス
ListBoxソスノ表ソスソスソスソスソスソスソスXソスNソスソスソス[ソスソスソスoソス[ソスソスgソスソスソスト難ソスソスソスソスソスソスニゑソスソスナゑソスソスネゑソスソスナゑソスソス蛯、ソスソスソスH
ListBoxソスナのスソスNソスソスソス[ソスソスソスoソス[ソスソスOnChangeソスノ難ソスソスソスソスソスCソスxソスソスソスgソスソスソスソスソスソスソスソスワゑソスソスソスB
ソスXソスソスソスソスソスソスソス閧「ソスソスソスソスソスソスソスワゑソスソスB
ソスソスソスソスソスソスニ暦ソスソスZソスIソスナゑソスソスソスソスAソスソスソスソスネ包ソスソス@ソスソスソスソスソスワゑソスソスB
procedure TForm1.ScrollBar1Change(Sender: TObject);
var
Value: integer;
begin
Value := ScrollBar1.Position;
// ソス`ソスソスフ禁止
ListBox1.Perform(WM_SETREDRAW, 0, 0);
ListBox2.Perform(WM_SETREDRAW, 0, 0);
ListBox3.Perform(WM_SETREDRAW, 0, 0);
SendMessage(ListBox1.Handle, LB_SETTOPINDEX, Value, 0);
SendMessage(ListBox2.Handle, LB_SETTOPINDEX, Value, 0);
SendMessage(ListBox3.Handle, LB_SETTOPINDEX, Value, 0);
// ソス`ソスソスフ具ソスソスソス(ソスワゑソスソス`ソス謔オソスネゑソス)
ListBox3.Perform(WM_SETREDRAW, 1, 0);
ListBox2.Perform(WM_SETREDRAW, 1, 0);
ListBox1.Perform(WM_SETREDRAW, 1, 0);
// ソスト描ソスソス
ListBox3.Invalidate;
ListBox2.Invalidate;
ListBox1.Invalidate;
end;
ソスソスソスsソスナゑソスソスB
ソスXソスNソスソスソス[ソスソスソスoソス[ソスワで再描ソス謔オソストゑソスソスワゑソスソスソスナゑソスソスソスソスB
# ソスナ鯉ソスワでスソスNソスソスソス[ソスソスソスソスソストゑソスXソスNソスソスソス[ソスソスソスoソス[ソスヘ茨ソスヤ擾ソスフまゑソス(ソスソスソスロは茨ソスヤ会ソス)ソスナゑソスソスソスソスB
ソスソスソスソスソスソスソスソスニ抵ソスソスラまゑソスソスB
ソスソスソスソスソスソスソスソスソスソスソスヌ。
ソスソスソスソスlソスソスソスソスソスノ搾ソスソスソスソスソスフで、ソスソスソスソスニ簡単ソスネ包ソスソス@ソスソスソスソスソス驍ゥソスソスソスソスソスワゑソスソスソスB
ScrollBarソスフ更ソスVソスソスソスソスソスナ、ソスソスソスソスソスソスソスソスソスソスソスTopIndexソスニ難ソスソスソスソスlソスナはダソスソスソスソスソスソスソスソスソスワゑソスソスソスB
ソスソスソスフ場合ソスヘ、GetScrollInfoソスナ範囲ゑソス謫セソスソスソスAソスソスソスソスソスソスソスlソスソスソスソスソストゑソスソスソストゑソスソスソスソスソスソスソスソスB
procedure TForm1.ScrollBar1Change(Sender: TObject);
var
Value: integer;
begin
Value := ScrollBar1.Position;
// ソス`ソスソスフ禁止
ListBox1.Perform(WM_SETREDRAW, 0, 0);
ListBox2.Perform(WM_SETREDRAW, 0, 0);
ListBox3.Perform(WM_SETREDRAW, 0, 0);
//ソスlソスフ設抵ソス
SendMessage(ListBox1.Handle, LB_SETTOPINDEX, Value, 0);
SendMessage(ListBox2.Handle, LB_SETTOPINDEX, Value, 0);
SendMessage(ListBox3.Handle, LB_SETTOPINDEX, Value, 0);
// ソス`ソスソスフ具ソスソスソス(ソスワゑソスソス`ソス謔オソスネゑソス)
ListBox3.Perform(WM_SETREDRAW, 1, 0);
ListBox2.Perform(WM_SETREDRAW, 1, 0);
ListBox1.Perform(WM_SETREDRAW, 1, 0);
// ソスト描ソスソス(ソスXソスNソスソスソス[ソスソスソスソスソスソスソスヘ再描ソス謔ウソスソスネゑソス)
InvalidateRect(ListBox1.Handle, nil, TRUE);
InvalidateRect(ListBox2.Handle, nil, TRUE);
InvalidateRect(ListBox3.Handle, nil, TRUE);
// ソスXソスNソスソスソス[ソスソスソスoソス[ソスソスXソスV
SetScrollPos(ListBox1.Handle, SB_VERT, Value, TRUE);
SetScrollPos(ListBox2.Handle, SB_VERT, Value, TRUE);
SetScrollPos(ListBox3.Handle, SB_VERT, Value, TRUE);
end;
ソスソスソス[ソスLソスソスソスCソスノスソスNソスソスソス[ソスソスソスソスソストまゑソスソスI
ソスソスソスフようソスネ包ソスソス@ソスソスソスソスソスソスソスナゑソスソスヒ。
ソスソスソスソスソスネとゑソスソスソス謔ュソスソスソスソスナゑソスソストまゑソスソスが・ソスEソスE
ソスソスソスソスソスソスAソスソスソスソスソスネゑソスノ擾ソスソスソスソスソスソスト暦ソスソスソスソスソス謔、ソスニ思ソスソスソスワゑソスソスB
ソスソスソスソスマゑソスvソスソスソスOソスソスソスソスソスgソズのは会ソスソスソスソス[ソスソスソスト面費ソスソスソスソスナゑソスソスB
ソスノゑソスソスフゑソスソスソスAソス{ソスソスソスノゑソスソス閧ェソスニゑソスソスソスソスソスソスソスソスワゑソスソスソスソスB
Halbow ソスナゑソスソスB
>ソスソスソスニ擾ソスナはスソスNソスソスソス[ソスソスソスoソス[ソスソスgソスソスソストゑソスソスワゑソスソスソス
>ListBoxソスノ表ソスソスソスソスソスソスソスXソスNソスソスソス[ソスソスソスoソス[ソスソスgソスソスソスト難ソスソスソスソスソスソスニゑソスソスナゑソスソスネゑソスソスナゑソスソス蛯、ソスソスソスH
ソスソスソス[ソスJソスソスソスtソスbソスNソスナ会ソスソスソスナゑソスソスワゑソスソスBソスVソスKソスナ以会ソスソスフコソス[ソスhソスソスソスソスソスソストみてゑソスソスソスソスソスソスソスソスB
ソスRソスツゑソス ListBox ソスフどのスソスNソスソスソス[ソスソスソスoソス[ソス動ゑソスソスソスソストゑソスAソスソスソスフ難ソスツゑソスソスヌ撰ソスソスソスソスワゑソスソスB
ソスソスソスLソス[ソスノゑソスソスXソスNソスソスソス[ソスソスソスノは対会ソスソスソスソストゑソスソスワゑソスソスソスBソスiソスナゑソスソスワゑソスソスソスソスj
type
TForm1 = class(TForm)
ListBox1: TListBox;
ListBox2: TListBox;
ListBox3: TListBox;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private ソス骭セ }
public
procedure ProcessMessage(hWindow:HWND;Msg:UINT;wParam:WPARAM;lParam:LPARAM);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
var
Hook: HHOOK;
function CallWndRetProc(code:integer;wparam:WPARAM;lparam:LPARAM):LRESULT;stdcall;
var
pCWPR:PCWPRetStruct;
begin
if (code < 0) then begin
result := CallNextHookEx(Hook,code,wparam,lparam);
exit;
end;
if (Code = HC_ACTION) then begin
pCWPR := PCWPRetStruct(lParam);
Form1.ProcessMessage(pCWPR^.hwnd,pCWPR^.message,pCWPR^.wParam,pCWPR^.lParam);
end;
result := CallNextHookEx(Hook,code,wparam,lparam);
end;
procedure TForm1.ProcessMessage(hWindow:HWND;Msg:UINT;wParam:WPARAM;lParam:LPARAM);
begin
if Msg <> WM_VSCROLL then exit;
if hWindow = ListBox1.Handle then begin
ListBox2.Perform(Msg,wParam,lparam);
ListBox3.Perform(Msg,wParam,lparam);
end else
if hWindow = ListBox2.Handle then begin
ListBox1.Perform(Msg,wParam,lparam);
ListBox3.Perform(Msg,wParam,lparam);
end else
if hWindow = ListBox3.Handle then begin
ListBox1.Perform(Msg,wParam,lparam);
ListBox2.Perform(Msg,wParam,lparam);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Hook := SetWindowsHookEx(WH_CALLWNDPROCRET,CallWndRetProc,0,GetCurrentThreadID);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnHookWindowsHookEx(Hook);
end;