Обзор библиотеки Новая Навадвипа (NewNavadvipa) для С++Строителя 10.4.2

Харе Кришна, всем!
Примите, пожалуйста, мои поклоны!
Слава Шрмле Прабхупаде!

Библиотека Новая Навадвипа расширяет стандартную библиотеку VCL (Visual Comonent Library). В процессе работы обнаружены некоторые недостатки и ошибки C++Builder 10.4.2, а также появились несколько пожеланий для будущих версий C++Builder.
Прежде всего я хоту поблагодарить руководство и работников Эмбаркадеро за то, что выполнили некоторые мои пожелания, которые я написал в опросе пользователей C++Builder.
1. Это появление компонента TButtonedEdit! Но мне нужен TButtonedEdit со свойством EditMask! Для этого он должен наследоваться от TCustomMaskEdit, а не от TCustomEdit. Поэтому я наследовал свои компоненты TNNVDBComboBox и TNNVDBComboBoxDateTime от TDBEdit! В будущем я хочу поменять наследование от TDBEdit на наследование от TDBButtonedEdit. Кстати компонента TDBButtonedEdit не существует в версии 10.4.2!
2. Это возможность одновременного редактирования даты и времени в компоненте TDateTimePicker, и также использования CheckBox вместе с ним. CheckBox это хорошо, но он слишком прост для ясного определения периодов из одной или двух дат. Поэтому я сделал аналог CheckBox в компонентах TNNVComboBoxDateTime и TNNVDBComboBoxDateTime в виде текста “>=”, “<=", "=", "". Это очень наглядно для определения периодов, например:
X <= Date1 and Date2 >= X
X >= Date1 and Date2 <= X

Вот что не так и то, что хотелось бы увидеть в будущих версиях C++Builder.
1. Невозможность писать компоненты для Delphi на C++Builder. Это значит, что усилия C++ программистов становятся напрасными! Это подобно тому, что пар от парового двигателя уходит в свисток, а не используется для движения локомотива! Как то ведь вы получаете файлы *.Bpl на C++Builder. Нужно дело довести до конца!
2. Свойство Hint имеет однострочный редактор, а нужен многострочный редактор (multiline) – это же очевидно!
3. Чтобы наследовать TForm или TFrame из библиотеки, его нужно явным образом добавить в приложение, а хотелось бы вот какой вариант – функции RegisterForm() и RegisterFrame, которые подобны функции Register() для регистрации обычных компонент.
4. При использовании TForm или TFrame из библиотеки заработала хорошо только static link приложения, а link with runtime package- не работает с библиотекой NewNavadvipa!
5. В design time нельзя присвоить события OnGetFiler, OnGetDialogForm. Приходится делать это в run time!
coRes->OnGetFiler = coResGetFiler;
DUserRole->OnGetDialogForm = RolesGetDialogForm;
Хотя все определено корректно!
typedef PACKAGE void __fastcall( __closure *TNNVGetFiler ) ( System::TObject *Sender, TNNVTextStream *&Filer
);
typedef PACKAGE void __fastcall( __closure *TNNVOnGetDlgForm )( System::TObject* Sender, TCustomForm *&fm );
Вообще с автоматической генерацией событий в библиотеке NewNavadvipa творится полный кошмар и постоянно приходится изменять генерированный C++Builder текст методов событий вручную и затем присваивать события в Инспекторе Объектов!
6. Нельзя свободно менять позиции TField, которые вложены в поле TADTField в редакторе столбцов компонента TDBGrid! При всем при том, что сама компонента TDBGrid позволяет менять позиции этих столбцов в run time совершенно свободно! Это выглядит просто нелепо!

7. Нельзя передавать в процедуры и функции PostgreSQL параметры типа массив и объект. Это очень и очень снижает ценность FireDAC. Я раньше пользовался коммерческими компонентами Direct Oracle Acces – так вот там полностью была возможность передавать и принимать любые объекты Oracle!
8. Невозможность работы в C++Builder 10.4.2 Community Edition компилировать программы для Windows 64 bit не дает возможность использовать родную клиентскую библиотеку PostgreSQL – libpq.dll. Приходится использовать её версию из ODBC драйвера, который не обновляется уже несколько версий PostgreSQL.
9. Хорошо бы иметь возможность писать Web приложения на C++Builder прямо сразу “из коробки”. Все сторонние Веб-компоненты все равно требуют Delphi и не работают с C++Builder.

Теперь я хочу обратиться к руководителям и работникам компании Embarcadero!

Расскажу кратко о тех новшествах библиотеки NewNavadvipa, которые вы можете взять себе и внедрить их в C++Builder или даже также и в Delphi, при условии либо переписывания кода на Паскаль, либо сделать возможность приёма Delphi компонентов, которые написаны на C++Builder.

1. Очень полезный класс
class PACKAGE TNNVTextStream : public TStream
который позволяет очень легко сохранять в потоке и считывать из потока различные типы данных. Например:
coRes->Filer->WriteFont( Font );
coRes->Filer->WriteByte( AlphaBlendValue );

coRes->Filer->ReadFont( Font );
AlphaBlendValue = coRes->Filer->ReadByte();

2. На нем основан компонент TNNVConfig, который позволяет сохранять данные программы между её различными запусками! Можно сохранять настройки в файле, а можно сохранять настройки в базе данных! Например можно сохранить настройки ширины каждого столбца компонента TNNVDBGrid очень просто:
dgUsers->LoadFromFiler( coRes->Filer );

dgUsers->SaveToFiler( coRes->Filer );

А сам компонент TNNVDBGrid может вызвать диалог настройки самой себя пользователем прямо в run time!
3. Очень полезное расширение возможностей TForm – добавление метода ShowDialog. Этот метод позволяет обойтись без метода ShowModal очень во многих случаях. Как только диалоговая форма теряет фокус – она автоматически закрывается! И это очень нравится пользователям.
4. Вы можете добавить две новых кнопки в TDBNavigator – это кнопка “Запомнить строку” и кнопка “Установить поля строк”. Как это работает, лучше показать на картинках, чем описывать. Ну словами так – запомнить строку. Потом выбрать одну или несколько строк в компоненте TDBGrid и установить те поля, которые выбрал пользователь в специальном диалоге-окне теми значениями, которые содержит та первая строка, которая была запомнена при помощи первой кнопки! Очень полезная возможность!
5. TNNVDBSearchDialog – удобный поиск по базе данных.
6. TDBTreeView – очень полезный компонент.
7. Также есть и другие компоненты.

8. Можете взять меня на удаленную работу.
9. Исходный код можно найти тут – https://github.com/Navadvipa-Chandra-das/NizhnyayaNavadvipa .

10. Приложение “Джая Шрила Прабхупада” – может занять место в ряду “Samples” приложений компании Embarcadero! Вот оно – https://github.com/Navadvipa-Chandra-das/JayaShrilaPrabhupada ! Только нужно учесть, что GitHub портит кодировку Ansi русских букв, которые сохраняет C++Builder Text Editor, поэтому там есть каталог Archive, где есть исходные тексты в архиве!
Пользователь “Navadvipa Chandra das”!
Пароль “Hare_Krishna” !
Пароль для PgAdmin “SNixk_ExcynhiL”!

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

Харе Кришна!

С уважением, Навадвипа Чандра дас.

Поделиться

Leave a Reply

Your email address will not be published.

48 − = 43