unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, DB, ADODB, ComCtrls, StdCtrls, ExtCtrls, DBCtrls;
type
TMainForm = class(TForm)
PageControl1: TPageControl;
MainMenu1: TMainMenu;
File1: TMenuItem;
Exit1: TMenuItem;
Settings1: TMenuItem;
Edit1: TMenuItem;
Insert1: TMenuItem;
NewPage1: TMenuItem;
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure NewPage1Click(Sender: TObject);
procedure Settings1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure NewTab;
end;
var
MainForm: TMainForm;
implementation
uses Settings;
{$R *.dfm}
procedure TMainForm.FormCreate(Sender: TObject);
begin
NewTab;
end;
(*---------------------------------------------------*)
procedure TMainForm.FormShow(Sender: TObject);
begin
SettingsDlg.ApplyDefaultSettings;
end;
(*---------------------------------------------------*)
procedure TMainForm.NewPage1Click(Sender: TObject);
begin
NewTab;
end;
(*---------------------------------------------------*)
procedure TMainForm.NewTab;
var
aRE: TRichEdit;
tabSheet: TTabSheet;
begin
tabSheet := TTabSheet.Create(PageControl1);
tabSheet.PageControl := PageControl1;
tabSheet.Name := 'TabSheet' + IntToStr(tabSheet.tabindex+1);
tabSheet.caption := 'Page' + '(' + IntToStr(tabSheet.tabindex+1) + ')';
aRE := TRichEdit.Create(tabSheet);
aRE.Parent := tabSheet;
aRe.Name := 'RichEdit' + IntToStr(tabSheet.tabindex+1);
aRE.Align := alClient;
aRE.ParentFont := False;
aRE.HideSelection := False;
aRE.ScrollBars := ssVertical;
aRE.Visible := True;
PageControl1.ActivePage := tabSheet;
end;
(*---------------------------------------------------*)
procedure TMainForm.Settings1Click(Sender: TObject);
begin
SettingsDlg.ShowModal;
end;
(*---------------------------------------------------*)
end.
unit Settings;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ComCtrls, ExtCtrls, Spin, IniFiles, DBCtrls;
type
TSettingsDlg = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
OKBtn: TButton;
CancelBtn: TButton;
HelpBtn: TButton;
GroupBox1: TGroupBox;
lblFontName: TLabel;
lblFontSize: TLabel;
cbFontName: TComboBox;
edtFontSize: TSpinEdit;
procedure OKBtnClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
SettingsFile: string;
procedure GetFontNames;
procedure LoadSettings;
procedure SaveSettings;
public
{ Public declarations }
procedure ApplyDefaultSettings;
end;
var
SettingsDlg: TSettingsDlg;
implementation
uses Main;
{$R *.dfm}
function EnumFontsProc(var LogFont: TLogFont; var TextMetric: TTextMetric;
FontType: Integer; Data: Pointer): Integer; stdcall;
begin
TStrings(Data).Add(LogFont.lfFaceName);
Result := 1;
end;
(*---------------------------------------------------*)
procedure TSettingsDlg.ApplyDefaultSettings;
var
z, i: Integer;
begin
with MainForm.PageControl1 do
for z := 0 to PageCount -1 do
for i := 0 to Pages[z].ControlCount - 1 do
if Pages[z].Controls[i] is TRichEdit Then
with (Pages[z].Controls[i] As TRichEdit).DefAttributes do
begin
Name := cbFontName.Items[cbFontName.ItemIndex];
Size := StrToInt(edtFontSize.Text);
end;
end;
(*---------------------------------------------------*)
procedure TSettingsDlg.FormCreate(Sender: TObject);
begin
GetFontNames;
SettingsFile := ChangeFileExt(Application.ExeName, '.ini');
LoadSettings;
end;
(*---------------------------------------------------*)
procedure TSettingsDlg.FormDestroy(Sender: TObject);
begin
SaveSettings;
end;
(*---------------------------------------------------*)
procedure TSettingsDlg.GetFontNames;
var
DC: HDC;
begin
DC := GetDC(0);
EnumFonts(DC, nil, @EnumFontsProc, Pointer(cbFontName.Items));
ReleaseDC(0, DC);
cbFontName.Sorted := True;
end;
(*---------------------------------------------------*)
procedure TSettingsDlg.LoadSettings;
var ini: TIniFile;
begin
ini := TIniFile.Create(SettingsFile);
try
cbFontName.ItemIndex := cbFontName.Items.IndexOf(ini.ReadString('Font', 'FaceName', Font.Name));
edtFontSize.Value := ini.ReadInteger('Font', 'PointSize', Font.Size);
finally
FreeAndNil(ini)
end;
end;
(*---------------------------------------------------*)
procedure TSettingsDlg.OKBtnClick(Sender: TObject);
begin
ApplyDefaultSettings;
end;
(*---------------------------------------------------*)
procedure TSettingsDlg.SaveSettings;
var ini: TIniFile;
begin
ini := TIniFile.Create(SettingsFile);
try
ini.WriteString('Font', 'FaceName', cbFontName.Items[cbFontName.ItemIndex]);
ini.WriteInteger('Font', 'PointSize', edtFontSize.Value);
finally
FreeAndNil(ini)
end;
end;
(*---------------------------------------------------*)
end.
Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.
”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.
Our community of experts have been thoroughly vetted for their expertise and industry experience.
The Distinguished Expert awards are presented to the top veteran and rookie experts to earn the most points in the top 50 topics.