Форум: "Начинающим";
Текущий архив: 2008.06.22;
Скачать: [xml.tar.bz2];
ВнизПишу *.dll помогите с методами Найти похожие ветки
← →
mdbm © (2008-05-26 18:18) [0]Добрый день.
Я начинающий дельфист.
Владею лишь языком программирования 1С.
Мне необходимо написать библиотеку dll со следующими методами:
ЗагрузитьКартинку(Каталог,ИмяФайла); // загружает картинку (карта города)
НарисоватьКружокНаКартинке(Х,У,Радиус); //рисует на загруженной картинке кружок.
СохранитьФрагмент(Х,У,Ширина,Высота,Каталог,ИмяФайла); //сохраняет фрагмент загруженной картинки в каталог
Принцип работы с данной библиотекой будет такой:
В среде 1С я создаю объект("моя_библиотека.dll")
И начинаю использовать его методы.
1. С помощью метода ЗагрузитьКартинку , я подгружаю картинку в память
2. Рисую на картинке кружок(при необходимости несколько)
3. Сохраняю фрагмент в каталоге.
Загружаю этот фрагмент из каталога в программу 1С
И вот. Решил написать руками на Дельфи 7
И вообще давно уже хотел изучить этот язык
Но чтобы начать...
Помогите кодом данной библиотеки, а уже дальше я буду потихоньку
дорабатывать её и постигать чудеса программирования в Дельфи.
На текущий момент я уже написал скелет библиотеки. (по туторам)
С одним методом ПолучитьХендлГлавногоОкна1С()
Все вроде работает....
Нужна реализация трёх ,указанных выше методов.
С уважением....
← →
Сергей М. © (2008-05-26 19:02) [1]
> На текущий момент я уже написал скелет библиотеки. (по туторам)
> С одним методом ПолучитьХендлГлавногоОкна1С()
С этого момента максимально подробно ...
← →
mdbm © (2008-05-26 19:07) [2])))
function TMain.h1C: Integer;
var wnd:hwnd;
begin
_pExtWndsSupport._AddRef;
_pExtWndsSupport.GetAppMainFrame(wnd);
RESULT:=wnd;
end;
← →
Сергей М. © (2008-05-26 19:10) [3]Эт что за шматок неизвестно чего ?
Где тут хоть какой-либо намек на "ПолучитьХендлГлавногоОкна" ?
← →
mdbm © (2008-05-26 19:15) [4]ну может не так описал. ))
сорь...
← →
Сергей М. © (2008-05-26 19:20) [5]
> может не так описал
Да еще и не там.
Какое отношение твоя "проблема" имеет к "Media" - вобще не понятно.
← →
Сергей М. © (2008-05-26 19:23) [6]
> библиотеку dll со следующими методами
У библиотеки dll нет никаких методов.
У нее могут быть только экспортируемые регулярные процедуры и функции.
Методы есть у объекта.
Где, как и какой объект ты создаешь - вообще темный лес.
А что, страшное слово "1C Add-On" ты выговорить не в состоянии ?
Или в 1-й раз его слышишь ?
← →
mdbm © (2008-05-26 19:24) [7]Конференция "Media"
работа со звуком, графикой и т.д.
← →
mdbm © (2008-05-26 19:25) [8]Понял...спасибо за поправку...
← →
Сергей М. © (2008-05-26 19:28) [9]
> работа со звуком, графикой и т.д.
До звука и графики тебе еще как до китая на карачках.
Ты еще даже принципы взаимодействия двух программных модулей не освоил, а уже за звук и графику взялся.
← →
mdbm © (2008-05-26 19:33) [10]Будем двигаться мелкими шагами...
← →
Сергей М. © (2008-05-26 19:35) [11]Я так и не понял, ты Add-On сочиняешь или что ?)
← →
mdbm © (2008-05-26 19:54) [12]Да.
← →
Сергей М. © (2008-05-27 09:32) [13]http://sources.codenet.ru/file/941/%C2%ED%E5%F8%ED%E8%E5+%EA%EE%EC%EF%EE%ED%E5%ED%F2%FB.rar
← →
mdbm © (2008-05-27 12:57) [14]Круто....
Привеликое спасибо....Сергей
Буду исследовать.....
← →
mdbm © (2008-05-27 13:21) [15]Вообщем написал код
Скомпилировал
Вопрос про этот фрагмент:
procedure TMain.LoadBitmap(AFileName: PChar);
Мне посоветовали использовать [B]:PChar[/B] вместо [B]:String[/B]
Я так и сделал...
В результате при попытке использовать dll в программе 1С
при запуске LoadBitmap(ЗдесьПутьККартинке_bmp)
Выскакивает сообщение [B]Плохой тип переменной[/B]
Как быть ?
Где искать ошибку ?
← →
Сергей М. © (2008-05-27 13:58) [16]
> Мне посоветовали использовать PChar
PWideChar следует использовать
← →
mdbm © (2008-05-27 14:02) [17]Ура !!!
Получилось...procedure TMain.BitmapLoad(var AFileName: OleVariant);
PWideChar не пробовал пока...
Но все равно спасибо Сергей....
← →
Сергей М. © (2008-05-27 14:06) [18]
> var
А почему var ?
← →
mdbm © (2008-05-27 15:12) [19]хмм...не знаю...процедуры создавал конструктором
это он так решил )
для меня пока это сложный вопрос...
Вопрос:
При обрезании карты города , полученный фрагмент получается немного сплющеннымprocedure TMain.BitmapSavePart(var X, Y, W, H: Integer;
var AFileName: OleVariant);
var
Buf : TBitmap;
begin
Buf := TBitmap.Create;
Try
Buf.PixelFormat := pf24Bit;
Buf.Width := W;
Buf.Height := H;
Buf.Canvas.CopyRect(Rect(0,0,W,H),Image.Canvas,Rect(x,y,x+W,y+W));
Buf.SaveToFile(AFileName);
Finally
Buf.Free;
End;
end;
Я так понял, это связано с разрешением
Оригинал карты города имеет разрешение 95,98 точек на дюйм
А обрезанный фрагмент имеет разрешение 96 точек на дюйм
Как это отрегулировать внутри процедуры ?
← →
ANB (2008-05-27 16:31) [20]Эта. Немного не по сабжу : а прикрутить свой аддон сначала к 1С еще не пробовал ? Просто с функциями - заглушками, которые ничего не делают.
Потому как не просто это.
← →
Stas © (2008-05-27 16:31) [21]mdbm © (26.05.08 18:18)
Следующая проблема - "выжирание" оперативной памяти картой города...
← →
mdbm © (2008-05-27 16:52) [22]
> прикрутить свой аддон сначала к 1С еще не пробовал ?
Уже прикрутил и уже все работает.
ВОт только надо разобраться с разрешением при обрезании
> Следующая проблема - "выжирание" оперативной памяти картой
> города...
Для этого есть процедура в кодеprocedure TMain.BitmapFree;
begin
If Assigned(Image) Then FreeAndNil(Image);
end;
ЗагрузилКарту, ОбрезалФрагмент, СохранилФрагмент, ВыгрузилКарту, ИспользуюФрагмент в 1С
Помогите разобраться с разрешением....
← →
tesseract © (2008-05-27 17:40) [23]
> Потому как не просто это.
Всё там просто. У меня рыба давно написана. А вот куда он карту города выводить будет. Если в отчёт, то всё просто.
← →
TForumHelp © (2008-05-27 19:11) [24]
> И вот. Решил написать руками на Дельфи 7И вообще давно уже
> хотел изучить этот языкНо чтобы начать...
помоему лучше начать с "Hello World!". =) имхо.
← →
Умище (2008-05-27 20:11) [25]Вот и начни.
← →
mdbm © (2008-05-27 20:40) [26]Делаю окно сообщения, которое будет всплывать в месте клика мышкой.
Организовал процедуру , вызывающую появление формы на экране.
Вопросы:
1. Как сделать, чтоб форма была голой, т.е. без верхней синей полоски.
2. Как сделать, чтоб окно формы, было поверх всех окон в 1С ?
← →
Сергей М. © (2008-05-27 20:51) [27]
> 1. Как сделать, чтоб форма была голой
см. BorderStyle = bsNone
> 2.
Никак.
← →
Сергей М. © (2008-05-27 20:54) [28]
> mdbm
Ты занялся откровенной ерундой.
Внешние компоненты, мягко говоря, предназначены для иных целей.
← →
Умище (2008-05-28 13:18) [29]
> 2. Как сделать, чтоб окно формы, было поверх всех окон в
> 1С ?
Пляши от SetWindowPos(hWnd, HWND_NOTOPMOST,...
Но на свой страх и риск, так как не ты один такой можешь захотеть такое поведение окна.
← →
mdbm © (2008-05-28 14:13) [30]По сути мне надо сделать всплывающую подсказку.
Может это можно сделать каким-то иным способом ?
← →
ANB (2008-05-28 14:23) [31]
> Может это можно сделать каким-то иным способом ?
Парентовым окном для подсказки сделай свою картинку. И БрингТуФронт ему.
ЗЫ. Тут окно верхнего уровня то вообще зачем ?
> Всё там просто. У меня рыба давно написана.
Там еще надо помнить, где какие гуиды менять. Млин, я когда писал - запарился. Раза 4 с нуля начинал проект. Чето отламывается и перестает связываться с 1С. Мне еще связь нужна была в обе стороны.
← →
tesseract © (2008-05-28 14:33) [32]
> ето отламывается и перестает связываться с 1С.
Это всё AV. В 1c-е оно, не появляеться. Поэтому всё try...except -ом усеивать приходиться.
← →
mdbm © (2008-05-28 14:37) [33]
> Парентовым окном для подсказки сделай свою картинку. И БрингТуФронт
> ему.ЗЫ. Тут окно верхнего уровня то вообще зачем ?
А можно фрагмент кода ?
← →
tesseract © (2008-05-28 14:48) [34]
> Там еще надо помнить, где какие гуиды менять.
Контстанты + inc в помощь. Да и зачем гуиды менять ? Для каждого просто свой нужен.
← →
ANB (2008-05-28 15:49) [35]
> Да и зачем гуиды менять ?
Дык чтобы новый плагин зарегить. Его же еще как ком сервер регить надо.
← →
ANB (2008-05-28 15:51) [36]
> А можно фрагмент кода ?
SetParent
А БрингТуФронт - метод есть у каждого винконтрола.
← →
tesseract © (2008-05-28 16:13) [37]
> Дык чтобы новый плагин зарегить. Его же еще как ком сервер
> регить надо.
Абсолютно не надо, 1с сама зарегит. Только если как OLE используешь, или работаешь не под администратором. Тогда надо просто загрузиться разок под админом 6-).
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.06.22;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.041 c