Одна процедура для всех проверок как?

В моей форме есть 30 или более TCheckbox с TNumberBox перед ними. Каждый TCheckbox и TNumberBox подключены, так как имя CheckBox1 - C1, а NumberBox - C1E, а Checkbox2 - C2, а NumberBox2 - C2E и т. Д. Если C1 проверен, C1E будет включен. Я не хочу использовать разные события OnClick для каждого Tcheckbox. Я просто хочу использовать одну процедуру для всех событий TCheckbox onclick. Как я могу это сделать ?

delphi,firemonkey,delphi-10.2-tokyo,

0

Ответов: 2


Вы можете назначить следующий OnClickобработчик (или нечто подобное) каждому из этих флажков:

procedure TYourFormName.CheckBoxClick(Sender: TObject);
var
  Assoc: TControl;
  ChkName: string;
begin
  ChkName := TCheckBox(Sender).Name;                // e.g. 'C1', 'C2', ...
  Assoc := TControl(FindComponent(ChkName + 'E'));  // e.g. 'C1E', 'C2E', ...
  if Assigned(Assoc) then
    Assoc.Enabled := TCheckBox(Sender).Checked;
end;

1

Если вы создали эти флажки и числовые ящики во время разработки, вы можете использовать прямые привязки. Откройте LiveBindings Designer и найдите свои компоненты. Добавьте видимое свойство в свои числовые ящики (щелкнув тройные точки внизу элемента). Затем подключите свойство IsChecked этого флажка с свойством Visible в цифровом ящике (нажмите и перетащите).

Дельфы, FireMonkey, Дельфы-10,2-Токио,
Похожие вопросы