16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RE:[+]とか[-]がついたアイコン"
この発言は #01390 アイクビー さんの[+]とか[-]がついたアイコン に対するコメントです
TTreeView でノードをドラッグ中に、これらのアイコンを表示する方法です。
uses
..., ComCtrls;
type
THTreeView = class(TCustomTreeView)
private
FfDrag: Boolean;
protected
procedure DoDragOver(fSender: TObject; fSource: TObject;
iX, iY: Integer; fState: TDragState; var fAccept: Boolean);
procedure DoEndDrag(fSender, fTarget: TObject; iX, iY: Integer);
reintroduce;
procedure DoStartDrag(fSender: TObject; var fObject: TDragObject);
reintroduce;
procedure WndProc(var M: TMessage); override;
public
constructor Create(fOwner: TComponent); override;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// (前の発言を参照してください)
with THTreeView.Create(Self) do begin
Parent := Self;
Align := alClient;
DragCursor := crArrow;
DragMode := dmAutomatic;
Items.AddChild(nil, '1');
Items.AddChild(nil, '2');
Visible := True;
OnDragOver := DoDragOver;
OnEndDrag := DoEndDrag;
OnStartDrag := DoStartDrag;
end;
end;
constructor THTreeView.Create(fOwner: TComponent);
begin
inherited Create(fOwner);
FfDrag := False;
end;
procedure THTreeView.DoDragOver(fSender: TObject; fSource: TObject;
iX, iY: Integer; fState: TDragState; var fAccept: Boolean);
begin
fAccept := True;
end;
procedure THTreeView.DoEndDrag(fSender, fTarget: TObject;
iX, iY: Integer);
begin
FfDrag := False;
end;
procedure THTreeView.DoStartDrag(fSender: TObject;
var fObject: TDragObject);
begin
FfDrag := True;
end;
procedure THTreeView.WndProc(var M: TMessage);
var
fS: TShiftState;
iC: TCursor;
fP: TPoint;
begin
if FfDrag and ((M.Msg = WM_KEYDOWN) or (M.Msg = WM_KEYUP)) then begin
fS := KeyDataToShiftState(TWMKey(M).KeyData);
case Ord(ssShift in fS) + (Ord(ssCtrl in fS) * 2) of
0: begin
iC := crDefault;
end;
1: begin
iC := 1;
end;
2: begin
iC := 2;
end;
else begin
iC := crDefault;
end;
end;
if not (iC = DragCursor) then begin
Screen.Cursor := iC;
if GetCursorPos(fP) then begin
SetCursorPos(fP.X, fP.Y);
end;
DragCursor := iC;
end;
end;
inherited WndProc(M);
end;
アイクビー
Original document by アイクビー 氏 ID:(KHB01350)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|