 |
www.integro.ru ЦСИ ИНТЕГРО
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Rest
Зарегистрирован: 19.08.2009 Сообщения: 16
|
Добавлено: Пт 10 Июл 2015 18:14 Заголовок сообщения: Автоматическая запись в семантику при создании нового объекта |
|
|
Здравствуйте!
Можно ли при создании (не программно) нового объекта сразу записать в его семантику данные ?
Не нашел метода OnCreate у MapObject.
И еще вопрос - как можно сразу вызвать процедуру или метод при выделении объекта на карте ?
Спасибо! |
|
Вернуться к началу |
|
 |
Азаматов Азамат Хадисович
Зарегистрирован: 17.02.2005 Сообщения: 100 Откуда: г. Учалы, Респ. Башкортостан
|
Добавлено: Сб 11 Июл 2015 00:07 Заголовок сообщения: |
|
|
Есть событие DbMapObjects_CreateComplete
после которого можно записать семантику.
Событие после выделения
Application_SelectionChangeComplete
работает как то странно, видимо есть какая то оптимизация, иногда работает, иногда нет.
Лучше по таймеру отслеживать состояние Selection |
|
Вернуться к началу |
|
 |
Rest
Зарегистрирован: 19.08.2009 Сообщения: 16
|
Добавлено: Пн 13 Июл 2015 16:30 Заголовок сообщения: |
|
|
Да, спасибо, разобрался.
Еще небольшой вопрос - создаю программно таблицу на C#
Код: | IIngeoSemTable semTable = layer.SemTables.Add();
semTable.Name = tableName;
semTable.SemDbTableName = "Operation" + layer.ID.ToString();
IIngeoSemDbTable semDbTable = semTable.SemDbTable;
semDbTable.Fields.Add("ID", TIngeoFieldDataType.inftString, 12, TIngeoFieldFlags.inffRequired, 0);
semTable.FieldInfos.Add("ID", "ID", "", "", "");
semDbTable.Fields.Add("CreateOperator", TIngeoFieldDataType.inftString, 128, 0, 0);
semTable.FieldInfos.Add("CreateOperator", "Оператор создания объекта", "", "", "");
semDbTable.Update();
semTable.Update();
m_IngeoApp.ActiveDb.MapObjects.UpdateChanges(); |
При этом описание поля таблицы такое же, как и имя поля, т.е. не присваивается "Оператор создания объекта".
Это такой глюк или в чем может быть проблема ? |
|
Вернуться к началу |
|
 |
Азаматов Азамат Хадисович
Зарегистрирован: 17.02.2005 Сообщения: 100 Откуда: г. Учалы, Респ. Башкортостан
|
Добавлено: Ср 22 Июл 2015 21:09 Заголовок сообщения: |
|
|
ну вот работающий код
Код: |
IIngeoSemTable st = lar.SemTables.Add();
Random rnd = new Random();
st.Name = lar.Name;
st.SemDbTableName = "result_table" + rnd.Next();
st.SemDbTable.Fields.Add("SKEY", TIngeoFieldDataType.inftString, 100, 0, 0);
st.SemDbTable.Fields.Add("REASON", TIngeoFieldDataType.inftString, 255, 0, 0);
// FieldInfos.Add("KEY", "КЛЮЧ", "", "", "");
st.Update();
lar.Update();
st = lar.SemTables.Add();
//Random rnd = new Random();
st.Name = lar.Name+"_поля";
st.SemDbTableName = "result_table2" + rnd.Next();
st.SemDbTable.Fields.Add("SKEY", TIngeoFieldDataType.inftString, 100, 0, 0);
for (int ffi = 0; ffi < schema.dfields.Length; ffi++)
{
// st.SemDbTable.Fields.Add(GetFieldName(schema.sfields[ffi])+"_s", TIngeoFieldDataType.inftString, 250, 0, 0);
// st.SemDbTable.Fields.Add(GetFieldName(schema.dfields[ffi])+"_d", TIngeoFieldDataType.inftString, 250, 0, 0);
IIngeoSemDbField fld1= st.SemDbTable.Fields.Add("A" + ffi.ToString(), TIngeoFieldDataType.inftString, 255, 0, 0);
IIngeoSemDbField fld2=st.SemDbTable.Fields.Add("B" + ffi.ToString(), TIngeoFieldDataType.inftString, 255, 0, 0);
}
// st.SemDbTable.Fields.Add("REASON", TIngeoFieldDataType.inftString, 255, 0, 0);
// FieldInfos.Add("KEY", "КЛЮЧ", "", "", "");
st.Update();
for (int ffi = 0; ffi < schema.dfields.Length; ffi++)
{
st.FieldInfos[ffi * 2+2].Caption ="(Исх.) "+ GetFieldNameWOrecode(schema.sfields[ffi]);
st.FieldInfos[ffi * 2+3].Caption = "(Рез.) "+GetFieldNameWOrecode(schema.dfields[ffi]);
}
st.Update();
lar.Update();
|
|
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять приложения в этом форуме Вы можете скачивать файлы в этом форуме
|
|