![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Операция := [D7, XP]
Alex7 © (2006-03-20 16:45:00)Уважаемые мастера!
В приведенной процедуре хочу
занести в "z" имя формы, где находится
компонент, получивший фокус.
procedure A (Sender: TObject);
Var x: Tobject;
z: TComponentName; // или String;
begin
x:= TForm(Sender);
While not (x is TForm) Do x:= TForm(x).Parent;
z := TForm(x).Name;
end;
TForm(x).Name - получается верное,
а в "z" заносится ''.
Помогите разобраться. Спасибо.
Alex7 (2006-03-20 17:43:00) [1]> Оптимизатор в действии
Понятно. Спасибо.
Плохиш (2006-03-20 17:29:00) [2]
> Почему ?
Оптимизатор в действии, если "z" дальше нигде не используется, то и присваивать ей значения незачем.
Alex7 (2006-03-20 17:14:00) [3]> Что выводиться в сообщении?
В ShowMessage(z) все правильно,
а в редакторе кода и в окне наблюдений
z = ''. Почему ? Не понимаю.
MBo (2006-03-20 17:00:00) [4]>Но почему все-таки в "z" не заносится?
Можно посмотреть на реальный код, из которого видно, что действительно "не заносится"?
Alex7 (2006-03-20 16:59:00) [5]Спасибо. Так, конечно, проще. Не сообразил.
Но почему все-таки в "z" не заносится?
Плохиш (2006-03-20 16:57:00) [6]
> z := TForm(x).Name;
ShowMessage(z);
Что выводиться в сообщении?
icWasya (2006-03-20 16:56:00) [7]более правильно
Function ParentFormName (Sender: TObject):String;
begin
Result:='';
if not (Sender) is TControl then Exit;
While Sender<>Nil do begin
if (Sender is TForm) then begin
Result:=TForm(Sender).Name;
Exit;
end;
Sender :=TControl(Sender).Parent;
end;
end;
MBo (2006-03-20 16:54:00) [8]С GetParentForm не проще будет?
И как далее используется z?
Сергей М. (2006-03-20 16:49:00) [9]Почему Parent, а не Owner ?