![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как произвести обмен данными между MDI-окнами [D5, Paradox]
vita+ © (2003-08-11 12:04:00)
Уважаемые мастера!
Как произвести обмен данными между дочерними окнами MDI. Слезно, очень нужно.
MMF (2003-08-12 14:42:00) [1]
Если нужнен подбор (примерно как в 1С), то можно сделать так:
//МДИ форма, которую правит пользователь
Procedure TFormOwner.BtnSelectFIOClick(sender: TObject);
begin
if Not(Assigned(fFIODict)) then fFIODict:=TfFIODict.Create(application);
fFIODict.OwnerHandle:=Handle;
fFIODict.Show;
end;
Procedure TFormOwner.SX_USER_SELECT(var msg: TMessage); message SX_USER_SELECT;
begin
if msg.WParam=glcFIOdict then
EditFIO.Text:=globalStringData;
//форма подбора
Procedure TfFIODict.FormCreate(sender...);
begin
OwnerHandle:=nil;
DictionaryID:=glcFIOdict;
Procedure TfFIODict.GridDblClick(..);
begin
if OwnerHandle<>nil then
begin
globalStringData:=DS.FieldByName("FIO").AsString;
PostMessage(OwnerHandle, SX_USER_SELECT, DictionaryID, 0);
Close;
Vitalygavrilov (2003-08-12 13:30:00) [2]
Ну а если мне надо вставить в Edit по типу календаря, нажал на кнопку и получил в Edit выбранную мною фамилию/
С уважением Гаврилов В.А.
Danilka (2003-08-12 08:00:00) [3]
Общие для нескольких форм датасеты эффективнее держать в одном модуле, вобщем-то для этого TDataModule и придумали.
Там-же и процедуры обмена данными между датасетами, и еще много чего.
Zacho (2003-08-12 08:00:00) [4]
Не совсем понятно, в чем конкретно проблема. Причем здесь вообще окна ? Данные "находятся" не в окнах, а в компонентах-потомках TDataSet (TTable, TQuery и т.д.) Вот с ними и надо работать.
Предположим, что есть две формы: Tfm1 и Tfm1 (а MDI они или нет, нет никакой разницы) На формах есть компоненты TTable: на fm1 - tbl1, на fm2 - tbl2. По клику на кнопку на fm1 надо вставить текущую запись в из tbl1 в tbl2. Естественно, предпологается, что вторая форма создана и в переменной fm2 находиться указатель на нее. Тогда пишем примерно такой код:
procedure Tfm1.Button1Click(Sender:TObject);
begin
fm2.tbl2.Insert;
fm2.tbl2.Fields[0].Value:=tbl1.Fields[0].Value;
...
fm2.tbl2.Post;
end;
Danilka (2003-08-12 07:56:00) [5]
Vitalygavrilov © (12.08.03 07:42)
Посмотри в сторону TDataModule.
"File" -> "New..." -> "Data Module" -> F1
:))
ЮЮ (2003-08-12 07:53:00) [6]
А если открыто три окна?
А если структуры таблиц не совпадают?
Vitalygavrilov (2003-08-12 07:42:00) [7]
Уважаемые Масстера!
Как сделать чтобы в моей программе между дочерними окнами в приложении MDI осуществить обмен данными между таблицами. Из одной таблицы одного дочернего окна направить (вставить) данные по ячеечно (принудительно, по моему клику) в другое дочернее окно и соответственно в другую таблицу, но не в материнскую форму.
С уважением Гаврилов В.А.
Lamer_of_Delphi (2003-08-11 16:23:00) [8]
unit unit2; //Код дочернего окна
...
procedure TChildForm.Button6Click(Sender: TObject);
begin
MainForm.Label1.Caption:=DataSource1.DataSet.Fields[1].Value;
...
end;
...
Imho :)
vita+ (2003-08-11 14:55:00) [9]
В талице перечислены фамилии, должность и их вставить в Label или Table другого окна.
Zacho (2003-08-11 12:09:00) [10]
Какими данными ? Подробнее, плиз.