Difference between revisions of "Mac Preferences Read and Write"
From Free Pascal wiki
Jump to navigationJump to searchm (Rationalised macOS categories) |
(Added template, categories moved to template) |
||
Line 1: | Line 1: | ||
{{Platform only|macOS}} | {{Platform only|macOS}} | ||
− | {{ | + | {{Mac Preferences Read and Write}} |
For those who want to read and write preferences for a macOS application, this can be done using the following methods: | For those who want to read and write preferences for a macOS application, this can be done using the following methods: | ||
Line 136: | Line 136: | ||
*[[Multiplatform_Programming_Guide#Proper_macOS_file_locations|Proper macOS file locations]] | *[[Multiplatform_Programming_Guide#Proper_macOS_file_locations|Proper macOS file locations]] | ||
*[[OS X Programming Tips]] | *[[OS X Programming Tips]] | ||
− | |||
− | |||
− | |||
− |
Revision as of 19:02, 16 December 2019
This article applies to macOS only.
See also: Multiplatform Programming Guide
│
English (en) │
For those who want to read and write preferences for a macOS application, this can be done using the following methods:
CODE FOR READING PREFERENCES |
---|
uses MacOSAll, CFPreferences;
var
IsValid: Boolean; // On return indicates if key exists and has valid data
Pref: Integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
try
Pref := CFPreferencesGetAppIntegerValue(CFStr('Check1'),kCFPreferencesCurrentApplication,IsValid);
if (Pref = 1) then
CheckBox1.Checked := true
else
CheckBox1.Checked := false;
Pref := CFPreferencesGetAppIntegerValue(CFStr('Check2'),kCFPreferencesCurrentApplication,IsValid);
if (Pref = 1) then
CheckBox2.Checked := true
else
CheckBox2.Checked := false;
Pref := CFPreferencesGetAppIntegerValue(CFStr('Check3'),kCFPreferencesCurrentApplication,IsValid);
if (Pref = 1) then
CheckBox3.Checked := true
else
CheckBox3.Checked := false;
Pref := CFPreferencesGetAppIntegerValue(CFStr('Check4'),kCFPreferencesCurrentApplication,IsValid);
if (Pref = 1) then
CheckBox4.Checked := true
else
CheckBox4.Checked := false;
except
on E : Exception do
ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
end;
end;
CODE FOR WRITING PREFERENCES |
---|
uses MacOSAll, CFPreferences;
var
ItemName: CFStringRef;
ItemVal: CFPropertyListRef;
procedure TForm1.FormClose(Sender: TObject);
begin
try
if (CheckBox1.Checked) then
begin
ItemName := CFStr('Check1');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'1',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end
else
begin
ItemName := CFStr('Check1');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'0',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end;
if (CheckBox2.Checked) then
begin
ItemName := CFStr('Check2');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'1',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end
else
begin
ItemName := CFStr('Check2');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'0',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end;
if (CheckBox3.Checked) then
begin
ItemName := CFStr('Check3');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'1',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end
else
begin
ItemName := CFStr('Check3');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'0',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end;
if (CheckBox4.Checked) then
begin
ItemName := CFStr('Check4');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'1',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end
else
begin
ItemName := CFStr('Check4');
ItemVal := CFStringCreateWithPascalString(kCFAllocatorDefault,'0',kCFStringEncodingUTF8);
CFPreferencesSetAppValue(ItemName,ItemVal,kCFPreferencesCurrentApplication);
end;
CFPreferencesAppSynchronize(kCFPreferencesCurrentApplication);
except
on E : Exception do
ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
end;