We help IT Professionals succeed at work.

Set the RichEdit1 with the chosen fontname and size.

Peter Kiers
Peter Kiers asked
on
Medium Priority
440 Views
Last Modified: 2012-05-07
Dear Experts,

I have a MainForm with a Richtedit on it and a dialog form called Settings
with a Combox (to choose the fontname) and an Edit with an UpDown component
(for choosing the fontsize). The chosen fontname and size will be save and
loaded from an INI-file. Now I have to tell the richedit to load the saved
fontname and size at startup of my application.  How can I do that. Who
can help me...

Greetings,

Peter Kiers



SETTINGS FORM: 
============
 
 private
    { Private declarations }
    fSettingsFile: string; 
    procedure LoadSettings;
    procedure SaveSettings;
  public
    { Public declarations }
  end;
 
var
  SettingsDlg: TSettingsDlg;
  fFontName: string;      
  fFontSize: Integer;    
 
implementation
 
uses Main;
 
{$R *.dfm}
 
procedure TSettingsDlg.FontNameChange(Sender: TObject);
begin
  fFontName := FontName.Items[FontName.ItemIndex];   
end;
(*-----------------------------------------*)
procedure TSettingsDlg.FontSizeChange(Sender: TObject);
begin
  fFontSize := StrToInt(FontSize.Text);       
end;
(*-----------------------------------------*)
procedure TSettingsDlg.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  SaveSettings;
end;
(*-----------------------------------------*)
procedure TSettingsDlg.FormCreate(Sender: TObject);
begin
  fSettingsFile := ChangeFileExt(Application.ExeName, '.ini'); 
  FontName.Items := Screen.Fonts;    
end;
(*-----------------------------------------*)
procedure TSettingsDlg.FormShow(Sender: TObject);
begin   
  LoadSettings;  
  FontName.ItemIndex := FontName.Items.IndexOf(fFontName);
  FontSize.Text := IntToStr(fFontSize);
end;
(*-----------------------------------------*)
procedure TSettingsDlg.LoadSettings;
var ini: TIniFile;
begin
  ini := TIniFile.Create(fSettingsFile);
  try
    fFontName := ini.ReadString('FONT', 'FaceName', fFontName);     
    fFontSize := ini.ReadInteger('FONT', 'PointSize', fFontSize);   
  finally
    FreeAndNil(ini);
  end;
end;
(*-----------------------------------------*)
procedure TSettingsDlg.SaveSettings;
var ini: TIniFile;
begin
  ini := TIniFile.Create(fSettingsFile);
  try
    ini.WriteString('FONT', 'FaceName', fFontName);    
    ini.WriteInteger('FONT', 'PointSize', fFontSize);    
  finally
    FreeAndNil(ini);
  end;
end;
(*-----------------------------------------*)
end.
 
MAINFORM: 
============
procedure TMainForm.Settings1Click(Sender: TObject);
var
  dlgSettingsDialog: TSettingsDlg;
  SaveSelStart, SaveSelLength: Integer;
begin
  dlgSettingsDialog := TSettingsDlg.Create(Self);
  try
    dlgSettingsDialog.ShowModal;
  finally
   if RichEdit1.Text <> '' then
    begin
    SaveSelStart := RichEdit1.SelStart;
    SaveSelLength := RichEdit1.SelLength;
    RichEdit1.SelectAll;
    RichEdit1.SelAttributes.Name := dlgSettingsDialog.FontName.Text;
    RichEdit1.SelAttributes.Size := StrToInt(dlgSettingsDialog.FontSize.Text);
    RichEdit1.SelStart := SaveSelStart;
    RichEdit1.SelLength := SaveSelLength;
  end else
  begin
    RichEdit1.Font.Name := dlgSettingsDialog.FontName.Text;
    RichEdit1.Font.Size := StrToInt(dlgSettingsDialog.FontSize.Text);
  end;
  end;
  FreeAndNil(dlgSettingsDialog);
end;

Open in new window

Comment
Watch Question

Oracle dba
CERTIFIED EXPERT
Top Expert 2009
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION
Peter KiersOperator

Author

Commented:
Wauw, i am impressed. 500 p's comming your way...

Greetings, Peter Kiers
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.