C++ Builder XE4, 10.2 Tokyo > 設定 > TComboBoxの保存 > ItemsとItemIndexの保存 > TMemo + TEdit
C++ Builder XE4
RAD Studio 10.2 Tokyo Update 2 (追記: 2018/01/05)
TComboBoxの設定を如何に保存、読込みするか。
TComboBoxではItemsとItemIndexを扱うことになる。
Itemsを書換えたとき、ItemIndexはクリアされる。
そのため、Itemsを先に、ItemIndexを次に読込む必要がある。
TMemoにItemsを、TEditにItemIndexを読込んで、それをTComboBoxに設定する方法は思いつく。
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE で管理されるコンポーネント
TButton *B_save;
TComboBox *CMB_profile;
TLabel *Label1;
TEdit *E_ItemIndex;
TLabel *File;
TMemo *M_Items;
TButton *B_load;
void __fastcall B_saveClick(TObject *Sender);
void __fastcall B_loadClick(TObject *Sender);
private: // ユーザー宣言
public: // ユーザー宣言
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
CMB_profile->Items->Clear();
CMB_profile->Items->Add(L"DeltaFlyer");
CMB_profile->Items->Add(L"DeltaFlyer2");
CMB_profile->Items->Add(L"Voyager");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::B_saveClick(TObject *Sender)
{
M_Items->Lines->Assign(CMB_profile->Items);
E_ItemIndex->Text = IntToStr(CMB_profile->ItemIndex);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::B_loadClick(TObject *Sender)
{
CMB_profile->Items->Assign(M_Items->Lines);
CMB_profile->ItemIndex = StrToIntDef(E_ItemIndex->Text, -1);
}
//---------------------------------------------------------------------------
備考
項目に空白が入っていても問題ない。
一つのTComboBoxに対して、二つのコンポーネントが余分に必要になる。
TComboBoxの使用しそうにないプロパティを使う方法も考えられるが、それをすると、そのプロパティを使用することになった時に対処が必要になる。
Author And Source
この問題について(C++ Builder XE4, 10.2 Tokyo > 設定 > TComboBoxの保存 > ItemsとItemIndexの保存 > TMemo + TEdit), 我々は、より多くの情報をここで見つけました https://qiita.com/7of9/items/009b1e596e0eaa246c63著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .