Текущий архив: 2006.01.08;
Скачать: CL | DM;
ВнизПередать данные в родительскую форму. Найти похожие ветки
← →
worldmen © (2005-12-01 10:45) [0]Как правильно передать в MDI из дочерней формы передать данные в родительскую форму.
(Есть таблица для справок и ее могут использовать несколько форм.)
← →
Digitman © (2005-12-01 12:13) [1]
> Как правильно
сначала определи критерий "правильности".
иначе ответ на вопрос - прямо по курсу :
РодительскаяМДИФорма.ТаблицаДляСправок.ПередатьДанные(Такие_То)
← →
worldmen © (2005-12-01 16:25) [2]Я имею ввиду передать данные не самой "РодительскаяМДИФорме".
Вызываю форму и из нее вызываю справку. А так как эту справку могут использовать другие формы, то я думаю простое присвоение значения какой-нибудь глобальной переменной - это неправильно. (Хотя мне надо передать всего лишь одно число).
← →
Digitman © (2005-12-01 16:30) [3]
> мне надо передать всего лишь одно число
вот и рассказывай, кто кому и чего там у тебя должен передать ... и как у тебя это сейчас реализовано ... и почему это, по-твоему, неправильно ...
с бубном вокруг тебя никто прыгать не станет, пытаясь угадать что же там ты не так делаешь ...
← →
worldmen © (2005-12-01 18:05) [4]> вот и рассказывай, кто кому и чего там у тебя должен передать ...
У меня пока ни как не организовано.
А организовать представляю так:
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
txt: string;
{ Public declarations }
end;
...
procedure TForm1.Button1Click(Sender: TObject);
var f: TForm2;
begin
txt:=""; //
f:= TForm2.Create(Self); // вызываем дочернюю форму
// f.ShowModal; - это не проходит так как формы в MDI приложении
end;
так как Self - это родительская форма, то в дочерней к нему можно обратится как-то так:(Sender as Owner). ...
дальше я еще не нашел как.
← →
ЮЮ © (2005-12-02 05:57) [5]f:= TForm2.Create(Self); // вызываем дочернюю форму
f.PublicСвойство := то что нужно
в TForm2.SetPublicСвойство - необходимый код.
Если св-ва нежелательно менять, а следует передовать только при создании, то в модуле второй формы пишем процедуру, видимую из модуля основной формы (или метод класса)
function OpenForm(<список параметров для открытия>): TForm2;
begin
Result := TForm2.Create(Application); // вызываем дочернюю форму
//в этом модуле нам доступны любые поля f, устанавливаем нужные значения в соответствии со списком параметров
Result.Caption := ...
...
end;
в гланой вызываем
OpenForm(<список параметров для открытия>):
Или используем для этих целей public метод класса:
class function TForm2.OpenForm(<список параметров для открытия>): TForm2;
begin
Result := TForm2.Create(Application); // вызываем дочернюю форму
...
end;
в гланой вызываем
TForm2.OpenForm(<список параметров для открытия>):
>так как Self - это родительская форма, то в дочерней к нему можно >обратится как-то так:
>(Sender as Owner). ...
Для этих целей есть св-ва ActiveMDIChild, MDIChildCount, MDIChildren
← →
Anatoly Podgoretsky © (2005-12-02 09:18) [6]Обычно делают наоборот, делают экспорт из родительской формы.
← →
worldmen © (2005-12-05 10:41) [7]> ЮЮ © (02.12.05 05:57) [5]
Насколько я понял ты приводишь пример для передачи данных из TForm1 в TForm2, а мне надо наоборот.
> f:= TForm2.Create(Self); // вызываем дочернюю форму
> f.PublicСвойство := то что нужно
>
> в TForm2.SetPublicСвойство - необходимый код.
Я вызываю TForm2 из любой формы, выбираю нужные данные и по кнопке "ОК" передаю в родительскую.
А вот этим я не понял как передавать данные:
> Для этих целей есть св-ва ActiveMDIChild, MDIChildCount,
> MDIChildren
С помощью этих процедур можно только увидеть кол-во MDIChild или закрыть их. Может я что-нибудь не нашел?
Что-то очень сложно, но я попробую.
← →
worldmen © (2005-12-07 09:53) [8]А что это:
> Anatoly Podgoretsky © (02.12.05 09:18) [6]
> Обычно делают наоборот, делают экспорт из родительской формы.
>
Пример можно?
← →
Плохиш © (2005-12-07 10:54) [9]
> worldmen © (07.12.05 09:53) [8]
За неделю можно уже было несколько сотен вариантов придумать, но драйвер head.drv корявый.
← →
evvcom © (2005-12-07 10:55) [10]
> Я вызываю TForm2 из любой формы, выбираю нужные данные и
> по кнопке "ОК" передаю в родительскую.
Несколько способов:
1. Все "родительские" формы наследуются от TMySuperParentForm, в которой есть метод принятия данных. "Дочерняя" MDI-форма вызывает этот метод.
2. Все "дочерние" формы наследуются от TMySuperChildForm, в которой есть событие для передачи данных. После создания "дочки" назначается этот обработчик.
3. В созданную дочернюю форму передается Handle формы-родителя (через конструктор или свойство). Дочернее посылает сообщение родителю с ссылкой на данные.
Список можно еще продолжать и ... Мне больше нравится 3 способ.
← →
worldmen © (2005-12-19 19:57) [11]Хорошо. Спасибо.
> Список можно еще продолжать и ... Мне больше нравится 3
> способ.
Страницы: 1 вся ветка
Текущий архив: 2006.01.08;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.01 c