Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пишу *.dll помогите с методами [D7, WinXP]


Страницы:   1 2

mdbm ©   (2008-05-26 18:18:00) 

Добрый день.
Я начинающий дельфист.
Владею лишь языком программирования 1С.
Мне необходимо написать библиотеку dll со следующими методами:

ЗагрузитьКартинку(Каталог,ИмяФайла); // загружает картинку (карта города)

НарисоватьКружокНаКартинке(Х,У,Радиус); //рисует на загруженной картинке кружок.

СохранитьФрагмент(Х,У,Ширина,Высота,Каталог,ИмяФайла); //сохраняет фрагмент загруженной картинки в каталог

Принцип работы с данной библиотекой будет такой:
В среде 1С я создаю объект("моя_библиотека.dll")
И начинаю использовать его методы.

1. С помощью метода ЗагрузитьКартинку , я подгружаю картинку в память
2. Рисую на картинке кружок(при необходимости несколько)
3. Сохраняю фрагмент в каталоге.

Загружаю этот фрагмент из каталога в программу 1С

И вот. Решил написать руками на Дельфи 7
И вообще давно уже хотел изучить этот язык
Но чтобы начать...

Помогите кодом данной библиотеки, а уже дальше я буду потихоньку
дорабатывать её и постигать чудеса программирования в Дельфи.

На текущий момент я уже написал скелет библиотеки. (по туторам)
С одним методом ПолучитьХендлГлавногоОкна1С()
Все вроде работает....

Нужна реализация трёх ,указанных выше методов.

С уважением....


tesseract   (2008-05-28 16:13:00) [1]


> Дык чтобы новый плагин зарегить. Его же еще как ком сервер
> регить надо.


Абсолютно не надо, 1с сама зарегит. Только если как OLE используешь, или работаешь не под администратором. Тогда надо просто загрузиться разок под админом 6-).


ANB   (2008-05-28 15:51:00) [2]


> А можно фрагмент кода ?

SetParent

А БрингТуФронт - метод есть у каждого винконтрола.


ANB   (2008-05-28 15:49:00) [3]


> Да и зачем гуиды менять ?

Дык чтобы новый плагин зарегить. Его же еще как ком сервер регить надо.


tesseract   (2008-05-28 14:48:00) [4]


> Там еще надо помнить, где какие гуиды менять.


Контстанты + inc в помощь. Да и зачем гуиды менять ? Для каждого просто свой нужен.


mdbm   (2008-05-28 14:37:00) [5]


> Парентовым окном для подсказки сделай свою картинку. И БрингТуФронт
> ему.ЗЫ. Тут окно верхнего уровня то вообще зачем ?


А можно фрагмент кода ?


tesseract   (2008-05-28 14:33:00) [6]


> ето отламывается и перестает связываться с 1С.


Это всё AV. В 1c-е оно, не появляеться. Поэтому всё try...except -ом усеивать приходиться.


ANB   (2008-05-28 14:23:00) [7]


> Может это можно сделать каким-то иным способом ?

Парентовым окном для подсказки сделай свою картинку. И БрингТуФронт ему.
ЗЫ. Тут окно верхнего уровня то вообще зачем ?


> Всё там просто. У меня рыба давно написана.

Там еще надо помнить, где какие гуиды менять. Млин, я когда писал - запарился. Раза 4 с нуля начинал проект. Чето отламывается и перестает связываться с 1С. Мне еще связь нужна была в обе стороны.


mdbm   (2008-05-28 14:13:00) [8]

По сути мне надо сделать всплывающую подсказку.
Может это можно сделать каким-то иным способом ?


Умище   (2008-05-28 13:18:00) [9]


> 2. Как сделать, чтоб окно формы, было поверх всех окон в
> 1С ?


Пляши от SetWindowPos(hWnd, HWND_NOTOPMOST,...
Но на свой страх и риск, так как не ты один такой можешь захотеть такое поведение окна.


Сергей М.   (2008-05-27 20:54:00) [10]


> mdbm


Ты занялся откровенной ерундой.
Внешние компоненты, мягко говоря, предназначены для иных целей.


Сергей М.   (2008-05-27 20:51:00) [11]


> 1. Как сделать, чтоб форма была голой


см. BorderStyle = bsNone


> 2.


Никак.


mdbm   (2008-05-27 20:40:00) [12]

Делаю окно сообщения, которое будет всплывать в месте клика мышкой.
Организовал процедуру , вызывающую появление формы на экране.
Вопросы:

1. Как сделать, чтоб форма была голой, т.е. без верхней синей полоски.

2. Как сделать, чтоб окно формы, было поверх всех окон в 1С ?


Умище   (2008-05-27 20:11:00) [13]

Вот и начни.


TForumHelp   (2008-05-27 19:11:00) [14]


> И вот. Решил написать руками на Дельфи 7И вообще давно уже
> хотел изучить этот языкНо чтобы начать...

помоему лучше начать с "Hello World!". =) имхо.


tesseract   (2008-05-27 17:40:00) [15]


> Потому как не просто это.


Всё там просто. У меня рыба давно написана. А вот куда он карту города выводить будет. Если в отчёт, то всё просто.


mdbm   (2008-05-27 16:52:00) [16]


> прикрутить свой аддон сначала к 1С еще не пробовал ?


Уже прикрутил и уже все работает.
ВОт только надо разобраться с разрешением при обрезании


> Следующая проблема - "выжирание" оперативной памяти картой
> города...


Для этого есть процедура в коде

procedure TMain.BitmapFree;
begin
 If Assigned(Image) Then FreeAndNil(Image);
end;


ЗагрузилКарту, ОбрезалФрагмент, СохранилФрагмент, ВыгрузилКарту, ИспользуюФрагмент в 1С

Помогите разобраться с разрешением....


Stas   (2008-05-27 16:31:00) [17]

mdbm ©   (26.05.08 18:18)  

Следующая проблема - "выжирание" оперативной памяти картой города...


ANB   (2008-05-27 16:31:00) [18]

Эта. Немного не по сабжу : а прикрутить свой аддон сначала к 1С еще не пробовал ? Просто с функциями - заглушками, которые ничего не делают.
Потому как не просто это.


mdbm   (2008-05-27 15:12:00) [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 точек на дюйм

Как это отрегулировать внутри процедуры ?


Сергей М.   (2008-05-27 14:06:00) [20]


> var


А почему var?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо