Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.01.08;
Скачать: [xml.tar.bz2];

Вниз

Передать данные в родительскую форму.   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
10-1111148607
va
2005-03-18 15:23
2006.01.08
Регистрация СОМ-сервера


2-1135149994
chelovek
2005-12-21 10:26
2006.01.08
Новый компонент.


1-1133936384
KvORubin
2005-12-07 09:19
2006.01.08
Как в МЕМО1 в первой строке


2-1135203333
kotbazilio
2005-12-22 01:15
2006.01.08
Фильтрование ввода


14-1134222044
Free0n
2005-12-10 16:40
2006.01.08
Дано такое задание:





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский