Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Взаимодействие компонентов разных форм
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - Компоненты
iogun
Имеется форма с текстовым элементом допустим cxEdit1 в который необходимо ввести адрес места жительства. Адрес вводится в отдельной форме (содержащей текст. поля - район, город ...), эта создается динамически и уничтожается после закрытия, но пере уничтожением она должна передать строку сформированного адреса в элемент упр. той формы с которой она была вызвана. Я решил добавить в форму выбора адреса св-ва которые будут содержать хэндл вызвавшего окна и эл. управления куда нужно записать строку, и переопределить конструктор формы для инициализации этих св-в, перед уничтожением форма д. отправлять сообщение эл. управления для изменения его свойства (скажем Value или текст). Подскажите как мне зная хэндл окна и эл. управления отправить это сообщение.
Barmutik
Мммм.. всё можно сделать проще ...

Просто перед учнитожением формы обратитесь к её контролам и получите из них требуемую Вам информацию... не стоит городить огород с хендлами в этой простой ситуации...
iogun
но форма выбора адреса может вызываться из различных форма к.е. могут быть разных классов или вообще быть в др. dll. Например алресная форма м. вызваться из формы класса TForm5 или TForm7 и экземпляров таких форм может быть открыто несколько, т.е адр форма должна знать из какой формы она была вызвана и в какую ей записать значения. Как мне получить доступ к элементам управления формы (точнее к их свойствам) зная их хэндлы из другой формы
Barmutik
А зачем ей знать .. пускай у неё будет метод который её вызывает и по окончании этого метода вовзращается нужнео Вам знаечние .. а уже вызывающая сторона в кждом конкретном случае будет знать что ей делать с этим значением ..
zubr
Можно эту форму вызывать модально, переопределив метод ShowModal:
function ShowModal(var1:...; var2:...;...) : Integer;
Через глобальные переменные формы, которые инициализируются в обработчике кнопки Ok, внутри метода ShowModal передавать данные в переменные var1:...; var2:...;...
iogun
Я сделал немного по другому.
Создал новый конструктор, с доп. параметром - ссылка на элемент с др. формы в который нужно вернуть значение
CreateWithParam(aOwner:TComponent; elem: TObject)
далее перед закрытием вызванной формы проверятся не закрыли ли вызвавшую форму, и если нет то

...
if (elem is ТКлассЭлемента) then
TКлассЭлемента(elem).СвойствоЭлемента:=Значение;
...

может быть не самый лучший вариант, но зато будет работать и для MDI и для Single форм.
h-falcon
type
  TFormOfAddress = class(TForm)
    private
    ...
    public
      Addr:   String;
      ...
  end;

...

function ShowAddressForm(AOwner: TComponent; var AAddr: String): TModalResult;

var
  FormOfAddress:  TFormOfAddress;

implementation

function ShowAddressForm(AOwner: TComponent; var AAddr: String): TModalResult;
begin
  Result:=mrCancel;
  FormOfAddress:=TFormOfAddress.Create(AOwner);
  with FormOfAddress do begin
    Addr:=AAddr;
    Result:=ShowModal;
    AAddr:=Addr'
  end;
  FreeAndNil(FormOfAddress);
end;

...


Для вызова используется
  if ShowAddressForm(Self, St)=mrOK then
    //St - содержит введённый адрес
  else
    //надо как-то отреагировать на то, что User отказался вводить или какой-то
    //Exception ещё не обработан...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.