喫茶XRAYトップページ

[スレッド全体
]

[3875] エクスプローラのようなアプリ返信 削除
2010/10/31 (日) 20:42:21 Mr.XRAY
を作成するためのコンポーネントですが,更新しました.
Delphi 2010でコンパイルしたら修正が必要で,アイコンも表示されない
という状態でした.
実は,ちょっと前にQ and Aでシェルコンポーネントでアイコンが表示
それない,というのがあったので,確認したら.あらっ? だったので.
(シェルを使用したものではありません.念のため)

http://mrxray.on.coocan.jp/Delphi/plSamples/812_ExplorerTest.htm

また,このページのサンプルで使用していた,ヒシアマゾンさん作の
コンテキストメニュー表示のコンポーネントもインストールできません
でした.

コードを修正するよりも,最初から作成した方がいいんじゃないかと思い,
作成しました.これは,他の方が単独で使用することも考えて別のページ
を設けました.
私自身は自アプリで使おうとは思わないのですが (^^;)
「売り」は[新規作成]のサブメニューも表示することです.
これはおそらくレアものです.ハイ.

http://mrxray.on.coocan.jp/Delphi/plSamples/814_ContextMenu_DropSource.htm

[3889] Delphi6による動作検証返信 削除
2010/11/2 (火) 22:46:12 たてぐや
▼ Mr.XRAYさん

 いまさら6? と言われそうですが、バージョンアップする予定はないので
動作検証してみました。こういうの、前から欲しかったのです。以下、DPRファ
イルから起動しての結果です。

01_Explorer_test
フォーム作成時に「Splitter.ExplieHightのプロパティが存在しない」と言わ
れてフォームが表示できませんでした。

02_plContextMenu_01_Test01
正常にコンパイルでき、動作しました。

03plContextMenu_01_test01
kコンパイルできて表示されましたが、右ペインのファイル名を右クリックす
ると「外部例外」が発生します。

04_OpenDlg_Application
実行しようとするとCPUウィンドルが出てしまい、継続できませんでした。

 以上、参考までに。
 さっさと新しいDelphi買え!と言われそうですが…

[3890] Re:Delphi6による動作検証返信 削除
2010/11/3 (水) 08:54:37 Mr.XRAY
>  以上、参考までに。
>  さっさと新しいDelphi買え!と言われそうですが…


御意!! ウソ,ウソです.

> 動作検証してみました。

たてぐさーん.こういうの嬉しいです.
得意になって答えちゃいます.

> 01_Explorer_test
> フォーム作成時に「Splitter.ExplieHightのプロパティが存在しない」と言わ
> れてフォームが表示できませんでした。


スミマセンね.これ,Delphi 2010のプロジェクトなんです.
いくつか方法が考えられるのですが,一つは添付の図のように,[全て無視]で
やる方法です,

これで多分,他のサンプルも動作すると思います.
もう1つの方法は,以下の説明の方法です.

http://mrxray.on.coocan.jp/Delphi/Info/OtherInfo_General.htm#02


[3891] Re2:Delphi6による動作検証返信 削除
2010/11/3 (水) 09:03:31 Mr.XRAY
後,このコンポは,いわゆるシェルコンポーネントではないので,
特殊フォルダがフルパスの名前部分になったり,うまく表示できない
ことがあります.

例: マイドキュメント ---> MyDocument

Delphi 6Pro以上でしたら.Demoフォルダにシェルコンポーネントが
あります.これを使うのも手だと思います.
わざわざ,サンプル[812]のコンポを作成したのは,業務では,特殊
フォルダを使わないこと(ほとんど共有フォルダ)と,Delphi添付の
シェルコンポの使い勝手がいまいちだったからです.
ん? コンパイルじゃなくてインストールだったかな?


[3892] Re3:Delphi6による動作検証返信 削除
2010/11/4 (木) 22:38:48 たてぐや
▼ Mr.XRAYさん

 多々解説ありがとうございます。シェルコンポーネントはすでにインストー
ルしてありまます。あまりいじったことはないのですが、試しにサンプルと
同じようなものを作ってみました。右ペインでファイル名を右クリックして
コンテキストメニューを表示するところで、フォルダなら表示されますが、
単体ファイルだとやはり外部例外が発生してしまいました。オープンダイア
ログでの表示でファイルを右クリックしても発生しますから、これはこうい
うものなのかもしれません。

[3899] コンテキストメニューコンポ.重大バグ返信 削除
2010/11/6 (土) 12:42:53 Mr.XRAY
▼ たてぐやさん

> ログでの表示でファイルを右クリックしても発生しますから、これはこうい
> うものなのかもしれません。


スミマセン,申し訳ありません.ゴメンなさい,
昨日確認しました.単純なミスでした.バグです.
ということはドロップソースコンポも同じかも.

http://mrxray.on.coocan.jp/Delphi/plSamples/812_ExplorerTest.htm#01
で最初からテストしていれば見つかるバグです.
つまり,テストをさぼりました.
直します.
でも,参考にしたURLのコードも,該当部分は同じなんです.
たてぐやさんがここにカキコしなかったら,永久に見つからなかったかも.


[3900] 修正UPしました返信 削除
2010/11/7 (日) 10:12:36 Mr.XRAY
ドライブ直下のフォルダやファイルを操作対象にすると発生していた
ようです.
ドライブの判定方法に間違いがありました.
修正しました.


[3901] Re:修正UPしました返信 削除
2010/11/7 (日) 22:04:19 たてぐや
▼ Mr.XRAYさん

> ドライブの判定方法に間違いがありました.
> 修正しました.


 さっそくにありがとうございました。
 今日は午前中にテレビ購入の下見に行き、ごごから東京国立博物館の
「東大寺大仏―天平の至宝―」を見に行き、帰って来てからギターの弦
の張り替えをやっていたりして試す時間がありま線でした。明日は午後
から有休をとっているのでやってみようと思っています。

[3902] Re2:修正UPしました返信 削除
2010/11/7 (日) 23:28:09 Mr.XRAY
▼ たてぐやさん

>  ごごから東京国立博物館の「東大寺大仏―天平の至宝―」を見に行き、

あっ,行かれたんですか.
今年は平安遷都1300年ということで,奈良の博物館でも何かやって
いるらしいですね.


[3918] Re3:修正UPしました返信 削除
2010/11/10 (水) 21:06:41 たてぐや
▼ Mr.XRAYさん

 修正版の動作確認を行いました。やはりDelphi10のプロジェクトをそのまま
Delphi6で触ったのではうまくないです。(あたりまえ)COUウインドゥがしつ
こく出ますが、前に書いた外部例外はなくなりました。

> あっ,行かれたんですか.
> 今年は平安遷都1300年ということで,奈良の博物館でも何かやって
> いるらしいですね.


 「平城」です。奈良では正倉院展をやってますね。東大寺大仏展に、正倉院
宝物が特別展示されていましたが、それはそれは素晴らしいものでした。あん
なものがざくざくある正倉院って、なんてすごいんでしょう、と感動しました。

[3919] Re4:修正UPしました返信 削除
2010/11/10 (水) 22:04:12 Mr.XRAY
▼ たてぐやさん

> Delphi6で触ったのではうまくないです。(あたりまえ)COUウインドゥがしつ

あれっ?
う〜む.Delphi 6でテストしたつもりなんですが...
またちょっとみてみます.

>  「平城」です。奈良では正倉院展をやってますね。

失礼!!

[3922] Re5:修正UPしました返信 削除
2010/11/11 (木) 22:30:52 たてぐや
▼ Mr.XRAYさん

> う〜む.Delphi 6でテストしたつもりなんですが...

 乗りかかった船なのでレポートを…

01_ContextMenu_Test
  Application.MainFormOnTaskbar := True;
[エラー] Project1.dpr(11): 未定義の識別子 : 'MainFormOnTaskbar'

01_ExplorerTest
Solitter1.ExplicitHeightの読み込みエラーです。プロパティが存在し
ません。
「すべて無視」で読み込んで実行するとCPUウィンドゥが出ます。繰り
返すと実行は正常にできます。

02_ContextMenu_Command
  Application.MainFormOnTaskbar := True;
[エラー] Project1.dpr(11): 未定義の識別子 : 'MainFormOnTaskbar'

02_plContextMenu_Test01
問題なくコンパイル・ランできます。

03_DropSourceTest
  Application.MainFormOnTaskbar := True;
[エラー] Project1.dpr(11): 未定義の識別子 : 'MainFormOnTaskbar'

03_plContextMenu_Test02
CPUウィンドルが出ます。しつこくランしても実行に至りません。

04_OpenDlg_Application
CPUウィンドゥが出ますが、3回ほどで正常に実行できます。が、ボタン
クリックでまたCPUウィンドゥが」出ます。


[3923] Re6:修正UPしました返信 削除
2010/11/11 (木) 23:09:30 Mr.XRAY
▼ たてぐやさん,

詳細なテスト結果ありがとうございます.
実はまだ手をつけていません.
大いに参考にさせていただきます.

それにしても他の方はどしているんでしょうね?
環境による違いはなんともはや.
先ほどOleVariantについて調べていたのですが,

http://programamemo2.blogspot.com/2010/03/delphi-varutilsvariantinittvardata.html
ここに,

>    vEmpty: OleVariant;
>    略
>    VariantInit(vEmpty);


>かなーって感じでしたが、これだとコンパイル時にエラーがでます。

という記事があるんですが,私の環境だと(もちろんDelphi 2010)
コンパイルエラーは発生しないんですよね.


[3929] コンテキストメニューコンポのテスト返信 削除
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;


[3930] Re:コンテキストメニューコンポのテスト返信 削除
2010/11/12 (金) 22:37:17 たてぐや
▼ Mr.XRAYさん
> うーむ.どうしてもエラーが発生する状況を作れません.
> しばらく頭を休めます.


 何度も済みません。ゆっくり頭を休めてください。私も2日ほどお休みします。

[3963] Re2:コンテキストメニューコンポのテスト返信 削除
2010/11/28 (日) 22:10:03 Mr.XRAY
▼ たてぐやさん,遅くなっています.

>  何度も済みません。ゆっくり頭を休めてください。私も2日ほどお休みします。

頭を休めたかどうかはわかりませんが.
まったく別のプログラムなんですが,
項目識別子のコードをいじっていたら,CPUウィンドウがよく出てきています.
多分,そうじゃないかという部分を見つけました.

近いうちに修正するつもりです.


[3964] Re3:コンテキストメニューコンポのテスト返信 削除
2010/11/28 (日) 22:16:34 たてぐや
▼ Mr.XRAYさん
>たてぐやさん,遅くなっています.

 とんでもありません。お休みできましたか?

> まったく別のプログラムなんですが,
> 項目識別子のコードをいじっていたら,CPUウィンドウがよく出てきています.
> 多分,そうじゃないかという部分を見つけました.
> 近いうちに修正するつもりです.


 ゆっくりでいいですけど、期待しています。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82