dp7lib v.3.0

Дата добавления: 08.08.2009

Что нового по сравнению с версией 2.3?

Компоненты TdpTrayIcon и TdpMeleeTrayIcon подверглись модернизации, но не большой (исправлены мелкие ошибки). TdpChoiceSpectr переименован в TdpSpectr (так в принципе и должно было быть) и тоже был подвержен модернизации (много лишнего в нём было). Исправлена ошибка в названии компонента TdpColourSpectr (недоставало буквы "u"). Компонент TdpGradSpectr удален из за лёгкости его создания (куча ненужного кода). TdpPipetteShape теперь потомок TShape. Добавлены компоненты TdpButton (кнопка), TdpBalloon (воздушный шар), TdpBalloonButton (кнопка закрыть для TdpBalloon), TdpDirectoryChange (позволяет ловить директивные изменения, пришёл на смену класса TdpFileChange), TdpNotice (сплывающее сообщение - можно формировать в дизайне), TdpTrayNotice (своё сообщение в Notification area). Совместимость Delphi 4, 5, 6, 7, 9, 10, 11, 12.

Другие версии: dp7lib v.2.0; dp7lib v.2.3

Скачиваний: 1755 | Просмотров: 7431 | Комментариев: 21 | Рейтинг материала: 4.8
Автор: Иван
Рейтинг: 4.8/10 |

Скачать [176.1Kb]

Скачать с другого сервера [176.11 KБ]

0   Спам
(28.05.2011)
15. Иван
dp7lib 3.3 - выход намечен на июль или август 2011 г.

Совместимость с Delphi 4 по 2010.
Совместимость с C++ Builder 4 по 2010.

Проверил - на всех работает.

Сейчас у меня сессия, поэтому времени будет не хватать. Предстоит много
сдавать экзаменов, ргз и курсовых: Организация и планирования
производства. Методы и средства защиты компьютерной
информации. Архитектура вычислительных процессов. Проектирование и
создание баз данных (MS SQL Server). И т. д.

0   Спам
(18.05.2011)
14. Иван
Delphi:

procedure TForm1.FormCreate(Sender: TObject);
var
TrayIcon: TdpTrayIcon;
begin
TrayIcon := TdpTrayIcon.Create(Self);
TrayIcon.Icon := Application.Icon;
TrayIcon.Show;
TrayIcon.ShowBalloon('Hello', '', 1000, NOTIFYICONDATA_V2_SIZE, 0);
end;

Builder:

void __fastcall TForm1::FormCreate(TObject *Sender)
{
TdpTrayIcon *TrayIcon;
TrayIcon = new TdpTrayIcon(this);
TrayIcon->Icon = Application->Icon;
TrayIcon->Show();
TrayIcon->ShowBalloon("Hello", "", 1000, NOTIFYICONDATA_V2_SIZE, 0);
}


0   Спам
(13.05.2011)
13. Иван
Звесев все за и против пришёл к такому строению модулей (3.3):

dpLib.pas

(*$HPPEMIT 'namespace Dplib' *)
(*$HPPEMIT '{' *)

...

(*$HPPEMIT '#define _RT_DEFAULT 0x0000' *)
(*$HPPEMIT '#define _RT_LEFT 0x0001' *)
(*$HPPEMIT '#define _RT_TOP 0x0002' *)
(*$HPPEMIT '#define _RT_RIGHT 0x0004' *)
(*$HPPEMIT '#define _RT_BOTTOM 0x0008' *)
(*$HPPEMIT '#define _RT_STRETCH 0x0010' *)
(*$HPPEMIT '#define _RT_PROPORTIONAL 0x0020' *)
(*$HPPEMIT '#define _RT_CENTER 0x0040' *)
(*$HPPEMIT '#define _RT_ALIGN 0x0080' *)
(*$HPPEMIT '#define _RT_CLIENT 0x0100' *)

{$NODEFINE GetCalcRect}
function GetCalcRect(const Bounds: TRect; nWidth, nHeight: Longint; var lprc: TRect; Flags: Word): BOOL; stdcall;

(*$HPPEMIT 'MFCSAPI(BOOL) GetCalcRect(const Windows::TRect &Bounds, System::Longint nWidth, System::Longint nHeight, Windows::TRect &lprc, System::Word Flags);' *)

...

dpSysTray.pas

(*$HPPEMIT 'namespace Dpsystray' *)
(*$HPPEMIT '{' *)

const
{$NODEFINE NIM_ADD}
NIM_ADD = $00000000;
{$NODEFINE NIM_MODIFY}
NIM_MODIFY = $00000001;
{$NODEFINE NIM_DELETE}
NIM_DELETE = $00000002;
{$NODEFINE NIM_SETFOCUS}
NIM_SETFOCUS = $00000003;
{$NODEFINE NIM_SETVERSION}
NIM_SETVERSION = $00000004;
{$NODEFINE NIM_VERSION}
NIM_VERSION = $00000005;

(*$HPPEMIT '#define _NIM_ADD 0x00000000' *)
(*$HPPEMIT '#define _NIM_MODIFY 0x00000001' *)
(*$HPPEMIT '#define _NIM_DELETE 0x00000002' *)
(*$HPPEMIT '#define _NIM_SETFOCUS 0x00000003' *)
(*$HPPEMIT '#define _NIM_SETVERSION 0x00000004' *)
(*$HPPEMIT '#define _NIM_VERSION 0x00000005' *)

...

{$NODEFINE TDummyUnionName}
TDummyUnionName = record
case Integer of
0: (uTimeout: UINT);
1: (uVersion: UINT);
end;

(*$HPPEMIT 'struct TDummyUnionName' *)
(*$HPPEMIT '{' *)
(*$HPPEMIT ' union' *)
(*$HPPEMIT ' {' *)
(*$HPPEMIT ' UINT uVersion;' *)
(*$HPPEMIT ' UINT uTimeout;' *)
(*$HPPEMIT ' };' *)
(*$HPPEMIT '};' *)

{$NODEFINE PNotifyIconDataA2}
PNotifyIconDataA2 = ^TNotifyIconDataA2;
{$NODEFINE TNotifyIconDataA2}
TNotifyIconDataA2 = record
cbSize: DWORD;
hWnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hIcon: HICON;
szTip: array[0..127] of AnsiChar;
dwState: DWORD;
dwStateMask: DWORD;
szInfo: array[0..255] of AnsiChar;
DummyUnionName: TDummyUnionName;
szInfoTitle: array[0..63] of AnsiChar;
dwInfoFlags: DWORD;
end;

(*$HPPEMIT 'struct TNotifyIconDataA2' *)
(*$HPPEMIT '{' *)
(*$HPPEMIT ' DWORD cbSize;' *)
(*$HPPEMIT ' HWND hWnd;' *)
(*$HPPEMIT ' UINT uID;' *)
(*$HPPEMIT ' UINT uFlags;' *)
(*$HPPEMIT ' UINT uCallbackMessage;' *)
(*$HPPEMIT ' HICON hIcon;' *)
(*$HPPEMIT ' System::AnsiChar szTip[128];' *)
(*$HPPEMIT ' DWORD dwState;' *)
(*$HPPEMIT ' DWORD dwStateMask;' *)
(*$HPPEMIT ' System::AnsiChar szInfo[256];' *)
(*$HPPEMIT ' TDummyUnionName DummyUnionName;' *)
(*$HPPEMIT ' System::AnsiChar szInfoTitle[64];' *)
(*$HPPEMIT ' DWORD dwInfoFlags;' *)
(*$HPPEMIT '};' *)
(*$HPPEMIT 'typedef TNotifyIconDataA2 *PNotifyIconDataA2;' *)

...

_NIM_ADD - Выбрано не случайно. Если объявить NIM_ADD как
константу, то она начнёт конфликтовать с NIM_ADD из ShellApi.h.
Тут даже namespace не спасает. Конфликта нет, если указать
NIM_ADD через #define. Но так как dcc32 приписывает некоторым
значениям "_" я решил оставить этот стиль. Вроде как и нет
проблем. Типы решил оставить Delphi, sysmac.h сам их
переопределит.

Чтобы не засорять сайт админа разным словесным мусором думаю
здесь уже видно, что в итоге получиться.


0   Спам
(12.05.2011)
12. Иван
После небольших поправок dpLib.pas (3.3):

const
{$NODEFINE BK_LEFTBOTTOM}
BK_LEFTBOTTOM = 0;
{$NODEFINE BK_LEFTTOP}
BK_LEFTTOP = 1;
{$NODEFINE BK_RIGHTBOTTOM}
BK_RIGHTBOTTOM = 2;
{$NODEFINE BK_RIGHTTOP}
BK_RIGHTTOP = 3;
{$NODEFINE BK_TOPLEFT}
BK_TOPLEFT = 4;
{$NODEFINE BK_TOPRIGHT}
BK_TOPRIGHT = 5;
{$NODEFINE BK_BOTTOMLEFT}
BK_BOTTOMLEFT = 6;
{$NODEFINE BK_BOTTOMRIGHT}
BK_BOTTOMRIGHT = 7;

(*$HPPEMIT 'static const System::Shortint _BK_LEFTBOTTOM = 0x0;' *)
(*$HPPEMIT 'static const System::Shortint _BK_LEFTTOP = 0x1;' *)
(*$HPPEMIT 'static const System::Shortint _BK_RIGHTBOTTOM = 0x2;' *)
(*$HPPEMIT 'static const System::Shortint _BK_RIGHTTOP = 0x3;' *)
(*$HPPEMIT 'static const System::Shortint _BK_TOPLEFT = 0x4;' *)
(*$HPPEMIT 'static const System::Shortint _BK_TOPRIGHT = 0x5;' *)
(*$HPPEMIT 'static const System::Shortint _BK_BOTTOMLEFT = 0x6;' *)
(*$HPPEMIT 'static const System::Shortint _BK_BOTTOMRIGHT = 0x7;' *)

{$NODEFINE CreateBalloonRgn}
function CreateBalloonRgn(bkSpace, bkNose, bkCorner, bkBend: Longint; bkCalc: Byte;
const bRect: TRect; nEdgeRoundW, nEdgeRoundH: Integer): HRGN; stdcall;

(*$HPPEMIT 'MFCSAPI(HRGN) CreateBalloonRgn(System::Longint bkSpace, System::Longint bkNose, System::Longint bkCorner, System::Longint bkBend, System::Byte bkCalc,' *)
(*$HPPEMIT ' const Windows::TRect &bRect, System::Integer nEdgeRoundW, System::Integer nEdgeRoundH);' *)

...

{$NODEFINE GetDllVersionInfoA}
function GetDllVersionInfoA(lpLibName: PAnsiChar; lpdvi: PDllVersionInfo): BOOL; stdcall;

(*$HPPEMIT 'MFCSAPI(BOOL) GetDllVersionInfoA(System::PAnsiChar lpLibName, PDllVersionInfo lpdvi);' *)

{$NODEFINE GetDllVersionInfoW}
function GetDllVersionInfoW(lpLibName: PWideChar; lpdvi: PDllVersionInfo): BOOL; stdcall;

(*$HPPEMIT 'MFCSAPI(BOOL) GetDllVersionInfoW(System::PWideChar lpLibName, PDllVersionInfo lpdvi);' *)

{$NODEFINE GetDllVersionInfo}
{$IFDEF UNICODE}
function GetDllVersionInfo(lpLibName: PWideChar; lpdvi: PDllVersionInfo): BOOL; stdcall;
{$ELSE}
function GetDllVersionInfo(lpLibName: PAnsiChar; lpdvi: PDllVersionInfo): BOOL; stdcall;
{$ENDIF}

(*$HPPEMIT '#ifdef UNICODE' *)
(*$HPPEMIT '#define GetDllVersionInfo GetDllVersionInfoW' *)
(*$HPPEMIT '#else' *)
(*$HPPEMIT '#define GetDllVersionInfo GetDllVersionInfoA' *)
(*$HPPEMIT '#endif' *)

Пока компилиться и Builder ошибок не выдаёт.


0   Спам
(09.05.2011)
11. Иван
Сейчас уже могу выделить существенную часть dpLib.pas (3.3):

type
{$NODEFINE PDllVersionInfo}
PDllVersionInfo = ^TDllVersionInfo;
{$NODEFINE TDllVersionInfo}
TDllVersionInfo = record
cbSize: DWORD;
dwMajorVersion: DWORD;
dwMinorVersion: DWORD;
dwBuildNumber : DWORD;
dwPlatformID : DWORD;
end;

(*$HPPEMIT 'struct TDllVersionInfo' *)
(*$HPPEMIT '{' *)
(*$HPPEMIT ' DWORD cbSize;' *)
(*$HPPEMIT ' DWORD dwMajorVersion;' *)
(*$HPPEMIT ' DWORD dwMinorVersion;' *)
(*$HPPEMIT ' DWORD dwBuildNumber;' *)
(*$HPPEMIT ' DWORD dwPlatformID;' *)
(*$HPPEMIT '};' *)
(*$HPPEMIT 'typedef TDllVersionInfo *PDllVersionInfo;' *)

{$NODEFINE GetDllVersionInfoA}
function GetDllVersionInfoA(lpLibName: PAnsiChar; lpdvi: PDllVersionInfo): BOOL; stdcall;

(*$HPPEMIT 'MFCSAPI(BOOL) GetDllVersionInfoA(PAnsiChar lpLibName, PDllVersionInfo lpdvi);' *)

{$NODEFINE GetDllVersionInfoW}
function GetDllVersionInfoW(lpLibName: PWideChar; lpdvi: PDllVersionInfo): BOOL; stdcall;

(*$HPPEMIT 'MFCSAPI(BOOL) GetDllVersionInfoW(PWideChar lpLibName, PDllVersionInfo lpdvi);' *)

{$NODEFINE GetDllVersionInfo}
{$IFDEF CPL_UNC}
function GetDllVersionInfo(lpLibName: PWideChar; lpdvi: PDllVersionInfo): BOOL; stdcall;
{$ELSE}
function GetDllVersionInfo(lpLibName: PAnsiChar; lpdvi: PDllVersionInfo): BOOL; stdcall;
{$ENDIF}

(*$HPPEMIT '#ifdef UNICODE' *)
(*$HPPEMIT '#define GetDllVersionInfo GetDllVersionInfoW' *)
(*$HPPEMIT '#else' *)
(*$HPPEMIT '#define GetDllVersionInfo GetDllVersionInfoA' *)
(*$HPPEMIT '#endif' *)

Некоторые части описываю сам, т.к. dcc32 не всегда создаёт верные данные в загаловочном файле.

Зависимость dpLib.pas: mfcs32.dll, mfcs32.lib (всё будет включенно).

Не будет модуля dpSysNot.pas в котором описан компонент TdpTrayBalloon. Идея была хорошей,
но слишком много проблем возникает c панелью задач.

TdpTrayIcon - небольшие улучшения. В частности можно будет указать размер структуры самому.

TdpTrayIcon.DataSize := NOTIFYICONDATA_V2_SIZE;

Как это в принципе и было в версии 3.1 (TdpMeleeTrayIcon, TdpXPTrayIcon, TdpLaterTrayIcon).


0   Спам
(05.05.2011)
10. Иван
dp7lib v. 3.3

+ C++Builder 5
+ C++Builder 6

+ C++Builder ?

:: dpLib.pas

function CreateBalloonRgn(bkSpace, bkNose, bkCorner, bkBend: Longint; bkCalc: Byte;
const bRect: TRect; nEdgeRoundW, nEdgeRoundH: Integer): HRGN; stdcall;
external mfcs32 name 'CreateBalloonRgn';

function GetNotifyStructData(hWnd: HWnd; nIndex: Longint; lpData: PNotifyStructData; cbSize: DWORD): BOOL; stdcall;
external mfcs32 name 'GetNotifyStructData';

function GetDllVersionInfoW(lpLibName: PWideChar; lpdvi: PDllVersionInfo): BOOL; stdcall;
external mfcs32 name 'GetDllVersionInfoW';

function GetNotifyIconRect(hWnd: HWnd; nIndex: Longint; var lprc: TRect): BOOL; stdcall;
external mfcs32 name 'GetNotifyIconRect';

function GetDllVersionW(lpLibName: PWideChar; var lpMakeVersion: Longint): BOOL; stdcall;
external mfcs32 name 'GetDllVersionW';

function GetCalcRect(const Bounds: TRect; nWidth, nHeight: Longint; var lprc: TRect; Flags: Word): BOOL; stdcall;
external mfcs32 name 'GetCalcRect';

function GetNotifyIconCount(hWnd: HWnd): Longint; stdcall;
external mfcs32 name 'GetNotifyIconCount';

function SquareInSquare(const Dst, Src: TRect): BOOL; stdcall;
external mfcs32 name 'SquareInSquare';

и т.д.

::


0   Спам
(22.04.2011)
9. Иван
dp7lib v. 3.3

Наконец добавил возможность установки на C++Builder.
Недавно появилась идея совместить своё творение с Lazarus.


0   Спам
(04.04.2011)
8. Иван
Какая вам версия понравилась больше ? 3.0, 3.1, 3.2. О ранних версиях я молчу, т.к. начинал писать ещё на 1 курсе инс. За плечами 2 года в учебном центре 'Дельта Инженеринг'. 7 лет прошло, а я так и не закончил пока инс. 2 раза отчисляли. Зато наград от инс. выше крыши, хоть туалет обклей. Параллельно инс. закончил 5 училище - сейчас спрашиваю себя для чего. Ну ладно, о чём это я. Планирую доработать версию 3.2 до 3.3. Версия 4.0 будет уже в новом качестве - будет больше возможностей. Вы наверно спросите зачем мне всё это - наверно я творческий челдобрек.

0   Спам
(04.04.2011)
7. Иван
TdpColourSpectr - мне так больше нравиться. Заодно пополняем новыми фразами английский язык.

0   Спам
(19.12.2010)
6. viso
>Исправлена ошибка в названии компонента TdpColourSpectr (недоставало буквы "u").
В разных вариантах английского слово color пишется по-разному, в американском как color, а в оригинальном как colour

1 2 »

Имя *:
Email:


Код *:

Copyright © 2008-2016 Программирование на Delphi для начинающих и не только

Полнота авторских прав на все материалы, опубликованные на сервере DelphiDevelop.ru принадлежит их авторам

Перепечатка материалов разрешается с указанием авторства и гиперссылки на первоисточник информации

Хостинг от uCoz

Автор проекта: Борисов Сергей

e-mail: save-x@yandex.ru

Связь с администрацией сайта