ВУЗ:
Составители:
Рубрика:
26
// Загружаем файл - эмблему Delphi
Pic.LoadFromFile(FileName);
// Меняем изображение
with Pic.Bitmap.Canvas do begin
Font.name:='Times New Roman';
Font.Style:=[fsItalic,fsBold];
Font.Size:=20;
Font.Color:=clRed;
TextOut(40,110,'E');
TextOut(105,70,'D');
TextOut(98,1,'B');
end;
// Преобразуем для отправки клиенту
GetOlePicture(Pic, Destination);
except
MessageDlg ('Ошибка преобразования!', mtError,[mbOK],
0);
end;
// Освобождаем переменную
Pic.Free;
end;
initialization
TTypedComObjectFactory.Create(ComServer, TChangeImage,
Class_ChangeImage,
ciMultiInstance, tmApartment);
end.
После компиляции проекта мы получим файл InProcServer.dll, содержащий код
сервера . Далее необходимо зарегистрировать сервер в реестре, используя про -
цедуру RegSvr32
RegSvr32 InProcServer.dll,
или нажав кнопку Register Type Library в редакторе библиотеки типов , или вы-
брав пункт меню Run – Register ActiveX Server.
Разумеется, логичнее передавать серверу не имя файла, а само изображение.
Но, к сожалению, у преобразований, осуществляемых функциями Delphi 6
GetOlePicture и SetOlePicture, имеются недокументированные осо -
бенности , в результате чего к преобразованному ими TPicture невозможно
применить методы класса TBitMap для редактирования, изменения формата и
сохранения изображения.
Отметим также трудности передачи изображений с использованием внешнего
сервера , так как для типа данных IPictureDisp маршаллинг надо програм-
мировать вручную . Для внутреннего сервера маршаллинг не требуется.
26 // Загружаем файл - эмблему Delphi Pic.LoadFromFile(FileName); // Меняем изображение with Pic.Bitmap.Canvas do begin Font.name:='Times New Roman'; Font.Style:=[fsItalic,fsBold]; Font.Size:=20; Font.Color:=clRed; TextOut(40,110,'E'); TextOut(105,70,'D'); TextOut(98,1,'B'); end; // Преобразуем для отправки клиенту GetOlePicture(Pic, Destination); except MessageDlg ('Ошибка преобразования!', mtError,[mbOK], 0); end; // Освобождаем переменную Pic.Free; end; initialization TTypedComObjectFactory.Create(ComServer, TChangeImage, Class_ChangeImage, ciMultiInstance, tmApartment); end. Послекомпи ляци и проекта мы получи м фай л InProcServer.dll, сод ерж ащ и й код серв ера. Д алее необход и мо з ареги стри ров ать серверв реестре, и спольз уя про- цед уру RegSvr32 RegSvr32 InProcServer.dll, и ли наж ав кнопку Register Type Library в ред актореби бли отеки ти пов , и ли в ы - брав пунктменю Run –Register ActiveX Server. Раз умеется, логи чнее перед ав ать серв еру не и мя фай ла, а само и з ображ ени е. Н о, к сож алени ю , у преобраз ов ани й , осущ еств ляемы х функци ями Delphi 6 GetOlePicture и SetOlePicture, и мею тся нед окументи ров анны е осо- бенности , в рез ультате чего кпреобраз ов анному и ми TPicture нев оз мож но при мени ть метод ы класса TBitMap д ля ред акти ров ани я, и з менени я формата и сохранени яи з ображ ени я. О тмети м такж е труд ности перед ачи и з ображ ени й с и спольз ов ани ем в неш него серв ера, таккакд ля ти па д анны х IPictureDisp марш алли нг над о програм- ми ров ать в ручную . Д ляв нутреннего сервера марш алли нг нетребуется.
Страницы
- « первая
- ‹ предыдущая
- …
- 24
- 25
- 26
- 27
- 28
- …
- следующая ›
- последняя »