unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 =
class(TForm)
cbPnl: TPanel;
mainPnl: TPanel;
infoPnl: TPanel;
addBtn: TButton;
procedure addBtnClick(Sender: TObject);
private
public
// manuell eingefügte events die ich später verwende
procedure cbChange(Sender: TObject);
procedure cbClick(Sender: TObject);
end;
var
Form1: TForm1;
cbList: TList;
const
minHeight = 120;
implementation
{$R *.dfm}
procedure TForm1.addBtnClick(Sender: TObject);
var
cb : TComboBox;
begin
// hier wird eine neue combobox erstellt mit ein paar grundeinstellungen
// in diesem fall erstelle ich die cb in ein panel
cb := TComboBox.Create(cbPnl);
cb.Parent := Self;
cb.Left := 3;
cb.Top := cbList.Count * cb.Height + 3;
cb.Style := csDropDownList;
// damit man auch was zu sehen/klicken hat, ein paar einträge erzeugen
cb.Items.Add('
CB #' + IntToStr(cbList.Count));
cb.Items.Add('
Cool #' + IntToStr(cbList.Count));
cb.ItemIndex := 0;
// hier weise ich der cb events zu, für weitere events einfach diesem beispiel folgen
cb.OnChange := cbChange;
cb.OnClick := cbClick;
// verwaltung der cb's
cbList.Add(cb);
// prototyp einer dynamischen formular größe
if ((cbList.Count + 2) * cb.Height + 3) > minHeight
then
Height := (cbList.Count + 2) * cb.Height + 3;
end;
procedure TForm1.cbChange(Sender: TObject);
begin
infoPnl.Caption := TComboBox(Sender).Text;
end;
procedure TForm1.cbClick(Sender: TObject);
begin
infoPnl.Caption := TComboBox(Sender).Text;
end;
initialization
cbList := TList.Create;
finalization
cbList.Free;
end.