Перейти к содержимому

Фотография

MapBasic и все что с ним связаноМожет я не один такой?!


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 388

#181
fredwriter

fredwriter
  • Гость
  • 26 сообщений
Спасибо всем! Swatch отдельное большое! :beer:

Сообщение отредактировал fredwriter: 22.10.2009, 11:13:02

  • 0

#182
swatch

swatch
  • Частый гость
  • 99 сообщений
2Jismo: не делал пока такого, теперь надо подумать как это сделать...
  • 0

#183
Jismo

Jismo
  • Свой человек
  • 975 сообщений
Вариант 1 есть, но там 1 портак, оcтается окно DOS после вызова хэлпа, не красиво как-то.
  • 0

#184
fredwriter

fredwriter
  • Гость
  • 26 сообщений
У меня при наведении на кнопку почему-то не отображается HelpMessage?
  • 0

#185
fredwriter

fredwriter
  • Гость
  • 26 сообщений
Теперь отображается извиняюся! :D
  • 0

#186
fredwriter

fredwriter
  • Гость
  • 26 сообщений
Нужно написать программку, которая создает кнопку-инструмент, при нажатии на которую можно на карте зажать кнопку мыши в одной точке, переместить курсор с нажатой кнопкой до другой точки. При отпускании кнопки рисовалась линия и появлялось бы Note, сообщающая расстояние в km между точками.
Include "icons.def"
Include "mapbasic.def"
Declare Sub Main
Declare Sub izmKil


Sub Main
	Create ButtonPad "Мои кнопки" As
		ToolButton
		   'Icon   MI_ICON_LINE
		   DrawMode DM_CURSOR_LINE
		   Cursor MI_CURSOR_CROSSHAIR
		   Calling izmKil
		   HelpMsg "Этот инструмент измеряет расстояние в км от точки до точки"
		   Show
End Sub

Sub izmKil
   dim x1, y1, x2, y2 As Float
   
   If WindowInfo(FrontWindow(),  WIN_INFO_TYPE)  <>  WIN_MAPPER  Then
	 Note "Инструмент используется только в окне Карты."
	 Exit Sub
   End If
  'Запомнить место, в котором начал действовать инструмент:
  x1 = CommandInfo(CMD_INFO_X)
  y1 = CommandInfo(CMD_INFO_Y)
  'Запомнить место, в котором отпущена кнопка мыши:
  x2 = CommandInfo(CMD_INFO_X2)
  y2 = CommandInfo(CMD_INFO_Y2)	
End Sub
Я подозреваю, что нужно что-то изменить в этом коде и что-то добавить
Помогите кто может!

Сообщение отредактировал fredwriter: 22.10.2009, 15:16:37

  • 0

#187
Jismo

Jismo
  • Свой человек
  • 975 сообщений
Нужно сделать проверку на существование редактируемого слоя после проверки на WIN_MAPPER, а потом создавать объект типа линия уже на редактируемый слой.
Include "icons.def"
Include "mapbasic.def"
Declare Sub Main
Declare Sub izmKil


Sub Main
	Create ButtonPad "Мои кнопки" As
		ToolButton
		   'Icon   MI_ICON_LINE
		   DrawMode DM_CURSOR_LINE
		   Cursor MI_CURSOR_CROSSHAIR
		   Calling izmKil
		   HelpMsg "Этот инструмент измеряет расстояние в км от точки до точки"
		   Show
End Sub

Sub izmKil
   dim x1, y1, x2, y2 As Float
   
   If WindowInfo(FrontWindow(),  WIN_INFO_TYPE)  <>  WIN_MAPPER  Then
	 Note "Инструмент используется только в окне Карты."
	 Exit Sub
   End If

добавляем проверку на редактируемый слой
If MapperInfo(FrontWindow(), MAPPER_INFO_EDIT_LAYER) = -1 Then
	  Note "Нет редактируемого слоя"	
		Exit Sub
	End If
дальше твое
'Запомнить место, в котором начал действовать инструмент:
  x1 = CommandInfo(CMD_INFO_X)
  y1 = CommandInfo(CMD_INFO_Y)
  'Запомнить место, в котором отпущена кнопка мыши:
  x2 = CommandInfo(CMD_INFO_X2)
  y2 = CommandInfo(CMD_INFO_Y2)

добавлеяем сам объект
Create Line Into FrontWindow() (x1, y1) (x2, y2) 
   Note Sqr((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)) 
End Sub
Есть 1 НО, кое что насчет отображения длины, она будет в той системе координат что используется по умолчанию.

Сообщение отредактировал Jismo: 22.10.2009, 15:42:22

  • 0

#188
Jismo

Jismo
  • Свой человек
  • 975 сообщений
Нужно использовать это перед вызовом CommandInfo :
Set CoordSys Window FrontWindow()
еще надо узнать что является единицей измерения: метр, километр, миля и т.д и оттуда уже плясать с выводом длины :D

Сообщение отредактировал Jismo: 22.10.2009, 15:41:27

  • 0

#189
Jismo

Jismo
  • Свой человек
  • 975 сообщений
Тьфу ты блин :D, там есть родная функция которая сразу считает длину в определенных единицах не зависимо от того какая система коодинат используется
Note Distance(x1, y1, x2, y2, "km")

  • 0

#190
swatch

swatch
  • Частый гость
  • 99 сообщений
:D Улыбнуло последнее. Матчасть нужно знать :hi:
  • 0

#191
Jismo

Jismo
  • Свой человек
  • 975 сообщений
хорош прикалывать, вечер все таки :D
  • 0

#192
d_d_t

d_d_t
  • Завсегдатай
  • 239 сообщений
Явно не "боевое" задание. Зачем дублировать функционал стандартного инструмента MapInfo?
  • 0

#193
swatch

swatch
  • Частый гость
  • 99 сообщений
Ничего страшного, человек учится, по-моему об этом было написано ранее, нужно сделать примерчики на знание основ.
  • 0

#194
fredwriter

fredwriter
  • Гость
  • 26 сообщений
Спасибище всем! :)
А матчасть мне благосклонно улыбается. Примерно так :spy:

Сообщение отредактировал fredwriter: 23.10.2009, 09:33:03

  • 0

#195
Jismo

Jismo
  • Свой человек
  • 975 сообщений
Видимо, Вы не допоняли предыдущие сообщения, замечания про матчасть были мне адресованы :)
  • 0

#196
swatch

swatch
  • Частый гость
  • 99 сообщений
Jismo, засвети свой "костыльный" вариант решения вопроса с CHM, оценим.
  • 0

#197
Jismo

Jismo
  • Свой человек
  • 975 сообщений
для примера нужен рабочий файл CHM, я использовал лингво файл
run program "cmd.exe  /c ""C:\Program Files\ABBYY Lingvo 12\Lingvo1.chm"""

Сообщение отредактировал Jismo: 23.10.2009, 13:59:18

  • 0

#198
Jismo

Jismo
  • Свой человек
  • 975 сообщений
Все файл открывается все ок кроме 1 НО остается открытым окно cmd.exe, кстати которое после закрытия вручную ни как не влияет на справку, если же программно закрывать это окно то закрывется и окно справки что не есть гуд!
  • 0

#199
swatch

swatch
  • Частый гость
  • 99 сообщений
2Jismo: Лови быстрое решение. Ковычек ровно столько сколько нужно. Куда писать путь до CHM пояснять не буду :rolleyes:
Run Program "cmd /c ""start  ""wintitle"" ""C:\Program Files\MapInfo\Professional\mapinfow.chm"""""
после вызова START в ковычках указывается заголовок будущего окна для CMD, который можно сделать пустым (все равно никто не увидит).

Сообщение отредактировал swatch: 23.10.2009, 14:37:37

  • 0

#200
Jismo

Jismo
  • Свой человек
  • 975 сообщений
ага сэнкс, но можно еще так
run program "cmd  /c start /d ""C:\Program Files\ABBYY Lingvo 12\"" Lingvo1.chm"
Мне только что подсказали
  • 0


Количество пользователей, читающих эту тему: 1

пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.