|
||
解説: 開いたファイルの履歴を保持しておくアプリケーションはよく見かけます。 文字列の入力支援としては、 ComboBox などで文字列を保持しておくことがあります。 ここでは、ちょっと変わった例として Edit に代入した文字列を履歴として利用してみます。 使用例: 例では、Edit に代入した文字列を記録して、下矢印キーを押下することで、履歴として表示させています。 コンポーネントは、 Edit と Button を適当に配置してください。 ヘッダーファイルに以下の変数を宣言しておきます。 文字列を格納する配列の要素数は、適当に設定してありますので、適宜変えてください。 int count; int hold; AnsiString str[10]; コンストラクタで count と hold を初期化します。 Button1 の OnClick は、Edit1 に代入された文字列を str 変数に記録しています。 count と hold の数を合わせておきます。 hold は次の用意にひとつ進めておきます。 OnKeyUp で下矢印キーが押下されたときの処理を記述します。 まず記録された数を超えるようであれば先頭に戻します。それ以外は現在位置からひとつ進めて文字列を表示させます。 ここでは下矢印キーだけの対応ですが、上矢印にも対応させてみてください。 //------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { count = 0; hold = 0; } //------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { str[hold] = Edit1->Text; count = hold; hold++; } //------------------------------------------------------------------- void __fastcall TForm1::Edit1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift) { if (Key == VK_DOWN) { if (count == hold - 1) count = -1; count++; Edit1->Text = str[count]; } } //------------------------------------------------------------------- |