2016-05-12 5 views
1

私は1つまたは複数のファイルを選択したいので、Delphi XE7でTOpenDialogコンポーネントを使用します。しかし、それらを選択してOKをクリックすると、選択したファイルはAからZ、アルファベット順にソートされて格納されます。ファイルプロパティ、私が望まないもの。 TOpenDialogコントロール、またはTStringsタイプのいずれのスイッ​​チもオプションも表示されませんでした。TOpenDialogから選択したファイルを選択した順序で正確に取得するには?

どのようにして、選択したファイルを必要な順番で正確に保存することができますか?

答えて

3

オペレーティングシステムの基礎となるダイアログボックスは、その情報を追跡していない(またはそうであれば、それはどのような方法でも公開されません)、Delphiが提供するラッパークラスは合成しませんそれはあなたのためです。

the OnSelectionChange eventを処理して選択順序を推測できます。まず、選択したファイルを保持する独自の順序付きリストを作成します。イベントがトリガーされたら、the dialog's Files propertyを調べます。 Filesに存在しないエントリを内部リストから削除します。 Filesの項目がない場合は、リストの先頭に追加します。

+0

** Files **プロパティが自動的にソートされるという事実を考えれば、それはうまくいくと思いますか –

+0

何が影響するのですか?*あなたの*リストはアルファベット順にソートされません。あなたのリストの内容で「Files」を探し、その違いを特定します。 –

3

システムダイアログでは、アイテムが選択された順序を追跡しません。その情報を伝えるためのシステムダイアログを表示する方法がありません。それが本当に必要な場合は、2つのオプションが表示されます。

  1. 選択の順序を追跡する独自のダイアログを作成します。
  2. ユーザがファイル選択ダイアログの外に注文を指定できるようにします。
+2

@whosrdaddyいいえ、それは本当ではありません。最近選択したファイルが最初に追加されます。残りのファイルは選択順にリストされません。 –

+0

@whosrdaddy次に、dを選択します。私のために私は今d a b cを持っています。 –

+0

ここで@whosrdaddyに同意します。開いているダイアログの編集ボックスには、選択したファイルが選択した順に表示されます。しかし、この動作はFilesプロパティに変換されません:( –

関連する問題