Difference between revisions of "Mac Preferences Read and Write"
From Lazarus wiki
Jump to navigationJump to searchm (macOS only classification; added syntax highlighting wiki markup) |
m (→See also: added alsos) |
||
Line 132: | Line 132: | ||
== See also == | == See also == | ||
*[[Introduction to platform-sensitive development]] | *[[Introduction to platform-sensitive development]] | ||
+ | *[[Multiplatform_Programming_Guide#Proper_macOS_file_locations|Proper macOS file locations]] | ||
+ | *[[OS X Programming Tips]] | ||
[[Category:Mac OS X]] | [[Category:Mac OS X]] | ||
[[Category:Platform-sensitive development]] | [[Category:Platform-sensitive development]] |
Revision as of 07:41, 14 July 2019
This article applies to macOS only.
See also: Multiplatform Programming Guide
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
IValid: Boolean;
Pref: Integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
try
Pref := CFPreferencesGetAppIntegerValue(CFStr('Check1'),kCFPreferencesCurrentApplication,IValid);
if (Pref = 1) then
begin
CheckBox1.Checked := true;
end
else begin
CheckBox1.Checked := false;
end;
Pref := CFPreferencesGetAppIntegerValue(CFStr('Check2'),kCFPreferencesCurrentApplication,IValid);
if (Pref = 1) then
begin
CheckBox2.Checked := true;
end
else begin
CheckBox2.Checked := false;
end;
Pref := CFPreferencesGetAppIntegerValue(CFStr('Check3'),kCFPreferencesCurrentApplication,IValid);
if (Pref = 1) then
begin
CheckBox3.Checked := true;
end
else begin
CheckBox3.Checked := false;
end;
Pref := CFPreferencesGetAppIntegerValue(CFStr('Check4'),kCFPreferencesCurrentApplication,IValid);
if (Pref = 1) then
begin
CheckBox4.Checked := true;
end
else begin
CheckBox4.Checked := false;
end;
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; var CloseAction: TCloseAction);
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(nil,'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;