Следующее должно научить вас всем необходимым ингредиентам.
Создайте новое приложение. Я решил создать приложение VCL, но дважды проверил, что все шаги одинаковы в Firemonkey (FMX).
Добавьте несколько полей редактирования и полей со списком, например:
Name the controls eFirstName
, eLastName
, cbSex
, and btnSave
, respectively.
Then write the following OnClick
handler for the button:
procedure TForm1.btnSaveClick(Sender: TObject);
var
DataFile: TMemIniFile;
begin
DataFile := TMemIniFile.Create(TPath.Combine(TPath.GetDocumentsPath, 'PersonalData.txt'));
try
DataFile.WriteString('General', 'FirstName', eFirstName.Text);
DataFile.WriteString('General', 'LastName', eLastName.Text);
if cbSex.ItemIndex <> -1 then
DataFile.WriteString('General', 'Sex', cbSex.Items[cbSex.ItemIndex]);
DataFile.UpdateFile;
finally
DataFile.Free;
end;
end;
You need to add both IniFiles
and IOUtils
to your uses
list (at least the implementation
one).
Now, if you fill in the form,
Заполнена та же форма.
и нажмите кнопку Save
, будет создан следующий файл:
[General]
FirstName=Andreas
LastName=Rejbrand
Sex=Male
Это не видно только по скриншотам, но если вы находитесь наверху, отредактируйте и нажимайте клавишу Tab несколько раз, вы go переходите ко второму окну редактирования, к окну со списком и, наконец, к кнопке. Это потому, что я убедился, что порядок табуляции правильный. Вы должны сделать то же самое.
Также обратите внимание на подчеркнутые символы. Они называются ускорителями клавиатуры . Если, например, я нажму Alt + F , фокус переместится в поле First name
. Это достигается путем присвоения метке заголовка (текста) &First name:
и присвоения соответствующего элемента управления редактированием свойству FocusControl
метки.
В этом случае кнопка имеет вид Default
, что означает, что это кнопка , которая реагирует на клавишу Enter . Если бы это не было по умолчанию (а в вашем GUI это могло бы не иметь смысла), я бы дал ему заголовок &Save
и изменил &Sex:
на S&ex:
. Вы можете догадаться, почему?
Другие подходы
Вы также можете использовать TStringList
:
procedure TForm1.btnSaveClick(Sender: TObject);
var
DataFile: TStringList;
begin
DataFile := TStringList.Create;
try
DataFile.AddPair('FirstName', eFirstName.Text);
DataFile.AddPair('LastName', eLastName.Text);
if cbSex.ItemIndex <> -1 then
DataFile.AddPair('Sex', cbSex.Items[cbSex.ItemIndex]);
DataFile.SaveToFile(TPath.Combine(TPath.GetDocumentsPath, 'PersonalData.txt'),
TEncoding.UTF8);
finally
DataFile.Free;
end;
end;