« 2011年11月 | トップページ | 2014年9月 »

TOpenDialogのInitialDir

「ユーザーが設定したフォルダーリストからファイルを開く」という機能を実装していましたが、XPユーザーから一度ファイルを選択してしまうと、次回からはそのフォルダーしか開かないと報告がありました。 シンプルなテストプログラムを作成して確認したところ、Windows 7 と Windows XP では挙動が違っていました。

20120420104642

procedure TForm1.FormCreate(Sender: TObject);

  procedure MakeSampleDir;
  const
    ADir = 'c:\aaa';
    BDir = 'c:\bbb';
  var
    SL: TStringList;
  begin
    ForceDirectories(ADir);
    ForceDirectories(BDir);

    // ファイルの作成
    SL := TStringList.Create;
    try
      SL.SaveToFile(ADir + '\' + 'test.txt');
      SL.SaveToFile(BDir + '\' + 'test.txt');
    finally
      FreeAndNil(SL);
    end;

    Edit1.Text := ADir;
    Edit2.Text := BDir;
  end;

begin
  MakeSampleDir;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  OpenDialog1.InitialDir := Edit1.Text;
  OpenDialog1.Execute;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  OpenDialog1.InitialDir := Edit2.Text;
  OpenDialog1.Execute;
end;


1.Button1 を押して c:\aaa\test.txt を選択します。
2.c:\bbb.test.txt を開くために Button2 を押します。

問題点: Button2を押しても XP では c:\aaa が表示されます。

Windows 7 の場合
Button1 を押して、 c:\aaa\test.txt を選択します。

1_3

次に Button2 を押します。期待通り、c:\bbbフォルダが表示されています。ファイル名には前回選択したものがフルパスで表記されています。

2_2



Windows XPの場合
同じくButton1 を押して、 c:\aaa\test.txt を選択します。

3_2

次に Button2 を押します。OpenDialog1.InitialDirの設定にかかわらず、先ほどオープンした c:\aaa\が開かれています。

4_2



で、対策はこちらです。次のようにファイル名をクリアすることにより、期待通りに動作するようになりました。 わかってしまえば、どうしてファイル名をクリアしていなかったんだと思うのですけど(^-^)
procedure TForm1.Button1Click(Sender: TObject);
begin
  OpenDialog1.FileName := ''; // ファイル名もクリアする
  OpenDialog1.InitialDir := Edit1.Text;
  OpenDialog1.Execute;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  OpenDialog1.FileName := ''; // ファイル名もクリアする
  OpenDialog1.InitialDir := Edit2.Text;
  OpenDialog1.Execute;
end;

|

MacBook Air を買いました。

もう1か月ほど前になるのですが、MacBook Air 11インチモデル(2011mid) を買いました。BootCampでWindows7(64bit)をインストールして、VMware Fusion4 で使っています。

XcodeでFireMonkeyが使える環境を構築する際には苦労しました。FireMonkey-iOS.dmgは、Xcode 3.2.5 ~ 4.2までしか対応していなかったにもかかわらず、私のMacには、その時Xcode 4.3.1を既にインストールしていたからです。

まずXcodeをアンインストールしなきゃいけないけど、初Macの私にはよくわからず。しかも、このバージョンのXcodeは、山本さんのブログにあるコマンドでは削除できませんでした。Xcodeのインストール先が大きく変わったことが原因のようです。結局、ディレクトリが変わったなら上書きされることもないし問題ないかも??という浅はかな考えの元、アンインストールすることを諦め、iOS Dev CenterからXcode4.2.1をダウンロード、インストールし、無事使えるようになりました。

後日、Embarcadero Blogs の Team Japanブログで、
Delphi XE2 Update 4 : iOS 5.1 向けの開発環境について
という高橋さんの記事を見つけ、私の環境でも問題がないことを確認しました。


ゆめとちぼーとげんじつと
IT社長で大家さん 山本@ドリームハイブが思うこと
Mac OS X Lion 上の Xcode をアンインストールする方法



PAServer経由でのアプリケーションの実行も何度か試してみました。ターミナルで入力してPAServerを起動させて・・・そうそうターミナルでタイプしていると、なぜかTurboLinux+Kylixを思い出してしまいました。あかん、あかん(^-^) 適当なサンプルを作ってWindows7でコンパイルし、実行するとMac上で見慣れたアイコンと共にフォームが現れます。Macアプリの作法を勉強しないといけませんが、自分で使うソフトなら結構簡単に作れそうな気になりました。

|

ようやく・・・。

昨年秋以降、本来の業務を離れてずっとDelphiと共に仕事をしていました。私が約16年前に作った社内向け業務アプリを、現在の環境に適合するように作り直せという会社からのお達しがあったからです。(素人一人に任せるなんてすごい会社?でも情報に関する専門の部署もありますし、顧客管理や財務関係などは、大きなソフトウェア会社に外注して作成していますけどね)

「半年もプログラムをしていれば、ブログのDelphiネタも満載かー」とか密かに期待していたのですが、唯々プログラム作成に追われる毎日で、ネタは一つもできませんでした。仕事の方は、先日ようやく配布が終了し、現在100台以上のPCで無事運用されています。よかったー。

この半年間、Delphi XE2 Proを使ってきて思うのは、この製品はとても安定しているので、安心して使えるということですね。(Delphi8,2005,2006の悪夢を忘れなさすぎ?)不審な挙動もほとんどなく、プログラムのミスでいろいろなエラーが発生した時でさえフリーズすることは一度もなかったのではないかと思います。ただ、大きなプロジェクトでは、CTRL+左クリックで定義が探せないということが頻繁に発生し、面倒でしたけど。

・・・あくまで個人の感想です(笑)

|

« 2011年11月 | トップページ | 2014年9月 »