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

Вниз

Как произвести обмен данными между MDI-окнами   Найти похожие ветки 

 
Vitalygavrilov   (2003-08-26 08:27) [0]

Уважаемые мастера!
Я уже писал врпрос как сделать обмен данными, но Ваши ответы привязаны к Вашим программам и некоторые ответы мне просто не понятны. Если возможно то подскажите как правильно сделать. Я понимаю что привязка к МДИ не важна но всетаки как правильно!

С уважением Гаврилов В.А.


 
roottim   (2003-08-26 09:00) [1]

> Как произвести обмен данными между MDI-окнами
Какой вопрос, такой и (видимо был получен) ответ.

Честно скажу, даже желания нет отвечать на безтолковые вопросы.


 
Vitalygavrilov   (2003-08-26 09:04) [2]

Списобо.


 
Sergey13   (2003-08-26 09:09) [3]

2Vitalygavrilov © (26.08.03 08:27)
>Я уже писал врпрос как сделать обмен данными,
И ты предлагаешь всем вспомнить этот вопрос? Задай снова с уточненной формулировкой и описанием задачи. Может кто и подскажет.


 
ЮЮ   (2003-08-26 09:17) [4]

Вызвать нужный метод нужного экземпляра класса, передав ему необходимые параметры, а он пусть уж разбирается (ему ближе к телу), что от него хотят


 
Zacho   (2003-08-26 09:17) [5]


> Vitalygavrilov © (26.08.03 09:04) [2]

Не обижайся. Просто твой вопрос действительно сформулирован крайне невразумительно. Формулируй вопросы точнее, конкретнее и тогда будешь получать нормальные, понятные ответы.
А по существу твоего вопроса могу сказать следущее:
Данные находяться не в окнах, а в наборах данных (TTable, TQuery). Так что и обмен надо делать между нужными наборами данных. Например, так:
procedure TForm1.Button1Click(Sender:TObject);
begin
Form2.Table2.Insert;
Form2.Table2.FieldByName("Field1").Value:=Table1.FieldByName("Field1") .Value;
...
Form2.Table2.Post;
end;

Если это не то, что тебе надо - напиши более конкретно чего же ты все-таки хочешь и что именно (и как именно) не получается.


 
asp   (2003-08-26 10:58) [6]

procedure TMyMDIForm.AddData(const DataSet: TDataSet);
var
i: Integer;
begin
Self.Query1.Append;
for i:= 0 to Self.Query1.FieldCount - 1 do
Self.Query1.Fields[i].Value:= DataSet.FieldByName(Self.Query1.Fields[i].FieldName).Value;
Self.Query1.Post
end;

procedure TMyMDIForm.SendData(const DestForm: TMyMDIForm);
begin
DestForm.AddData(Self.Query1)
end;

Ищи нужную MDI-форму и вызывай SendData.
Но конкретный ответ не получишь, по причине отсутствия конкретного вопроса.


 
Alek Aaz   (2003-08-26 11:03) [7]

Ну мне нужно что-то аналогичное.

Данные:
DataModule.Table1
Главная форма:
Form1.DBGrid1
в зависимости от значения поля DataModule.Table1.FieldByName("FizUr") нужно выбрать какую форму создавать для юридических или для физических. На этих формах валяются всякие DBEditы.
Хочу сделать так:
Создание формы:
Application.CreateForm(TForm3, Form3);
^^^^^^
Как нужно задавать это имя? Скажем для первой формы все прокатит, а для второй?

Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm3, Form3);
Если выполнить код то появятся 3 формы. Почему не ругается на имя? Ведь создаются 3 экземпляра одного класса но с ОДНИМ именем!
Непонимаю.
Где можно почитать про работу с MDI формами?

А передать данные так:
Form3.DataSource1:=DataModule.Table1.DataSource;

ИМХО. Чую работать не будет. :(

Так все-таки КАК!?!?!


 
asp   (2003-08-26 11:12) [8]

MDI-форм можешь создать сколько угодно. И с MainForm DBGrid лучше бы убрать...
Кстати, я обычно делаю:
procedure TMainForm.CreateDocumentForm(const DocID: Variant);
var
p: TDocumentForm;
begin
p:= TDocumentForm.Create(Application);
p.DocID:= DocID;
p.OpenData
end;

И имена классов здесь ни при чем. Ищи нужную форму через:
MainForm.MDIChildCount
MainForm.MDIChildren


 
NikB   (2003-08-26 11:16) [9]

> Vitalygavrilov ©

Ia delaiu tak:
1. V MDIChild, kotoroi doljen peredavat danni posilaiu Msg (Post) k MainForm.
2. MainForm proweriaet validnost MDIChild poluchatelia i esli est validen poluchatel (ani mogut bit bolshe odnovo) vipolniaet ego metod poluchenia danni.

Ia polzuiu eto v progu s neskolko raznih tipov MDIChild i obichno po tip MDIChild znaiu kuda otpravliat danni, no eto ne obiazatelno - samie danni mogut soderjat info o svoego poluchatelia, a MDIMain znaet vse.


 
NikB   (2003-08-26 11:19) [10]

>Alek Aaz
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm3, Form3);

eto ochen pohoje na:
a:=3;
a:=4;
a:=5;
pochemu hochesh rugatsa

>asp
a pochemu tolko MDIForm - eto dlia vseh objectov validno, esli s konteinerom net problem


 
asp   (2003-08-26 11:22) [11]

NikB (26.08.03 11:19) [10]> Я же не сказал, что только для MDIForm. Просто сейчас речь идет именно о них.


 
Alek Aaz   (2003-08-26 11:57) [12]

2NikB
>pochemu hochesh rugatsa
:) да не хочу я ругаться. Если то что ты сказал правда(а это очень похоже на правду) то непонятно как тогда добратся до 3.
Буду делать как asp сказал.


 
Slayer   (2003-08-26 11:57) [13]

Как я понял!!!
Создай некий список (TList например). Где будут храниться указатели на твои МДИ формы. Так же создай класс от TForm и наследуй МДИ формы от него и в этом классе опиши интерфейс который тебе нужен для обмена. И все будет нормально


 
asp   (2003-08-26 12:08) [14]

Slayer (26.08.03 11:57) [13] > Он (список) уже есть!


 
Vitalygavrilov   (2003-08-26 12:17) [15]

Я попробывал как сказали, но у меня другая проблема.
Как только я из Form4.Table1(Face.db) вставил данные в MDIChild.Edit1, то после вставки из Form5.Table1(Face.db) вставил в MDIChild.Edit2 у меня пропадает данные из MDIChild.Edit1. Как быть ума не приложу.


 
Kit   (2003-08-26 12:18) [16]

Думается что список создавать не нужно, для этого есть Application.MainForm.MDIChildren.
А интерфейс может быть, например, таким:
Наследников от TForm не создаем, а описываем сообщение MY_MESSAGE=WM_USER+... Передаваемые данные складываем в свою структуру (объект, массив...) и указатель на нее передаем в SendMessage. Остается только написать в получателе обработчик:

procedure My_MessageHandler(var Msg: TMessage); message MY_MESSAGE;

и в нем выцепить данные по указателю. imho красивее приведения Application.MainForm.MDIChildren[i] к своему типу и вызова интерфейсного метода.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.012 c
3-48400
Nikolay M.
2003-08-26 09:57
2003.09.15
MS SQL weekly backup - ?


14-48701
VictorT
2003-08-28 17:11
2003.09.15
Моё терпение и такт скоро закончится :)


1-48581
MakNik
2003-09-03 19:03
2003.09.15
StringGrid


1-48540
dez
2003-09-02 11:42
2003.09.15
Abstract Error


7-48816
NewJack
2003-07-02 11:20
2003.09.15
Чтение из буфера клавиатуры





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский