Если вы используете свойство ClassName...
with Sender as TForm do Label1.Caption := copy(ClassName,2,length(ClassName)-1); |
Это даст желаемый эффект без дополнительного кодирования в методе формы OnCreate.
'Sender' в вашем случае может и не быть формой, и тогда ваша программа получит исключительную ситуацию с ошибкой неверного приведения типов. Я не уверен, что при описанных выше условиях Sender может быть только формой.
Во всяком случае, вы можете защититься от такой ситуации, сделав предварительную проверку соответствия типов, и приведя Sender к класу вашей формы, как показано ниже:
If Sender is TForm then Label1.Caption := (Sender as TForm).Name ; |
Выполнить этот код можно так:
Label1.Caption := Form1.Name ; |
Но здесь появляется масса других проблем. Мне писали гневные письма о том, что свойство у Form не доступно во время выполнения приложения, что, вероятнее всего связано с тем, что класс формы еще не был проинициализирован. Если бы читали документацию по Delphi более тщательно, вы бы обратили внимание на тот момент, что установка свойства в Инспекторе Объектов (Object Inspector) НЕ означает его автоматическую установку во время выполнения программы. В ответ на ЭТУ ситуацию вам нужно будет установить это свойство явно (в нашем случае .Name) в методе формы .Create. Следующий пример БУДЕТ работать:
procedure TForm1.Create( Sender : TObject ) ; begin Form1.Name := 'Form1' ; end ; procedure TForm1.Button1Click( Sender : TObject ) ; begin Label1.Caption := Form1.Name ; end ; |
var TC: TComponent; begin TC := label1.Owner; label1.Caption := TC.ClassName; end; |
К своей форме я добавил кнопку, и в обработчике события поместил следующую строчку:
name := 'AName'; |
Затем, после щелчка на кнопке, я мог бы щелкнуть на форме, и заголовок метки изменился бы на 'AName'. Мое решение основывается на определении свойства Name в обработчике события создания формы. Т.е., если бы вы хотели назвать форму MyForm, то в обработчике события OnCreate вы должны написать следующее:
name := 'MyForm'; |
Я надеюсь, это поможет вам решить проблему. [001757]