2010/11/12 (金) 21:32:28 Mr.XRAY |
うーむ.どうしてもエラーが発生する状況を作れません.
しばらく頭を休めます.
一応テスト環境は,Windows XP(SP3) + Delphi 6 Proです
http://mrxray.on.coocan.jp/Delphi/plSamples/812_ExplorerTest.htm#01
のリスト1のテストプログラムにコンテキストメニューコンポを追加
してテストしました.
PopupMenuにplContextMenuコンポを設定し,
plContextMenuコンポのOnPopupイベントに以下のコードを追加しました
procedure TForm1.plContextMenu1Popup(Sender: TObject);
var
i : Integer;
begin
plContextMenu1.Files.Clear;
plContextMenu1.Directory := plFileList1.ExpandFolder;
for i := 0 to plFileList1.CopyFilesList.Count - 1 do begin
plContextMenu1.Files.Add(ExtractFileName(plFileList1.CopyFilesList[i]));
end;
end;
もうひとつは,マウスのボタンダウンの以下のコードです.
procedure TForm1.plFileList1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
APos : TPoint;
i : Integer;
begin
if Button=mbRight then begin
plFileList1Click(nil);
GetCursorPos(APos);
plContextMenu1.Files.Clear;
plContextMenu1.Directory := plFileList1.ExpandFolder;
for i := 0 to plFileList1.CopyFilesList.Count - 1 do begin
plContextMenu1.Files.Add(ExtractFileName(plFileList1.CopyFilesList[i]));
end;
plContextMenu1.Popup(APos.X, APos.Y);
// //マウスの座標値をplFileList1の座標値に変換
// APos := plFileList1.ClientToScreen(Point(X, Y));
// if plFileList1.Selected = nil then begin
// PopupMenu2.Popup(APos.X, APos.Y);
// end else
// if plFileList1.SelCount = 1 then begin
// PopupMenu1.Popup(APos.X, APos.Y);
// end;
end;
end;
|
|