изменить свойства элемента MDIChild из другой MDIChild

monstr76
Дата: 13.11.2007 11:20:34
Подскажите пожалуйста как изменить свойства объекта находящиеся на другой форме?
Есть Form5, нужно изменить свойство элемента Form2.DateTimePicker1.Enabled:=True;
SQLap
Дата: 13.11.2007 11:54:27
Если Form2 у Вас не объявлена как переменная ищите в Screen.FormCount по имени))
monstr76
Дата: 13.11.2007 12:13:10
не объявлена, в каком screen искать?
umbra
Дата: 13.11.2007 12:15:16
А может всетаки проще подключить тот модуль в разделе implementation и юзать другую форму сколько угодно?
monstr76
Дата: 13.11.2007 12:20:02
в form5 подключен

implementation
uses Unit1, Unit2;

выдает ошибку access violation at adress xxxxxxxx in module project1
exception class EAccessViolation
Naf
Дата: 13.11.2007 12:20:39
umbra
А может всетаки проще подключить тот модуль в разделе implementation и юзать другую форму сколько угодно?

Как ты будешь юзать, если переменной-ссылки на нее нет?
SQLap
Дата: 13.11.2007 12:27:57
если уж с переменной проблемы то геморройный вариант, но все же ))))
for I := 0 to Screen.FormCount - 1 do
  if Screen.Forms[I].Name = 'Form2' then
  TDateTimePicker(Screen.Forms[I].FindComponent('DateTimePicker1)).Enabled := True;
umbra
Дата: 13.11.2007 12:35:44
Naf
umbra
А может всетаки проще подключить тот модуль в разделе implementation и юзать другую форму сколько угодно?

Как ты будешь юзать, если переменной-ссылки на нее нет?

насколько я понимаю, если это не какой-то абстрактный класс-форма, то после определения класса следует var объект, если его нет, то согласен - никак и я не прав...
monstr76
Дата: 13.11.2007 12:52:35
SQLap
если уж с переменной проблемы то геморройный вариант, но все же ))))
for I := 0 to Screen.FormCount - 1 do
  if Screen.Forms[I].Name = 'Form2' then
  TDateTimePicker(Screen.Forms[I].FindComponent('DateTimePicker1)).Enabled := True;


действительно геморный, компонента не находит на форме.
cerberus_
Дата: 13.11.2007 12:55:19
может лучше по классу искать? или может быть несколько окон одного класса? тогда поиск по классу или по имени ничего не даст
  for i:= 0 to MDIChildCount - 1 do
    if MDIChildren[i].ClassType = TfrmReception2 then flag := i;