Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
khSerg
Зарегистрирован: 16.07.2008 Сообщения: 19
|
Добавлено: Ср Дек 03, 2008 11:30 am Заголовок сообщения: Передача значений глобальной переменной |
|
|
Господа подскажите на такой вопрос:
Необходимо предать из клиента в программу MBX значения (имена таблиц)
и чтобы после этого программа начала производить дальнейшие действия???
Как передавать значения я вкурсе, а вот как это сделать чтобы после передачи программа начала функсионировать - это для меня вопрос!
Скорее всего надо использовать что-то вроде RemoteMsgHandler...
Если можно с примерами :)) |
|
Вернуться к началу |
|
|
Vovik
Зарегистрирован: 04.05.2008 Сообщения: 57
|
Добавлено: Ср Дек 03, 2008 11:56 am Заголовок сообщения: Re: Передача значений глобальной переменной |
|
|
Я делаю так
Это фрагмент кода MB (утилиты к примеру - Ввод колодцев.MBX)
'переменные уровня утилиты
Dim shet As integer
Dim NKol As String
Dim Dt As String
Dim Mat As String
' автоматом вызывается при передачи данных из VB смотри фрагмент кода ниже.
Sub RemoteMsgHandler()
Dim sMsg As String
sMsg = CommandInfo(CMD_INFO_MSG)
Do case shet
case 0
NKol = sMsg
shet =1
Exit Sub
case 1
Dt = Val(sMsg)
shet =2
Exit Sub
case 2
Mat = sMsg
shet =0
Exit Sub
end case
End Sub
Фрагмент кода VB
Private Sub Command1_Click() 'Ввод
Text2.LinkTopic = "MapInfo|Ввод колодцев.MBX"
Text2.LinkMode = 2
Text2.LinkExecute Text1(0).Text '№ колодца
Text2.LinkExecute Text1(1).Text 'D_трубы
Text2.LinkExecute Text1(2).Text 'Материал
Text2.LinkMode = 0
Unload Me
End
End Sub
Я думаю коментариии излишни |
|
Вернуться к началу |
|
|
khSerg
Зарегистрирован: 16.07.2008 Сообщения: 19
|
Добавлено: Ср Дек 03, 2008 12:33 pm Заголовок сообщения: |
|
|
Спасибо за пример!
А что такое Text1(0) - вот этот 0, потому что так работать не хочет
и если написать так Text2.LinkExecute Text1.Text - то хоть компилит
И еще, а то делать если я пишу в C# :))? там LinkTopic и других свойств у textbox нет!!! нда |
|
Вернуться к началу |
|
|
Vovik
Зарегистрирован: 04.05.2008 Сообщения: 57
|
Добавлено: Чт Дек 04, 2008 5:16 am Заголовок сообщения: |
|
|
Text1 -это имя , а 0 это индекс контрола TextBox VB.
Я редко даю "свои" имена контролам т.к меня устраивают имена который VB дает по умолчанию |
|
Вернуться к началу |
|
|
khSerg
Зарегистрирован: 16.07.2008 Сообщения: 19
|
Добавлено: Чт Дек 04, 2008 8:38 am Заголовок сообщения: |
|
|
ААА ну не знал что в VB есть у textbox свои индексы :)
но почемуто с ними работать не хочет, но это и не важно...
сейчас думаю как попытатся вашу конструкцию в C# |
|
Вернуться к началу |
|
|
khSerg
Зарегистрирован: 16.07.2008 Сообщения: 19
|
Добавлено: Чт Дек 04, 2008 12:26 pm Заголовок сообщения: |
|
|
Кому интерсно, получилось вот такое безобразие, но работает:
public object MapInfo;
//DDE
this.MapInfo = RuntimeHelpers.GetObjectValue(Interaction.CreateObject("MapInfo.Application", ""));
Excel._Application app = new Excel.Application();
NewLateBinding.LateCall(this.MapInfo, null, "do", new object[] { "Run Application \"D:\\NOUT\\Programs\\MyProgram\\Untitled.MBX\" " }, null, null, null, true);
int i = Conversions.ToInteger(app.DDEInitiate("MapInfo", "D:\\NOUT\\Programs\\MyProgram\\Untitled.MBX"));
app.DDEExecute(i,"cod");
textBox1.Text = "True"; |
|
Вернуться к началу |
|
|
|