Здравствуйте.Стоит задача из диалогового окна вызвать рисование точки,затем нарисовав эту точку передать координаты в таблицу и заполнить остальные данные в таблице.Как это возможно сделать?подскажите пожалуйста.заранее спасибо.
пример диалога:
sub dan
Dialog
Title "Внесение данных"
Control groupbox
Title "Создание точки"
Height 35 width 170
Control OkButton
Title "Методом нанесения"
position 10,20
calling draw
Control OkButton
Title "По координатам"
position 100,20
calling dig
end sub
Рисование через MapBasic
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 27 апр 2011, 13:16
- Репутация: 0
- asgs
- Участник
- Сообщения: 89
- Зарегистрирован: 04 авг 2010, 06:35
- Репутация: 1
- Контактная информация:
Re: Рисование через MapBasic
Посмотрите вот эту программу asgs.narod.ru/downloads/programs/DirectGeo.rar, там используется примерно тот же принцип, что и в Вашей задаче. Если моя реализация устроит, напишите в личку, пришлю исходники.
Злобный йожег
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 27 апр 2011, 13:16
- Репутация: 0
Re: Рисование через MapBasic
У вас объект создаеться по координатам.это я тоже реализовал.а мне нужно чтобы из программы вызывался инструмент рисования точки и ты уже сам курсором ставишь объект.такое реально сделать?
-
- Интересующийся
- Сообщения: 21
- Зарегистрирован: 08 фев 2011, 22:50
- Репутация: 1
- Откуда: Астрахань
Re: Рисование через MapBasic
Инструмент рисования точки вызывается командой Run Menu Command 1711, либо
Run Menu Command M_TOOLS_POINT. Смотрите руководство пользователя MB. Этой командой можно вызвать любой из инструментов пенала. Т.е. после ее выполнения конкретный инструмент будет нажат в пенале, вам нужно только нажать на окно карты, чтобы нанести соответствующий символ.
Run Menu Command M_TOOLS_POINT. Смотрите руководство пользователя MB. Этой командой можно вызвать любой из инструментов пенала. Т.е. после ее выполнения конкретный инструмент будет нажат в пенале, вам нужно только нажать на окно карты, чтобы нанести соответствующий символ.
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 27 апр 2011, 13:16
- Репутация: 0
Re: Рисование через MapBasic
Спасибо,помогло.еще такой вопрос возможно ли после нанесения соответсвующего символа вызывался диалог в котором можно было бы привязать данные к символу?kamennovs писал(а):Инструмент рисования точки вызывается командой Run Menu Command 1711, либо
Run Menu Command M_TOOLS_POINT. Смотрите руководство пользователя MB. Этой командой можно вызвать любой из инструментов пенала. Т.е. после ее выполнения конкретный инструмент будет нажат в пенале, вам нужно только нажать на окно карты, чтобы нанести соответствующий символ.
-
- Интересующийся
- Сообщения: 21
- Зарегистрирован: 08 фев 2011, 22:50
- Репутация: 1
- Откуда: Астрахань
Re: Рисование через MapBasic
Это можно сделать. Необходимо использовать встроенную процедуру реагирующую на изменение в окне Sub WinChangedHandler. Создаете три глобальные переменные, например Global n, w as integer и sem As String Далее в Sub Main кидаете строчку n=TableInfo(Название вашей таблицы,TAB_INFO_NROWS), эта строчка передает в переменную n количество строчек вашей таблицы. Далее создаете процедуру
Sub WinChangedHandler
w=TableInfo(Название вашей таблицы,TAB_INFO_NROWS)
If n<w Then Goto eee
else Goto www
End If
eee:
Call Update
www:
End Sub
В процедуре описывается следующее, если количество строк, после изменения в окне карты, в таблице увеличилось, то вызываем процедуру Update. Под изменением мы понимаем создание символа. Далее создаем процедуру
Sub Update
w=TableInfo(Название вашей таблицы,TAB_INFO_NROWS)
Call Dialog "Ваш диалог"
Update Название вашей таблицы
Set NAME =sem "NAME название поля в которое будет заноситься информация, sem строчная переменная, в которую будет сохранятся введенная в Control EditText вашего диалога информация"
Where Rowid =w
call TableInfoS
End Sub
Sub TableInfoS
n=TableInfo(Название вашей таблицы,TAB_INFO_NROWS)
End Sub
В вашем диалоге создаете строчки
Control EditText
Position 55,50 "Позицию выберете сами"
Value "" Into sem "Значение вводится вручную, передается в переменную sem, а далее в новую строчку соответствующего поля, в нашем случае NAME"
Sub WinChangedHandler
w=TableInfo(Название вашей таблицы,TAB_INFO_NROWS)
If n<w Then Goto eee
else Goto www
End If
eee:
Call Update
www:
End Sub
В процедуре описывается следующее, если количество строк, после изменения в окне карты, в таблице увеличилось, то вызываем процедуру Update. Под изменением мы понимаем создание символа. Далее создаем процедуру
Sub Update
w=TableInfo(Название вашей таблицы,TAB_INFO_NROWS)
Call Dialog "Ваш диалог"
Update Название вашей таблицы
Set NAME =sem "NAME название поля в которое будет заноситься информация, sem строчная переменная, в которую будет сохранятся введенная в Control EditText вашего диалога информация"
Where Rowid =w
call TableInfoS
End Sub
Sub TableInfoS
n=TableInfo(Название вашей таблицы,TAB_INFO_NROWS)
End Sub
В вашем диалоге создаете строчки
Control EditText
Position 55,50 "Позицию выберете сами"
Value "" Into sem "Значение вводится вручную, передается в переменную sem, а далее в новую строчку соответствующего поля, в нашем случае NAME"
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость