ShellTreeviewのインストール


Hiisan  2019-10-21 20:16:27  No: 148297

Delphi10.3に、Delphi6のShellTreeViewをコンポネントのインストールを、したいのですが、下記エラーがでます。
宜しくご指導願います。
[使用ソフト]
 OS:Window10 
 Delphi:旧   delphi6.0 professinal Build:6.163 
     新  delphi10.3 update2:Delphi Community Edition
 Component:Demos¥shellcontrols¥dclshlctrl.dpk
[エラーメッセージ]
(Debug, Win32)
brcc32 の "dclshlctrls.vrc" コマンド ライン
  c:\program files (x86)\embarcadero\studio\20.0\bin\cgrc.exe -c65001 dclshlctrls.vrc -fodclshlctrls.res 
dcc32 の "dclshlctrls.dpk" コマンド ライン
  c:\program files (x86)\embarcadero\studio\20.0\bin\dcc32.exe -$O- -$W+ -$D1 --no-config -M -Q -Z -TX.bpl 
  -AGenerics.Collections=System.Generics.Collections;Generics.Defaults=System.Generics.Defaults;WinTypes=Winapi.Windows;WinProcs=Winapi.Windows;
  DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -DDEBUG -I"c:\program files (x86)\embarcadero\studio\20.0\lib\Win32\release\JA";
  D:\Component\ShellControlsOnDemos\ShellControls;"c:\program files (x86)\embarcadero\studio\20.0\lib\Win32\release";
  C:\Users\hirata\Documents\Embarcadero\Studio\20.0\Imports;"c:\program files (x86)\embarcadero\studio\20.0\Imports";
  C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp;"c:\program files (x86)\embarcadero\studio\20.0\include" 
  -LEC:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl -LNC:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp -NSSystem.Win;Data.Win;Datasnap.Win;
  Web.Win;Soap.Win;Xml.Win;Bde;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;DUnitX.Loggers.GUI;Winapi; 
  -OD:\Component\ShellControlsOnDemos\ShellControls;"c:\program files (x86)\embarcadero\studio\20.0\lib\Win32\release";
  C:\Users\hirata\Documents\Embarcadero\Studio\20.0\Imports;"c:\program files (x86)\embarcadero\studio\20.0\Imports";
  C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp;"c:\program files (x86)\embarcadero\studio\20.0\include" -R"c:\program files 
  (x86)\embarcadero\studio\20.0\lib\Win32\release\JA";D:\Component\ShellControlsOnDemos\ShellControls;"c:\program files 
  (x86)\embarcadero\studio\20.0\lib\Win32\release";C:\Users\hirata\Documents\Embarcadero\Studio\20.0\Imports;"c:\program files 
  (x86)\embarcadero\studio\20.0\Imports";C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp;"c:\program files (x86)\embarcadero\studio\20.0\include" 
  -U"c:\program files (x86)\embarcadero\studio\20.0\lib\Win32\release\JA";D:\Component\ShellControlsOnDemos\ShellControls;"c:\program files 
  (x86)\embarcadero\studio\20.0\lib\Win32\release";C:\Users\hirata\Documents\Embarcadero\Studio\20.0\Imports;"c:\program files 
  (x86)\embarcadero\studio\20.0\Imports";C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp;"c:\program files (x86)\embarcadero\studio\20.0\include" 
  -K00400000 --description:"Shell Control Property and Component Editors" -NBC:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp 
--------------<Result>------------------------------
  -NHC:\Users\Public\Documents\Embarcadero\Studio\20.0\hpp\Win32  dclshlctrls.dpk   
[dcc32 エラー] ShellCtrls.pas(840): E2010 'PWideChar' と 'array[0..259] of AnsiChar' には互換性がありません
   SetString(Result, StrRet.cStr, lStrLen(StrRet.cStr));
[dcc32 警告] ShellCtrls.pas(854): W1050 set 式で WideChar がバイト char に縮小されました。
  'SysUtils' ユニットの 'CharInSet' 関数で使用することを検討してください。
 if (Length(Result) > 1) and (Result[1] = '?') and (Result[2] in ['0'..'9']) then
    Result := StringReplace(Result,'?','',[rfReplaceAll]);
[dcc32 警告] ShellCtrls.pas(924): W1000 シンボル 'StrPas' を使用することは推奨されていません : 'Moved to the AnsiStrings unit'
   Verb := StrPas(ZVerb);
[dcc32 エラー] ShellCtrls.pas(939): E2010 'PAnsiChar' と 'PWideChar' には互換性がありません
  lpVerb := MakeIntResource(ICmd);
[dcc32 警告] ShellCtrls.pas(1489): W1000 シンボル 'Resume' を使用することは推奨されていません 
  FThread.Resume;
[dcc32 致命的エラー] RootEdit.pas(14): F2063 'ShellCtrls.pas' ユニットはコンパイルできませんでした
失敗


igy  2019-10-21 22:09:13  No: 148298

実際に、試したわけではないのですが、以前の Embarcadero Discussion Forums には、

Delphi10.1BerilnでTShellTreeViewコンポーネントをインストールするには? 
https://forums.embarcadero.com/thread.jspa?messageID=832859

がありました。参考までに・・・


Hiisan  2019-10-23 19:19:00  No: 148302

igyさん、参考URLどうも有難うございました。
参考URLの通り、試してみましたが、駄目でしたが。
[1]ShellContolsは、sourceforgeの[Download Snapshot]を任意Folderにdownloadし
[2[shellctrls.pas]をcomponentにインストールすると、ShellTreeview、ShellListViewが、パレットの[sample]にインストールされ、
  Formを作成し、ShellTreeviewとShellListViewをセットし、動作確認しました。
[3]]しかしパレット[standard]の項目が、shellctrls.pasをsetする前(Delphi10.3のインストール)に比べ変化しました(減少)。
  delphi6に近いです。正誤関係は、私では、解りません。
[4]なお、RootEdit.Pas,ShellConsts.Pas,ShellReg.Pasも、インストールしました。
以上 私では、分かりません。


HFUKUSHI  2019-10-23 20:27:16  No: 148304

なんか参照先を見たら見たことがあるようなないような…ということで呼ばれていないですが来ました。

Delphi 10.3でTShellTreeView, TShellComboBox, TShellListViewをお使いになりたいのですよね?
実は(さっき調べていて知ったのですが)これらのシェルコントロールはソースコードがDelphiに含まれています(XE2以降)。

C:\Program Files (x86)\Embarcadero\Studio\20.0\source\vcl\Vcl.Shell.ShellConsts.pas
C:\Program Files (x86)\Embarcadero\Studio\20.0\source\vcl\Vcl.Shell.ShellCtrls.pas

ただなぜかコンポーネントとして登録されておらず、そのためのパッケージを自分で作る必要があります。

1.IDEで ファイル→新規作成→パッケージ -Delphi として、新規パッケージを作成します。
2.IDE右上のプロジェクトでProject1.bplを選択して 右クリック→追加 で上記2つのpasファイルを追加します。
3.同じく右クリック→新規追加→ユニット で新しいユニットを作成します。
4.新しいユニットのinterfaceに

uses
  System.Classes,
  Vcl.Shell.ShellCtrls;

procedure Register;

を、implementationに

procedure Register;
begin
  RegisterComponents('Shell Controls', [TShellTreeView, TShellComboBox, TShellListView]);
end;

を記述します。
5.ファイル→プロジェクトに名前をつけて保存 でユニットとパッケージのプロジェクトを任意の場所、例えば
C:\Users\Public\Documents\Embarcadero\Studio\20.0\Packages
に任意の名前、例えば
ShellControlsReg.pas
ShellControls260.dproj
で保存する。
6.IDE右上のプロジェクトでShellControls200.bplを選択して 右クリック→インストール を選択する。
7.コンパイル、リンク、インストールがうまくいけば
> パッケージ C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\ShellControls260.bpl がインストールされました。
> 以下のコンポーネントが登録されました : TShellComboBox, TShellListView, TShellTreeView
というメッセージが表示され、コンポーネントパレットにShell Controlsというカテゴリと、TShellTreeView, TShellComboBox, TShellListViewが追加されます。

お試しください。

なおその前に試してみたパッケージはアンインストールしてから、上記の手順を試してください。
またコンポーネントパレットがおかしいときは 右クリック→パレットのリセット をお試しください。


HFUKUSHI  2019-10-23 20:39:02  No: 148305

あれ?実行時パッケージ vclshlctrls260.bpl ってなにものだ?


HFUKUSHI  2019-10-23 20:42:56  No: 148306

おっと失礼、
| 6.IDE右上のプロジェクトでShellControls200.bplを選択して 右クリック→インストール を選択する。

| 6.IDE右上のプロジェクトでShellControls260.bplを選択して 右クリック→インストール を選択する。
ですね(200ではなく260)。


Hiisan  2019-10-24 23:39:05  No: 148316

HFUKUSHI 様、詳細説明有難うございました。下記[A,B]の2点お教え願います。
[A]7の[リンク]の操作法について
[B]旧で作成したコンポネントパレット[Sample]の「カテゴリ」ShellTreeview,ShellListView,ShellComboBoxの削除の仕方
[C]6までは、できました。
以上 お忙しいところ恐れ入りますが、ご教授ねがいます。


HFUKUSHI  2019-10-25 10:49:43  No: 148317

最初からいきましょう。
まずHiisanさんが最初に試した(質問の) dclshlctrl.dpk  を開き、IDE右上のプロジェクトでbplを選択して、右クリック→アンインストール、続けて右クリック→クリーンアップとします。これで古いコンポーネントパッケージがアンインストールされ、bplやdcuなどの生成されたファイルが削除されます。
次にコンポーネントパレットで右クリック→パレットのリセットでパレットを初期状態に戻します。
それからNo: 148304の手順で作ったパッケージのプロジェクト(ShellControls260.dproj)を開き、右クリック→インストールとします。

> [A]7の[リンク]の操作法について


Hiisan  2019-10-25 19:08:32  No: 148318

誠にお手数をお掛けいたしますが、よろしくお願いいたします。
[1]クリーンアップまでは、できましたが、コンポーネントパレットの右では、パレットのResetの項目は、有りません。
*備考([実行][コンポネント])のコンポネントを右クリックしました。[標準、、、カスタマイズ]
[2]No:148304の[7]の「コンパイル、リンク、インストールが、うまくいけば]のリンクのことですが、何か操作するのですか
お忙しいところ恐縮です。


Hiisan  2019-10-25 22:54:13  No: 148343

HFUKUSHI様、色々ご指示有難う御座いました。
No.148318のクリーンアップ後、Delphiを再起動すると、旧コンポーネントのTShell関係は、削除されていました。
次に、No:148304の通りセットアップすると、[Shell Controls]にインストールされさした。
但し
[A]No:148304の[5]のパッケージ保存時、「vdの追加]のメッセージがでませんしたが、[Yes]でPassしました。
[B]        [7]の[以下のコンポーネントが、登録されました]表示は、出ませんでした。


Mr.XRAY  2019-10-26 22:41:47  No: 148344

HFUKUSHI さんにいいことを教えて頂きました.
折角なので,私のサイトの,シェルコンポーネントの記事に追加させて頂きました.

[ Delphi の [ source ] フォルダ内のファイルを使用する方法 ]
http://mrxray.on.coocan.jp/Delphi/Others/ShellCtrlComponent.htm#03


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加