Стильно и скромно

https://k245.ru/wp-content/uploads/2022/08/stilno-i-skromno.jpg


В новой статье рассматривается вариант выбора стиля через стандартное окно настроек.


Читать: https://k245.ru/bez-rubriki/stilno-i-skromno.html

P.S. Вместо TTabControl можно использовать TdbPageControl, и внешне они ничем не отличаются. Но зачем тогда TTabControl?

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=8986&download=0

Просматривая доступные в MVDB компоненты, увидел TTabControl. Неплохая вещь, если нужно создать кнопки в виде закладок или несколько зависимых друг от друга кнопочек. Вот только на мой взгляд эта штука сейчас абсолютно бесполезная, так как невозможно назначить обработчик на событие onChage, чтобы отслеживать нажатия на эти самые вкладки/кнопки.

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=8986&download=0


Может, у кого-нибудь есть идея, как "оживить" этот компонент?

579

(3 replies, posted in Russian)

То, что вы хотите менять, называется иконкой приложения. Ярлыки программы бывают в папках или на рабочем столе. ( https://ru.wikipedia.org/wiki/Ярлык_(компьютер) )

Clarification required. If you want to copy a line that ends with a CR, then it is possible: just find the position of this character and copy the fragment.


copy( Form3.RichEdit1.Text, 1, pos(chr(13), Form3.RichEdit1.Text ))

But if we are talking about the displayed line, which was formed as a result of the text wrapping algorithm, then nothing will come of it.


http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=8983&download=0

581

(2 replies, posted in Russian)

TdbStringGridEx(Sender)

Производственный мастер


https://k245.ru/wp-content/uploads/2022/08/master2.jpg


Настало время для серьёзного разговора об алгоритмах и расчетах, которыми учет на производстве отличается от учета в магазине или складе. Но, прежде чем мы приступим к изучению теории и практики учёта, необходимо закончить общие темы функционирования приложения.


Читать: https://k245.ru/mvdb/proizvodstvennyj-master.html

583

(36 replies, posted in Russian)

pavlenko.vladimir.v wrote:
k245 wrote:

Очень нужная программа, благодарю! Можно будет навести порядок в библиотеке ))

Есть небольшое замечание: главное окно не меняет размер, из-за этого не видно всех кнопок на панели с книгой:

Перепаковал, попробуйте..
http://www.fileworld.pavlenkovv.ru/BookLibSetup.exe

Да, теперь всё двигается, но при установке обновления сносится база и вся библиотека. Впрочем, как я понимаю, это пока не обновление, а 1-я версия.

Alexandr wrote:

Пробовал так сделать, но мне выдает ошибку 1 values for 3 columns......я впринципе понимаю что она означает, но как ее исправить не пойму...


Ошибка означает, что в запросе в секции полей указаны три поля, а в секции значений имеется только одно значение. Должно быть три. То есть ваш SQL-запрос неверный.

585

(36 replies, posted in Russian)

Ещё немного поворчу smile


1. Нестандартное место инсталляции программы. Это, как я понял, из-за того, что не используется встроенный в MVDB механизм хранения базы и файла настройки отдельно от программы. Не критично, учитывая, что у программ, созданных в MVDB, нет возможности использовать общие DLL или другим способом оптимизировать хранение проектов.
2. Копирование файлов в папку хранилища. Допустимо, при условии, что будет какая-то настройка места хранения. Сейчас всё записывается в AppData/Roaming.У меня система на SSD, я даже "Мои документы" храню на обычном диске )))
3. Путь к файлам библиотеки увеличивается за счет создания одноименной папки. Этот момент непонятен.(Предположение: в этой же папке хранится пользовательская картинка для обложки?)

586

(36 replies, posted in Russian)

Очень нужная программа, благодарю! Можно будет навести порядок в библиотеке ))

Есть небольшое замечание: главное окно не меняет размер, из-за этого не видно всех кнопок на панели с книгой:

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=8972&download=0

sparrow wrote:

Да, есть такое с третьим аргументом.

Но я в шутку писал о другом, использовать SQLExecute с запросом для вычисления МИН и МАХ


Кстати здесь http://myvisualdatabase.com/forum/viewtopic.php?id=7016 примеры для массива.

Шок-контент!  То есть можно переопределить встроенные функции (специально или случайно), а MVD даже не поморщится и даже предупреждения не выдаст...  Даже не знаю, баг это или фича smile

В Delphi у этих функций должно быть только два аргумента,  Но вы правы:,

  ShowMessage( min (1,20,15) );

не выдаёт ошибки при компиляции, а при выполнении - всё тот же ноль....


Что делать ясно - писать свои функции. Обидно за потерянное время, когда приходится искать ошибки в самых невероятных местах.

Данные функции должны возвращать минимальное и максимальное значение, однако они всегда возвращают 0

ShowMessage( min (1,20) );
ShowMessage( max (1,20) );

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

Это прекрасно, однако не могу зайти на wix.com: перебрасывает на ru.wix.com, а потом соединение сбрасывается

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=8964&download=0

Например, так:

procedure frmMain_btnCreateKey_OnClick (Sender: TObject; var Cancel: boolean);
begin
  frmMain.edtKey.Text := StrToMD5 ( frmMain.edtHWKey.Text + frmMain.edtSecretWord.Text )
end;

Глава 2. Форма №2.


Активная защита


Защита проектов My Visual Database базируется на том факте, что для нормальной работы приложения достаточно файла script.dcu, тогда как файл с исходниками script.pas должен оставаться у разработчика. Отсюда следствие:
Если в проекте нет скриптов, то его невозможно защитить.


Беззащитными остаются формы и отчёты: их легко модифицировать штатными средствами My Visual Database, даже если вы исключите из комплекта поставки файл проекта *.vdb, который лишь указывает, где находятся остальные файлы. База данных SQLite так же не имеет встроенных механизмов защиты. Отсюда второе следствие:
Всё, что вы хотите защитить, должно находиться в скриптах.


На практике в большинстве случаев будет достаточно ограничить количество запускаемых экземпляров копий программы, привязав лицензию к аппаратной части компьютера. С помощью скриптов мы можем узнать MAC-адрес сетевой карты и серийный номер жёсткого диска. Этих сведений хватит для формирования идентификатора рабочего места (HardwareKey). С помощью несложного (но надёжного на предмет взлома) алгоритма HardwareKey преобразуется в RegistrationKey, который передаётся конечному пользователю в процессе регистрации. Для Shareware проектов это необходимо сделать до истечения пробного периода, для коммерческих проектов - до начала эксплуатации.


RegistrationKey и сведения о владельце можно хранить в файле settings.ini, чтобы не заморачиваться с реестром. Впрочем, с файлом settings.ini тоже могут возникнуть заморочки, например, если вы будете использовать инсталлятор и размещать проект в папке Program Files.


Процедура проверки ключа регистрации вычисляет хэш строкового выражения, которое включает в себя HardwareKey и секретное слово:


Скачать  книгу "Визуальное программирование" с исходниками проектов: https://docs.google.com/document/d/1lU4 … uxfULXjcM/

594

(9 replies, posted in Russian)

pavlenko.vladimir.v wrote:

но почему нужно для каждой строки создавать отдельный набор объектов?
это как-то связано с сылками на эти объекты ? или происходит присвоение объекта конкретному объекту?

Ответить на это мог бы автор компонента или автор MVDB (если у него есть доступ к исходникам).
А мы может только догадываться smile

595

(9 replies, posted in Russian)

А вы проверяли работоспособность грида, если у разных записей ссылка на один объект-картинку? У меня этот момент вызывает сомнение:

frmMainBook.tgListAllBook.Cell[8,i].ObjectReference := imgDel;

Почему-то в других примерах создается отдельный графический объект для каждой строки.

596

(8 replies, posted in General)

Programs created by MVDB do not force the screen resolution. In order to make it convenient to work with the application in a certain range of screen resolutions, various methods of designing the application interface are used. Or are we talking about third-party applications?

597

(9 replies, posted in Russian)

vovka3003 wrote:

Можно попробовать обратиться в "битву экстрасенсов". Они [экстрасенсы] могут увидеть скрытый код, и если у них есть навыки программирования - дать четкий ответ или даже астральным способом ["по удаленке"] подправить там что-нибудь...

P.S. Когда уже люди научатся правильные вопросы задавать..?

почувствовал себя экстрасенсом )))

598

(9 replies, posted in Russian)

Слайдер создаётся скриптом, на событии onChange, Вот там и срывайте ))) Но скрыть какие-то элементы для одних записей и оставить для других вы не сможете.


P.S. Для решения такой задачи нужен рукотворный компонент отображения. Например скролбокс, внутри которого находятся панели. Каждая панель соответствует записи в таблице.  Панели генерить скриптом.

599

(4 replies, posted in Russian)

procedure Form1_OnShow (Sender: string; Action: string);
begin
  Form1.OnMouseWheel := @OnMVDMouseWheel;
end;

procedure OnMVDMouseWheel(Sender: TObject; isShift, isAlt, isCtrl: boolean; WheelDelta: Integer; X, Y: Integer; var Handled: Boolean);
begin
  if WheelDelta > 0 then Form1.VertScrollBar.Position := Form1.VertScrollBar.Position - 4 else Form1.VertScrollBar.Position := Form1.VertScrollBar.Position + 4;
end;

600

(22 replies, posted in Russian)

indigen wrote:

2 - без нормального туториала для меня сложно. Проще на питоне обработать сырые данные и загрузить их в базу

когда закончу описание программы по учету производства, сделаю статью по XML и про файл forms.xml )))