Форум: "Базы";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Вниз
OnChange - кто вызывает? Найти похожие ветки
← →
chir (2005-01-10 19:57) [0]Форма. Во всех полях событие OnChange вызывает одну и ту же процедуру. Как какое поле именно вызвало процедуру? Желательно вывести в label просто имя объекта.
вот такая процедура:
procedure TForm1.cxPropertiesChange(Sender: TObject);
begin
RichEdit1.Lines.Add("cxPropertiesChange");
ism := 1;
end;
О! можно и не в лэйбл, а в этотже RichEdit.
← →
Rule © (2005-01-10 20:09) [1]
procedure TForm1.cxPropertiesChange(Sender: TObject);
begin
RichEdit1.Lines.Add("cxPropertiesChange");
RichEdit1.Lines.Add(TYoutFieldType(Sender).name);
ism := 1;// а это зачем ?
end;
где TYoutFieldType - тип твоего поля ...
← →
DSKalugin © (2005-01-10 20:13) [2]procedure TForm1.cxPropertiesChange(Sender: TObject);
begin
label1.Caption:=(Sender as TEdit).Name;
RichEdit1.Lines.Add(label1.Caption);
ism := 1;
end;
← →
chir (2005-01-10 20:18) [3]procedure TForm1.cxPropertiesChange(Sender: TObject);
begin
RichEdit1.Lines.Add("cxPropertiesChange");
RichEdit1.Lines.Add("sender: "+Sender.ClassName); // Получил имя класса... уже лучше конечно, но этого очень мало...
ism := 1; // ради этого все и затевалось.
end;
В общем: форма личных данных сотрудников. Состоит из разных объектов (cxTextEdit, cxPopupEdit и т.д.). Слева список всех сотрудников. данные текущего сотрудника выводятся в форме. Если что-то в форме изменилось (срабатывает OnChange), то устанавливается ism:=1. В дальнейшем (например, при переходе на другого сотрудника) в зависимости от ism формируется запрос UPDATE...
Проблема: сейчас почему-то даже просто при просмотре данных где-то срабатывает OnChange. Не могу найти где.
ps. чтобы не срабатывал OnChange при выборе другого сотрудника использую такую технологию:
cxTE_surname.Properties.OnChange := nil;
cxTE_surname.Text := DM.ADOQ2.FieldValues["surname"];
cxTE_surname.Properties.OnChange := cxPropertiesChange;
=============
TYoutFieldType(Sender).name - можно объяснить что и как тут?...
← →
DSKalugin © (2005-01-10 20:36) [4]создай для каждого компонента свой личный обработчик OnChange вместо общего. Тогда проблема будет решена.
Я в примере исходил из того, что меняется содержимое компонента TEdit
TYoutFieldType - тип твоего поля ... как уже сказали
т.е Sender.ClassName имя класса я так понимаю это
TcxTextEdit, TcxPopupEdit и т.д.
← →
chir (2005-01-10 20:44) [5]эх... я только только избавился от индивидуальных обработчиков... не возврат к куче обработчиков - не выход...
← →
Desdechado © (2005-01-10 20:53) [6]если поля прошиты в коде, то можешь просто сравнивать
if( Sender = fld ) then ...
← →
sniknik © (2005-01-10 21:01) [7]TControl(Sender).Name
← →
chir (2005-01-10 21:19) [8]TControl(Sender).Name - отлично работает!
спасибо!!! :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.034 c