unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Generics.Collections;
type
TTextBoxSettings = class(TObject)
private
FFont: TFont;
FPosition: TRect;
FName: string;
public
constructor Create(AName: string = ''; AFontName: string = '');
destructor Destroy; override;
property Font: TFont read FFont;
property Position: TRect read FPosition;
Property Name: string read FName write FName;
end;
TForm1 = class(TForm)
ComboBox1: TComboBox;
FontDialog1: TFontDialog;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
FTextBoxes: TObjectList<TTextboxSettings>;
procedure RefreshCombo;
procedure UpdateLabel;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TTextBoxSettings }
constructor TTextBoxSettings.Create(AName: string = ''; AFontName: string = '');
begin
inherited Create;
FName := AName;
FFont := TFont.Create;
FFont.Name := AFontName;
end;
destructor TTextBoxSettings.Destroy;
begin
FFont.Free;
inherited Destroy;
end;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
FTextBoxes := TObjectList<TTextboxSettings>.Create;
FTextboxes.Add(TTextboxSettings.Create('Textbox1', 'Arial'));
FTextboxes.Add(TTextboxSettings.Create('Textbox2', 'Calibre'));
FTextboxes.Add(TTextboxSettings.Create('Textbox3', 'Arial'));
RefreshCombo;
UpdateLabel;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FTextBoxes.Free;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if (ComboBox1.ItemIndex >= 0) and
(ComboBox1.ItemIndex < FTextBoxes.Count) then
begin
FontDialog1.Font.Assign(FTextBoxes[ComboBox1.ItemIndex].Font);
if FontDialog1.Execute(Handle) then
FTextBoxes[ComboBox1.ItemIndex].Font.Assign(FontDialog1.Font);
end;
UpdateLabel;
end;
procedure TForm1.RefreshCombo;
var
iIndex: Integer;
begin
ComboBox1.Items.BeginUpdate;
try
ComboBox1.Items.Clear;
for iIndex := 0 to Pred(FTextBoxes.Count) do
ComboBox1.Items.Add(FTextBoxes[iIndex].Name);
ComboBox1.ItemIndex := 0;
finally
ComboBox1.Items.EndUpdate;
end;
end;
procedure TForm1.UpdateLabel;
begin
if (ComboBox1.ItemIndex >= 0) and
(ComboBox1.ItemIndex < FTextBoxes.Count) then
Label1.Caption := FTextBoxes[Combobox1.ItemIndex].Font.Name //huidige naam laten zien
else
Label1.Caption := '';
end;
end.
Bookmarks