Jo. Läuft. Das mit dem Autocheck gefiel mir allerdings nicht und hab’s deshalb weggelassen. Es werden jetzt alle Items geändert wenn entweder die CheckBox selbst angeklickt wird und dabei gecheckt wird oder beim OnExit der ComboBox wenn wenn die CheckBox gecheckt ist. Der Frame schickt der Liste ein Event, und diese weiß über einen Aufzählungstypen um welche Variable es sich handelt (über die TypInfo hab ich‘s nicht (mehr) hingekriegt(*schäm*)). Das entsprechende
Gui Element hat den als Tag.
Delphi-Quellcode:
var
All: boolean;
begin
if FEnabled and Assigned(FOnPropertiesChange) then
begin
PropertiesToValue(Sender); // GuiToValue
if Sender is TCheckBox then
All := TCheckBox(Sender).Checked and (Pos('_MultiProp', TControl(Sender).Name) > 0)
else
All := false;
if not All then
begin
if Sender is TPropCheckBox then
All := TPropCheckBox(Sender).CheckBox.Checked;
if Sender is TPropEdit then
All := TPropEdit(Sender).CheckBox.Checked;
if Sender is TPropComboBox then
All := TPropComboBox(Sender).CheckBox.Checked;
end;
FOnPropertiesChange(TPropHave(TControl(Sender).Tag), All); // ValueToItem(s)
end;
end;