﻿----------------------------
 DFMコンバータ エキスパート
----------------------------

[機能]
　Delphiのフォーム を "エディタで表示" した時に、コントロール文字列を通常の文字列にデコードしたり、
逆にコントロール文字列へエンコードします。

　昔作った DFMCONV.EXE の IDE拡張機能版です。
  (http://ht-deko.minim.ne.jp/oldjunk.html#DFMCONV)

[インストール]
　パッケージをインストールして下さい。ANSI 版 Delphi 用 と Unicode 版 Delphi 用 があります。


[使い方]
　フォームを "エディタで表示" します。

object Form1: TForm1
  Left = 290
  Top = 96
  Caption = 'Form1'
  ClientHeight = 147
  ClientWidth = 218
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 28
    Top = 56
    Width = 165
    Height = 21
    Caption = #12354#12354#12354#12356#12356#12356#12358#12358#12358
    Font.Charset = SHIFTJIS_CHARSET
    Font.Color = clWindowText
    Font.Height = -21
    Font.Name = #65325#65331' '#65328#12468#12471#12483#12463
    Font.Style = []
    ParentFont = False
  end
end

　こんな感じになりますね。

　ここで、[編集 | コントロール文字列をデコード] または、Ctrl+Alt+D を押下すると、

<!> Decoded Form <!>
object Form1: TForm1
  Left = 290
  Top = 96
  Caption = 'Form1'
  ClientHeight = 147
  ClientWidth = 218
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 28
    Top = 56
    Width = 165
    Height = 21
    Caption = 'あああいいいううう'
    Font.Charset = SHIFTJIS_CHARSET
    Font.Color = clWindowText
    Font.Height = -21
    Font.Name = 'ＭＳ Ｐゴシック'
    Font.Style = []
    ParentFont = False
  end
end

　コントロール文字列が、通常の文字列になりました。

　先頭には "<!> Decoded Form <!>" というシグネチャが付きますが、重要な意味がありますので削除しないで下さい。

　Caption = 'あああいいいううう'
　　　↓
　Caption = 'あああいいいうううえお'

　このように編集しましょう。編集が終わったら、[編集 | コントロール文字列へエンコード] または、Ctrl+Alt+E を押下すると、

object Form1: TForm1
  Left = 290
  Top = 96
  Caption = 'Form1'
  ClientHeight = 147
  ClientWidth = 218
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 28
    Top = 56
    Width = 165
    Height = 21
    Caption = #12354#12354#12354#12356#12356#12356#12358#12358#12358
    Font.Charset = SHIFTJIS_CHARSET
    Font.Color = clWindowText
    Font.Height = -21
    Font.Name = #65325#65331' '#65328#12468#12471#12483#12463
    Font.Style = []
    ParentFont = False
  end
end

 今度は "フォームとして表示" にしてみましょう。編集箇所がうまく表示できていますか？


[注意]
　デコード状態のフォームを "フォームとして表示" してしまうと、グッチャングッチャンに文字化けしてしまいます。
一旦文字化けしたフォームを "エディタで表示" にして、Ctrl+Z でアンドゥしても元には戻りません。

　それを未然に防ぐために、デコード状態ではファイルの先頭に "<!> Decoded DFM <!>" が埋め込まれます。
このシグネチャがあるため、デコード状態のフォームを "フォームとして表示" しても

　フォーム作成エラー: 不正なストリーム形式

 で止まります。一度止まるとエンコードができなくなりますが、フローティングデザイナなら "他のウィンドウ"、
埋め込みデザイナなら "他のタブ(履歴タブとか)" へフォーカスを移せば、エンコードが可能となります。


[裏技？]

　Caption = 'あああいいいううう'
　　　↓
　Caption = 'あああ'#13#10'いいい'#13#10'ううう'

のように編集する事で、TLabel のキャプション文字列を "デザイン時に改行させる事が可能" です。


[その他]
・コンバートの結果、正しくファイルを読めなくなっても責任は持ちません。必ずバックアップを取ってからコンバートして下さい。
・完全フリーウェア扱いで、配布/転載も自由とします。


[履歴]

ver 1.62 2014/07/25
・細かい修正

ver 1.61 2013/08/14
・Unicode 版のキーバインドを間違っていたので修正。
　(Ctrl+Shift+D/E になっていた)

ver 1.60 2013/08/13
・XE2～XE4 で DFMコンバータエキスパートのパッケージを開くと
　エラーが出る問題を修正。
・FMX フォームに対応。

ver 1.50 2010/10/15
・ANSI 版の不備を修正。

ver 1.40 2010/10/14
・MECSUtils に依存しないようにした。
・ソースコードを UTF-8 に変換した。

ver 1.30 2009/06/19
・ANSI版で文字に半角カナが含まれると文字化けする問題を修正。
・プロパティを空文字列で保存するコンポーネントに対応。

ver 1.20 2009/04/01
・メニューアイテムの追加位置をメニューアイテム名から判断するようにした。
　(従来は決め打ちで、左から2番目のメニューアイテムの最下部に追加していた)

ver 1.10 2009/03/26
・*.DFM 以外では実行できないようにした。

ver 1.00 2009/03/26
・初版作成。


by DEKO

http://ht-deko.minim.ne.jp/
deko@ht-deko.minim.ne.jp

