Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Пишу *.dll помогите с методами
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - Multimedia, Графика, Игры
mdbm
Добрый день.
Я начинающий дельфист.
Владею лишь языком программирования 1С.
Мне необходимо написать библиотеку dll со следующими методами:

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

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

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



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

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

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


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

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

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

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

С уважением....
etc
Цитата(mdbm @ 26:05:2008 - 16:31) *
указанных выше методов
Они неправильные.
Цитата(mdbm @ 26:05:2008 - 16:31) *
ПолучитьХендлГлавногоОкна1С()
Интересно, а зачем так? 1С передать в библиотеку этот хендл не может?
mdbm
Вообщем написал код
Скомпилировал
Вопрос про этот фрагмент:

procedure TMain.LoadBitmap(AFileName: PChar);

Мне посоветовали использовать :PChar вместо :String
Я так и сделал...
В результате при попытке использовать dll в программе 1С
при запуске LoadBitmap(ЗдесьПутьККартинке_bmp)
Выскакивает сообщение Плохой тип переменной

Как быть ?
Где искать ошибку ?
etc
Цитата(mdbm @ 27:05:2008 - 11:21) *
Где искать ошибку ?
В коде.
mdbm
Код
procedure TMain.LoadBitmap(AFileName: PChar);
begin
  If Not Assigned(Image) Then Image := TBitmap.Create;
  Try
    Image.LoadFromFile(AFileName);
  Except
    FreeAndNil(Image);
    Raise;
  End;
end;
etc
Очень замечательно, а строку вызвавшую ошибку предлагаете нам найти и понять в чем собственно ваша проблема?
mdbm
Ура !!!
Получилось...

Код
procedure TMain.BitmapLoad(var AFileName: OleVariant);


Вместо PChar я использовал OleVariant
mdbm
Вопрос:
При обрезании карты города , полученный фрагмент получается немного сплющенным

Код
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 точек на дюйм

Как это отрегулировать внутри процедуры ?
mdbm
Все, нашел ошибку....

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

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

2. Как сделать, чтоб окно формы, было поверх всех окон в 1С ?
Silver Wind
Цитата(mdbm @ 27:05:2008 - 18:46) *
1. Как сделать, чтоб форма была голой, т.е. без верхней синей полоски.

Установи BorderStyle формы в bsNone

Цитата(mdbm @ 27:05:2008 - 18:46) *
2. Как сделать, чтоб окно формы, было поверх всех окон в 1С ?

Установи FormStyle формы в fsStayOnTop
mdbm
Мне надо сделать всплывающую подсказку при клике мышкой.
Такую же, как если навести курсор на кнопку Пуск

Может есть иной способ реализации ?
Silver Wind
Не совсем понятен вопрос. В Delphi у всех визуальных компанент есть свойство Hint используй его.
Если вопрос в том, чтобы показать подсказку по какому-то событию используй Application.ActivateHint()
mdbm
В программе 1С я загружаю внешнюю компоненту, которую пишу на Дельфи
И в программе 1С моя компонента выводит подсказки на форме 1С.
(Визуальные компоненты отсутствуют)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2008 IPS, Inc.