2011-12-29 15 views
2

私は、Delphi 2010とGExperts私は「置き換えコンポーネント」の専門家をテストしてい1.35GExpertさんは、コンポーネントの専門家は、フォームファイル内のテキスト(* .DFM)

安定版リリースを使用していますに代わるものではありません交換してください。

メインフォームとセカンダリフォームを追加します。それぞれに3つのTEditがあります。

私はすべてのTEditをTRzEditに置き換えるためにコンポーネントの置換を使います。私は、プロジェクトのすべてのフォームのすべてのコンポーネントを置き換えますをチェックします。

これは機能し、すべてを置き換えます。ただし、DFMファイルには何も行われません。これらのインスタンスをどのように置き換えるのですか。

私が保存、コンパイル、または再構築すると、エラーが発生します。

置換後にフォームをテキストとして表示しようとすると、エラーが発生します。

誰かが私にこの作業をするための手順を説明できますか?

おかげ

+1

[GExpertsフォーラム](http://tech.groups.yahoo.com/group/GExpertsDiscuss/)にお尋ねください。 –

答えて

1

に古いからタッチプロパティをコピーしようとしているときにあなたがこのバグに実行している可能性があります:
提案回避策は、このプロパティのコピーを無効にするには、エキスパート設定で双方向のマッピングを行うことです新しいコンポーネントが、それはあなたがかなり簡単にテストすることができ、回避策があります。 http://tech.groups.yahoo.com/group/GExpertsDiscuss/message/3994

詳細:

limitatioがありますがDelphi 2010およびXEのn/bug Component.Touchプロパティをあるコンポーネントから別のコンポーネントに割り当て、新しいコンポーネントが壊れてしまう元のコンポーネントの を破棄した場合(これはコンポーネント/インタフェース参照のように ではありません。 自体を自動修正するか、または参照数をカウントする)。

瞬間のために、あなたは disabledプロパティマップとしてマークされTPanel.TouchからTGroupBox.Touchへの双方向交換する部品 プロパティマップを(あなたの特定のケースに置き換えされている2つのコンポーネントを使用)、割り当てることができますそれはこの問題を回避するでしょう。次のリリースの は、そのプロパティをもう割り当てようとしません。

GExperts 1.36も利用でき、この問題の回避策が含まれています。回避策はGExpertsバージョン管理システムと数週間前からテスト済みです。

2

は、私はちょうどデルファイXEとGExperts 1.35でそれを試してみましたが、それは確かに今シングルは、「選択した置換」した後もクラッシュしません。 (以前は正常に動作していました)。

ちょうどReplace Componentsその後、後の隠しメニューProject | Clear Unit Cacheを使用して、任意のSave/Compile/View As Text...修正問題をしようとする前に、完全なビルドをやっているようです。

このメニューはcnPackで表示されていると思います。私はそれを持っていないと保証することはできませんが、簡単にインストールされたパッケージの一つで、次のユニットを追加することによって、それを自分で行うことができます。

unit FGEnableHiddenMenus; 

interface 

procedure Register; 

implementation 

uses 
    Classes, Forms, Menus; 

procedure Register; 
var 
    Comp: TComponent; 
begin 
    //Make a hidden menu item visible 
    Comp := Application.MainForm.FindComponent('ProjectClearUnitCacheItem'); 
    if Comp is TMenuItem then 
    TMenuItem(Comp).Visible := True; 
end; 

end. 

出典:Brian Long's old goodies

更新: 私が持っていました私たちのメインプロジェクトのTDBEditによるTEditの代わりに、このトリックが働いていました。
しかし、3つのフォームを持つ新しいプロジェクトでは、最後のフォーム(同じ環境)の変更を一貫して書き込み/コミット/保存できませんでした。
FYI、私は4.6.1

アップデート2とし、DDevExtensions 2.5とIDEFixPackせずに試してみました:ウルリッヒによって提案され、最終的に可能な説明を見られるよう がGExpertsフォーラムで掘りに行きました。新しいプロパティTouchは、ソースが破棄されたとき(AVを引き起こす)、あるコンポーネントから別のコンポーネントにコピーされるのが好きではありません。

enter image description here

+0

私はあなたの手順に従った。今私のメニューにClear Unit Cacheアイテムがあります。私はあなたの歩みに従ったが、同じエラーが出る。 – Shane

+0

Hmmm。そうですね、私は他のマシンの新しいプロジェクトでもう一度試しましたが、それでもクラッシュします。後でもう一度別のプロジェクトを試してみます。 dfmファイルにアクセスすることについて不平を言いました。私はそれがキャッシュの問題だと思っていましたが、この他のプロジェクトで試してみたところ、幸運でした。 –

関連する問題