Difference between revisions of "Mac Preferences Read and Write"
From Lazarus wiki
Jump to navigationJump to searchJwdietrich (talk | contribs) |
m (macOS only classification; added syntax highlighting wiki markup) |
||
Line 1: | Line 1: | ||
− | For those who want to read and write preferences for | + | {{Platform only|macOS|macOS|macOS}} |
+ | |||
+ | For those who want to read and write preferences for a macOS application, this can be done using the following methods: | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 5: | Line 7: | ||
! CODE FOR READING PREFERENCES | ! CODE FOR READING PREFERENCES | ||
|- | |- | ||
− | | | + | |} |
+ | |||
+ | <syntaxhighlight lang="pascal"> | ||
uses MacOSAll, CFPreferences; | uses MacOSAll, CFPreferences; | ||
Line 52: | Line 56: | ||
end; | end; | ||
end; | end; | ||
− | + | </syntaxhighlight> | |
Line 60: | Line 64: | ||
! CODE FOR WRITING PREFERENCES | ! CODE FOR WRITING PREFERENCES | ||
|- | |- | ||
− | | | + | |} |
+ | |||
+ | <syntaxhighlight lang="pascal"> | ||
uses MacOSAll, CFPreferences; | uses MacOSAll, CFPreferences; | ||
Line 119: | Line 125: | ||
ShowMessage(E.ClassName+' error raised, with message : '+E.Message); | ShowMessage(E.ClassName+' error raised, with message : '+E.Message); | ||
end; | end; | ||
+ | </syntaxhighlight> | ||
[[File:Prefs1.png]] | [[File:Prefs1.png]] | ||
− | + | ||
== See also == | == See also == |
Revision as of 04:25, 3 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;