Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизСсылка на контролы класса TCombobox и TEdit Найти похожие ветки
← →
новичок2012 (2012-04-17 18:25) [0]Здравствуйте! На форме есть два компонента ComboBox1 и Edit1. Мне нужно обратиться к их свойствам Visible и Text.
Поиск осуществляется в цикле вида: for I := 0 to Form1.ControlCount -1 do. Когда найден контрол, нужно проверить его свойства Text и Visible.
Но тут возникла проблема: как это сделать вне зависимости от найденного контрола и не дублируя код?
Хотелось бы что-нибудь вида:
for I := 0 to Form1.ControlCount -1 do
if (Form1.Controls[I] is TComboBox) or (Form1.Controls[I] is TEdit) then
begin
некаяПеременная := Form1.Controls[I];
if (некаяПеременная.Visible) and (Length(некаяПеременная.Text)) then
...делаем что нужно
Как это реализовать?
← →
CRLF (2012-04-17 18:33) [1]Ну Visible вообще без проблем, он паблик на уровне TControl. Для доступа к защищённому свойству Text придётся провернуть небольшой хак...
type
TControlAccess = class(TControl);
TControlAccess(Form1.Controls[I]).Text := ...
← →
Влад (2012-04-17 18:48) [2]uses typinfo;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i: tcomponent;
begin
i := edit1;
if IsPublishedProp(i,"Text") then
SetPropValue(i,"Text","asdfg");
← →
begin...end © (2012-04-17 18:50) [3]У TControl есть public-методы GetTextLen и GetTextBuf/SetTextBuf.
← →
новичок2012 (2012-04-17 19:03) [4]Спасибо, посмотрю!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.079 c