Topic: Групповой Enable/Disable для полей ввода

Необходимо изменять свойство Enable/Disable для всех полей ввода на форме (т.е. для Edit, Memo, Combobox и т.д.), но для всех Label не изменять это свойство, чтобы они (Labels) не становились серыми.
Вопрос - можно ли вообще менять это свойство у всех элементов на форме групповым образом, не указывая имя каждого элемента?
И если можно, то можно ли менять это свойство у конкретного типа элементов (например, только у всех Edit)?

Re: Групповой Enable/Disable для полей ввода

Hello Mikhail,
Посмотрите пример и на скриншот (mikhail panel.jpg).
Если вы поместите все свои поля на панель, вам нужно только включить / отключить панель.
Я использовал другой цвет для панели, чтобы вы могли ее легко увидеть, но обычно это тот же цвет, что и фон формы (чтобы сделать его невидимым).
Надеюсь, это имеет смысл (с помощью Google Translator).
Regards,
Derek.

Post's attachments

Attachment icon mikhail.zip 505.47 kb, 280 downloads since 2018-07-20 

Re: Групповой Enable/Disable для полей ввода

Можно так

// процедура, которая меняет свойство Enabled для Edit, Memo, ComboBox
procedure SetControls(Form: TAForm; Status: boolean);
var
    i, c: integer;
begin
    c := Form.ComponentCount-1;
    for i := 0 to c do
    begin
        if (Form.Components[i] is TdbEdit) then TdbEdit(Form.Components[i]).Enabled := Status;
        if (Form.Components[i] is TdbMemo) then TdbMemo(Form.Components[i]).Enabled := Status;
        if (Form.Components[i] is TdbComboBox) then TdbMemo(Form.Components[i]).Enabled := Status;
    end;
end;


// блокируем комопненты на форму frmAbonent
procedure Form1_Button7_OnClick (Sender: TObject; var Cancel: boolean);
begin
    SetControls(frmAbonent, True);
end;

// разблокираем комопненты на форму frmAbonent
procedure Form1_Button6_OnClick (Sender: TObject; var Cancel: boolean);
begin
    SetControls(frmAbonent, False);
end;
Dmitry.

Re: Групповой Enable/Disable для полей ввода

Спасибо!