MDI-формы. Как узнать номер дочерней формы или имя?
От: Cyberya  
Дата: 17.12.03 19:07
Оценка:
Надо узнать номер активной дочерней формы или имя...
Как?
Суть в чем: хочу сохранить данные из MSFlexGrid в файл.
Как я все это организовываю:

'======Объявляю свой тип переменных====

Private Type CyberyaTable
CellText As String 'содержимое ячейки
CellAlignment As Integer 'хранит значение выравнивания текста в ячейке (по левому краю, по центру, по правому краю)
CellFontName As String 'содержит имя шрифта, который будет использоваться в ячейке
CellFontType(1 To 4) As Boolean 'массив, содержащий информацию о типе шрифта (жирный, наклонный и т.д.)
CellFontSize As Integer 'хранит в себе размер шрифта
CellCeWidth As Integer 'хранит ширину ячеек
CellCeHeight As Integer 'хранит высоту ячеек
End Type

'======Объявляю переменные и массивы========
Private cTable(1 To 255, 1 To 24) As CyberyaTable 'Массив, содержащий в себе информацию о каждой ячейке в таблице
Private cTableVar As CyberyaTable 'Временная переменная для внесения информации в ячейку
Private cTableTemp As CyberyaTable 'Временная переменная для считывания информации из ячейки

'======Конец объявления переменных=======

'======Вот идет сохранение=======
'Процедура сохранения таблицы в файл
Sub TableSave()
'идет проверка на совпадение имен сохраняемого файла с существующими, если таковые есть
If Len(frmTableEditMDI.strPathTemp) = 0 Then
frmSaveAs.Show 1, frmTableEditMDI
Else
If frmTableEdit.flagOfKolvoZapuskov = True Then
Open "temp.tmp" For Binary As #2 'Создаем временный файл

'=====Вот здесь у меня затык происходит, но о нем ниже=====
Put #2, , cTable
'=====Вот здесь у меня затык происходит=====

If frmSaveAs.flagOfExictingFile = False Then
Kill frmTableEditMDI.strPathTemp 'удаляем его
End If
Close #2 'закрываем временный файл
Name "temp.tmp" As frmTableEditMDI.strPathTemp 'переименовываем временный файл в редактируемый
End If
End If
End Sub

В общем, в чем заключается проблема. Проблема в том, что при перемещении по таблице я всегда считываю данные о ячейке в переменную моего типа, а потом эту перменную вношу в массив, опять же моего типа с индексами row и col, т.е.:
cTable(frmTableEditMDI.ActiveForm.fxgTable.Row, frmTableEditMDI.ActiveForm.fxgTable.Col)

Все пока идет ок. В каждой дочерней форме есть свой массив пользовательского типа и из него данные нормально считываются и заносятся. НО! При сохранении, данные записываются в файл из массива, принадлежащего самой первой форме, а не активной. Нужно, чтобы данные хотя бы записыались во временный массив, но объявить его Public я не могу, поскольку он пользоавтельского типа. Что делать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.