Пишу *.dll помогите с методами

Тема в разделе "Delphi - Multimedia, Графика, Игры", создана пользователем mdbm, 26 май 2008.

Статус темы:
Закрыта.
  1. mdbm

    mdbm Гость

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

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

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

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



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

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

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


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

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

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

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

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

    etc Гость

    Они неправильные.
    Интересно, а зачем так? 1С передать в библиотеку этот хендл не может?
     
  3. mdbm

    mdbm Гость

    Вообщем написал код
    Скомпилировал
    Вопрос про этот фрагмент:

    procedure TMain.LoadBitmap(AFileName: PChar);

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

    Как быть ?
    Где искать ошибку ?
     
  4. etc

    etc Гость

    В коде.
     
  5. mdbm

    mdbm Гость

    Код (Text):
    procedure TMain.LoadBitmap(AFileName: PChar);
    begin
    If Not Assigned(Image) Then Image := TBitmap.Create;
    Try
    Image.LoadFromFile(AFileName);
    Except
    FreeAndNil(Image);
    Raise;
    End;
    end;
     
  6. etc

    etc Гость

    Очень замечательно, а строку вызвавшую ошибку предлагаете нам найти и понять в чем собственно ваша проблема?
     
  7. mdbm

    mdbm Гость

    Ура !!!
    Получилось...

    Код (Text):
    procedure TMain.BitmapLoad(var AFileName: OleVariant);
    Вместо PChar я использовал OleVariant
     
  8. mdbm

    mdbm Гость

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

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

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

    mdbm Гость

    Все, нашел ошибку....

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

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

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

    Silver Wind Гость

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

    Установи FormStyle формы в fsStayOnTop
     
  11. mdbm

    mdbm Гость

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

    Может есть иной способ реализации ?
     
  12. Silver Wind

    Silver Wind Гость

    Не совсем понятен вопрос. В Delphi у всех визуальных компанент есть свойство Hint используй его.
    Если вопрос в том, чтобы показать подсказку по какому-то событию используй Application.ActivateHint()
     
  13. mdbm

    mdbm Гость

    В программе 1С я загружаю внешнюю компоненту, которую пишу на Дельфи
    И в программе 1С моя компонента выводит подсказки на форме 1С.
    (Визуальные компоненты отсутствуют)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей