У меня есть форма, отображающая данные из базы данных, она имеет несколько кнопок и несколько панелей. Панели содержат различные компоненты, в частности, TEdits, TComboBox, TDateTimePicker, TCheckBox, TListBox и TstringGrid.
Когда форма открыта таким образом, что пользователь может просматривать, но не редактировать данные, в настоящее время я отключаю все компоненты, кроме кнопок, использующих
for i := 0 to FrmAddNewMember.ComponentCount-1 do
if FrmAddNewMember.Components[i] is TPanel then
(FrmAddNewMember.Components[ i ] as TPanel).enabled := false;
Это работает нормально, за исключением того, что теперь я хотел бы, чтобы пользователь мог копировать в буфер обмена текст в TEdits, дату в TDateTimePicker, выбранный элемент в TComboBox и т. Д. И т. Д., Но при этом не изменять его.
Я изменил код на следующий, который устанавливает TEdits только для чтения. Это делает то, что я хочу для TEdits, но другие типы элементов управления не имеют свойства только для чтения, поэтому я отключил их, как и раньше.
for i := 0 to FrmAddNewMember.ComponentCount-1 do
if not (FrmAddNewMember.Components[i] is TButton) then //(keep buttons working)
case FrmAddNewMember.Components[i] of
TEdit: (FrmAddNewMember.Components[ i ] as TEdit).readonly := true; //allows copying but not editing
TComboBox: (FrmAddNewMember.Components[ i ] as TComboBox).enabled := false; //no read only propert?
TDateTimePicker: (FrmAddNewMember.Components[ i ] as TDateTimePicker).enabled := false; //ditto
TCheckBox: (FrmAddNewMember.Components[ i ] as TCheckBox).enabled := false;
TListBox: (FrmAddNewMember.Components[ i ] as TListBox).enabled := false;
TstringGrid: (FrmAddNewMember.Components[ i ] as TstringGrid).enabled := false;
end;
Есть ли способ сделать другие элементы управления недоступными для редактирования, но при этом разрешить копирование их содержимого в буфер обмена?
PS
Я посмотрел на
Disable-редактирует-на-DataGridView-но все еще позволяют в обмен на выделение к копии и вставки
и
макияж все-управления-на-а-форма-только для чтения-на-один раз-без одной LinkButton
и искал в другом месте. Может быть, это нельзя сделать просто.