Проблемы с отображением библиотеки в Компасе

Автор gif, 19.05.10, 10:42:36

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

gif

 :%:
Всем привет!

Пишу библиотеку для Компаса. Сделал все в дельфи, подключил. Возникли вопросы в действии библитеки:
1. На форме есть картинки (в Компасе же их нет) может какой модуль я не включил?
2. В программе есть БД в аксессе. Может ли компас работать с БД?

Если кто может подсказать, буду очень признателен!

gif

Пока ждал ответа, сделал форму в Дельфи, накидал на нее картинки, подключил к компасу. Картинки есть.

Я не так выразился в первом посте, в Дельфи было сделао динамическое распределение картинок, как отдельная программа все работает, распределение и показ картинок есть, А ВОТ В ВИДЕ БИБЛИОТЕКИ ДЛЯ КОМПАСА - УВЫ, нет/

Кто знает?

bergovin

Цитата: gif от 19.05.10, 11:33:59
Кто знает?
Что знает?
Если вы о том как компилировать и подключать биБлиотеки - пользуйся SDK и поиском на форуме - всё уже давно сказано

PS а на вопрос ваш изначально никто не ответил, наверное потомучто был задан непонятно о чём, причём тут картинки и КОМПАС если вы форму не в КОМПАСЕ создаёте а в соответствующей среде разработки(тоже самое и с БД), так что пожелание на будущее толково формулировать вопросы   ;)

gif

2 bergovin,

Поясню:
Библиотека создана в Дельфи. (с вопросами как подключить и т.д. не обращаюсь) Есть главное окно библиотеки (форма), на ней картинки вариантов соединений. Распределение картинок написано динамически. При подключении к компасу, картинок с выбором нет.
Вопрос: почему так?

bergovin

Цитата: gif от 19.05.10, 12:16:02
Библиотека создана в Дельфи. (с вопросами как подключить и т.д. не обращаюсь) Есть главное окно библиотеки (форма), на ней картинки вариантов соединений. Распределение картинок написано динамически. При подключении к компасу, картинок с выбором нет.
Вопрос: почему так?
Тут надо смотреть(желательно код увидеть) может вы их подгружаете откуда что пути слетают или ещё что то намудрили, только помоему компас здесь непричём, если это даже не ваша вина а глюк, то это скорее глюк в среде разработки а не в КОМПАСе

gif

2 bergovin,
Отдельно, вне компаса программа работает. Так что наверное не стыковки Компас-Дельфи.

Прилагаю код:

//-----------Открытие формы, разрисовка---------------------
procedure TForm1.FormShow(Sender: TObject);
Var SR:TSearchRec;
FindRes:Integer;filebase,rconnect:string;
p:timage;l,l1,l2,t,c1,c2:integer;str:string;
begin
cd:=extractfilepath(application.ExeName);
filebase:=cd+'baza.mdb';
rconnect:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ filebase+  ';Persist Security Info=False';
adoconnection1.Close;
adoconnection1.ConnectionString:=rconnect;
adoconnection1.Open;
FindRes:=FindFirst(cd+'img\'+'*.*',faAnyFile,SR);
c1:=0;c2:=0;
l1:=0;l2:=0;
While FindRes=0 do
   begin
   if ((SR.Attr and faDirectory)=faDirectory) and
      ((SR.Name='.')or(SR.Name='..')) then
         begin
            FindRes:=FindNext(SR);
            Continue;
         end;
         if pos('О',sr.Name)<>0 then
         begin
         if c1=0 then begin inc(c1);l1:=20;end else l1:=l1+125;
         t:=60;
         end
         else
         begin
         if c2=0 then begin inc(c2);l2:=20;end else l2:=l2+125;
         t:=255;
         end;
         p:=timage.Create(nil);
         p.picture.LoadFromFile(cd+'img\'+sr.Name);
         if pos('О',sr.name)<>0 then l:=l1 else l:=l2;
         p.Left:=l;
         p.Top:=t;
         str:=sr.name;
         p.HelpKeyword:=sr.Name;
         p.Stretch:=true;
         p.OnClick:=imageclick;
         p.Parent:=self;
     FindRes:=FindNext(SR);
   end;
FindClose(SR);
end;

bergovin

1)Попробуй указывать путь к картинкам не через переменную а в явном виде, прописав путь, может в этом деле
2)НЕ факт что здесь cd:=extractfilepath(application.ExeName); в конце будет слэш, нужно делать проверку

gif

bergovin,
код правильный - вне компаса он работает исправно, но путь попробую прописать.

bergovin

#8
Может проблемма в этом
application.ExeName - возвращает путь к вашему приложению
но у вас же библиотка а не приложение, может Делфи некорректно это обрабатывает (я в другом програмлю, и Делфи редко использую, поэтому не уверен)

Чёт я помню в Делфи функция ExeName имеет особенности, может попробуй ParamStr

Ну что там, у тебя, прокатило если явно указывать путь?

gif

явно не получится. там динамика прописана. для статических картинок все норм.
А ParamStr дельфи ругается.

bergovin

Цитата: gif от 19.05.10, 13:51:49
явно не получится. там динамика прописана. для статических картинок все норм.
Я понемаю, я имею ввиду что ты явно задай значение переменной cd, динамика всёравно то ведь будет работать

И ещё, а чего у тебя SR в разных регистрах ?

gif


Maxagg

 :) ищите проблему не в компасе, такие косяки будут у вас при создании любой dll из делфи.
возможный вариант решения проблемы в создании клона картинки, а уже потом внесения в нее изображения

Cehhby

application.ExeName
путь к компасу вам вернет, GetDLLName использовать вместо вам надо

YuKa

проблема в строке cd:=extractfilepath(application.ExeName);
Я использовал GetModuleFileName

procedure getPathRTW();
var
  nSize: cardinal;
  fName, nPath: string;
begin
  nSize := 255;
  SetLength(fName, nSize);
  SetLength(fName, GetModuleFileName(hinstance, pChar(fName), nSize));
  nPath := ExtractFilePath(fName); //Путь к библиотеке
  fName := ExtractFileName(fName); //Имя файла библиотеки
  Kompas.ksMessage('Путь к ' + fName + ': ' + nPath);
end;

gif

 :) всем спасибо!
Решил проблему еще проще, убрал динамику, прописал статикой - все работает!
Максимилиан был прав, проблема была в написании dll из под Дельфи.

Вопрос не совсем в тему, но возник по ходу решения предыдущей проблемы:
Работаю с созданием из библиотеки выходного файла xls, шаблон заполняемого xls расположен в папке с rtw, но компас ругается что типа в папке Бин не находит его. Вопрос: как ему прописать отдельную папку отличную от папки Бин (для удобства)