Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2015, 13:13   #1
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию Delphi & AutoCAD: порядок "листов".

Здравствуйте, уважаемые. Надеюсь, найдётся тот, кто сможет мне ответить на вопрос: как узнать порядок расположения вкладок листов? В имеющемся в "документе" Layouts нумерация в порядке появления (создавания) слоёв. А интересует именно последовательность их вкладок.
Ship_1 вне форума Ответить с цитированием
Старый 19.05.2015, 15:46   #2
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Да что ж такое? Опять никто не ответит? Не ужели на форуме нет ни одного человека, который знает АвтоКАД? Чего только тут люди ни знают, а АвтоКАД не знает никто?..
Или никто не отвечает по какой-то другой причине?
Ship_1 вне форума Ответить с цитированием
Старый 19.05.2015, 16:02   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я знал его раньше, но уже около 5 лет не работаю с ним. А учитывая что после MDT 6 куча версий сменилось мне сказать нечего. Смотреть хелп по VBA надо чтоб на твой вопрос ответить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.06.2015, 14:11   #4
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Спасибо за ответ, Stilet. Вы и в прошлый раз единственный мне ответили по АвтоКАДу. Поэтому и написал "знает" в настоящем времени, т.к. помню про то, что раньше с ним работали Вы.
Наткнулся таки на одном форуме на то, что за номер листа в расположении вкладок отвечает Layouts.Item(i).TabOrder
И тут возникает следующая проблема: при любой попытке обратиться к этому свойству (во всяком случае я испробовал четыре варианта: в одну строку вывод номера в нужный Edit; попытка сначала присвоить номер переменной; взять сначала переменную для листа, а потом уже от этой переменной взять номер расположения этого листа и даже попробовал через Variant - результат один) возникает ошибка
Цитата:
"Acces violation at adress 762d5149 in module 'RPCRT.dll'. Read of adress 00000000"
Там, где я нашёл про это свойство, вопрос был связан тоже как раз с тем как избавиться от ошибки.
Может, хоть с этим кто-то поможет?
Ship_1 вне форума Ответить с цитированием
Старый 14.06.2015, 14:33   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А можно увидеть код?
Я надеюсь, что ты не пишешь прям одной строкой, как показал. Или так и пишешь?
Если да, то рекомендую:
Код:
var LayItem,Layouts:OleVariant;
...
Layouts:=АвтокалБлаБла.Layouts;
if not VarIsClear(Layouts) then begin
 if (i>=0)and(i<Layouts.Count) then begin
  LayItem:=Layouts.Item(i);
  if not VarIsClear(Layouts) then begin
   LayItem.TabOrder - работаем.
  end else begin
   Ошибка получения вкладки
  end;
 end else begin
  Такой вкладки нет
 end;
end else begin
 объект лайоутов недоступен
end;
Т.е. нужно так писать, чтоб ошибки обрабатывать, а не напролом на авось.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.06.2015, 15:38   #6
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Йоххо!!! Получилось!!! Мой код на работе, поэтому поэкспериментировал с "рекомендацией"
Сначала попробовал через автокадовские типы: IAcadLayouts; IAcadLayout, но опять вылетела ошибка на строке
Код:
ShowMessage(IntToStr(LayItem.TabOrder));
Правда, уже другая, но похожая.
Цитата:
"Acces violation at adress 77EF307C in module 'RPCRT4.dll'. Read of adress 00000000"
Но после замены на OleVariant сработало!!!
Спасибо большое!
Интересно, в чём тут фишка?..
Код уже не нужен, или таки завтра выложить фрагмент?

И...
Ну да... Так прямо и пишу... Если возникает необходимость отлова ошибок - помещаю в try...except...end. С VarIsClear сталкиваюсь первый раз. Попробовал пояндексить, но ничего путного про неё не нашёл. Приму во внимание, спасибо! Если не сложно - поясните понятными словами что она делает?

Последний раз редактировалось Ship_1; 14.06.2015 в 15:41.
Ship_1 вне форума Ответить с цитированием
Старый 14.06.2015, 16:12   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Интересно, в чём тут фишка?..
Всмысле? OleVariant это универсальный тип, а IAcadLayouts; IAcadLayout - это интерфейсы. Как бы тебе, раз уж с VB акада работаешь, придется изучать основы СОМ и OLE технологии и как работать с IDispatch.
Тексейра и Пачеко - вот книга, которая тебе пригодится )
Цитата:
Код уже не нужен, или таки завтра выложить фрагмент?
Если все срослось, то не нужен.
Цитата:
Ну да... Так прямо и пишу...
Ну тогда да... Прямо так на ошибки и будешь попадаться )))
Если вдруг какое-то свойство оказывается недоступным, или в силу версий акада тупо не поддерживается, то твое ПО покатится колбаской по малой спасской )
Раз уж работаешь с СОМ, то ставь проверки везде где надо и не очень. Это тебе совет из 6-ти летнего опыта работы с Авткадом, Компасом и Солидом.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.06.2015, 16:23   #8
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Эта книга?
Или у них есть что-то более близкое к теме? Потому что эта похожа на стандартную книгу "начального" уровня: основные принципы работы с Дельфи и создание баз данных. Без углубления, например, в работу с OleVariant и обычных Variant; без VarIsClear и т.п.

Цитата:
раз уж с VB акада работаешь
VB у меня ассоциируется с ВизуалБэйсиком... А тут что имелось ввиду?
Ship_1 вне форума Ответить с цитированием
Старый 14.06.2015, 16:31   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Эта книга?
Да.
Цитата:
Потому что эта похожа на стандартную книгу "начального" уровня
Вигасе начального О_о...
Ты хотя бы содержание прочти.
Там такие штуки описаны, которые ни один препод не даст никогда. Это Библия Делфи. Лучшая из книг.
Цитата:
Без углубления, например, в работу с OleVariant и обычных Variant; без VarIsClear и т.п.
Вот тот, кто прочтет ее, тот поймет о чем я говорю, а если ты не сделаешь этого, то можем дальше не обсуждать работу с OLE и т.д.
Цитата:
VB у меня ассоциируется с ВизуалБэйсиком... А тут что имелось ввиду?
Визуал Бейсик. Ты что не в курсе что в Акаде на VB можно писать ПО? По крайней мере в старых версиях можно было, и именно там в VB можно подсмотреть путь вызова всех свойств обьектной модели СОМ Автокада, чтоб потом перенести на Делфи или Си.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.06.2015, 16:45   #10
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

А, вот о чём речь про VB...

Цитата:
Это Библия Делфи. Лучшая из книг.
Ну я её, собственно, с "Библией Дельфи" и сравнил Флёнова. Я её иногда почитываю от случая к случаю, если понимаю что где можно вычитать для моей необходимости.

ОК, почитаю и эту.
Спасибо за советы!
Ship_1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Какова разница между "int** &a" и "int** a" в кач-ве параметра функции? dollemika Помощь студентам 3 15.01.2012 17:16
Delphi 7 + Windows Vista & 7: обработка исключений "деление на 0" (и др. мат. ошибок) Dima DD Общие вопросы Delphi 11 22.12.2010 20:14
Что происходит на странице с такие JS: <script src="cmp.php?complete&amp;" id="las..." ...>? TwiX JavaScript, Ajax 0 05.02.2010 17:38
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04