526

(36 replies, posted in Russian)

Хорошая и нужная программа. Но не хватает возможности продолжения чтения с того места, где остановился.


Оказалось, это легко исправить: открываем файл Sumatra\SumatraPDFSettings.txt и правим строки:

RememberOpenedFiles = true
RememberStatePerDocument = true

Теперь файл будет открываться на том месте, где его закрыли.

SNKip wrote:
k245 wrote:
SNKip wrote:

Еще хочу прикрутить к своей базе, web gui на FastAPI, чтобы заказчики могли сами отчеты смотреть, общий функционал уже сформирован.

Перестаньте угрожать )))  Добавьте пост по рекомендуемому формату, а для обсуждения проекта создайте отдельную ветку, пожалуйста smile

Как скажите! Просто я подумал, что если кому надо, то выложу! Если нет, ну и ладно.

Я так и сказал: надо, выкладывайте )))

SNKip wrote:

Еще хочу прикрутить к своей базе, web gui на FastAPI, чтобы заказчики могли сами отчеты смотреть, общий функционал уже сформирован.

Перестаньте угрожать )))  Добавьте пост по рекомендуемому формату, а для обсуждения проекта создайте отдельную ветку, пожалуйста smile

Конкурент или партнёр?


https://k245.ru/wp-content/uploads/2022/09/armresling.jpg


После удачного приобретения программы для документирования Dr.Explain я начал создавать файлы помощи для всех своих проектов, в том числе для ClassExplorer – “Справочник разработчика”. И тут мне вдруг подумалось: а не заменил ли мне мой новый инструмент создаваемую программу? Не превратится ли мой новый помощник в убийцу данного проекта?


Читать: https://k245.ru/mvdb/konkurent-ili-partnyor.html

530

(5 replies, posted in General)

Destiny wrote:

Good evening, I would like to include a font in the program so that it is an integral part of it, how to recognize it by default in the database.

Sorry, I didn't read the question carefully. You cannot change the default font in the application development system.

Unless you edit the MyVisualBD.exe file - replace the font name "Segoe UI" with a different one, but of the same length. This is a joke, I do not advise you to do this.

531

(5 replies, posted in General)

To use any font on Windows, it must be copied to the c:\Windows\Fonts\ folder anyway

You can do this by including the font in the program's installer files. Or make it a script when the application starts. That is, first check if there is such a file in the destination folder. If not, then copy it and restart the application so that when creating application forms, the desired font file is already in the c:\Windows\Fonts\ folder

Аутентификация


https://k245.ru/wp-content/uploads/2022/09/autentifikatsiya.jpg


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


Читать: https://k245.ru/mvdb/autentifikatsiya.html

533

(6 replies, posted in General)

So what is the actual question? Option 03 is working. If you are confused by the fact that each time an encode-decode is performed, add a check like this:

procedure Form2_OnShow (Sender: TObject; Action: string);
begin
  Form2.PageControl1.TabIndex := 0;   //** always show first tab
  if Form2.TabSheet2.TabVisible then
    Form2.tbDetail.Text := DecryptRC5(form2.tbDetail.text,form2.lblKey.caption);   //** decrypt
end;

procedure Form2_bSave_OnClick (Sender: TObject; var Cancel: boolean);
begin
  if Form2.TabSheet2.TabVisible then
    Form2.tbDetail.Text := EncryptRC5(form2.tbDetail.text,form2.lblKey.caption);   //**  encrypt
end;

Модульное лицензирование


https://k245.ru/wp-content/uploads/2022/09/kubiki.jpg


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


Читать: https://k245.ru/bez-rubriki/modulnoe-li … vanie.html

tov.Mayor wrote:

Предложение.
бесплатно.
"Расчет стоимости изделия для домашней мастерской" CNC_Calc

https://sun1-22.userapi.com/Xe6w1HIREPIcb9k9lLCOE70pi0AwqxWsYnIlaw/a1VJzZzY7z4.jpg

https://disk.yandex.ru/d/GPMN-1MOgv5F1Q

Не судите строго. я не программист smile

Судить не будут, только обсуждать smile Добавьте, пожалуйста, отдельную тему на форуме для обсуждения вашего проекта, а ссылку вставьте в ваш пост (который можно отредактировать).

536

(15 replies, posted in General)

sparrow wrote:
if AWinControl is TdbButton then
    TdbButton(AWinControl).TabOrder := ATabOrder
  else
  if AWinControl is TdbEdit then
    TdbEdit(AWinControl).TabOrder := ATabOrder
else
  if ...

TdbMemo
TdbCheckBox
TdbDateTimePicker
and ...

Аbsolutely right!

537

(5 replies, posted in General)

Hello All!


I confirm that the compilation of the project with each version is slower. This can be easily explained, since with each version the set of components and their properties that the framework supports is expanding. The assembly of the XML file with forms is very slow. I have a project that has over 50 forms. It compiles in about a minute, although my computer is quite powerful. There are also delays when launching applications if: 1) they have a lot of forms 2) they have a lot of drop-down lists that are connected to tables with a large number of records. The last point is due to the automatic execution of the UpdateDatabase procedure when the application starts.


P.S.I have a lifetime license, but it seems to me that there will be no new versions of MVDB.

538

(15 replies, posted in General)

As I wrote in a comment in the script, the WinControl_GetTabOrder() and WinControl_SetTabOrder() procedures need to be improved: they need to be written in ALL visual components that have the taborder property. I hope you can do this part of the work yourself.

539

(15 replies, posted in General)

When transferring controls, their taborder changes. I finalized the transfer procedure and added saving the taborder.


procedure AddScrollBox( AForm:TAForm;);
var
  SB:TScrollBox;
  i: integer;
  List:TStringList; // list for storing controls taborder
begin
  List := TStringList.Create;
  List.Sorted := True;
  SB := TScrollBox.Create(AForm);
  SB.Parent := AForm;
  SB.Align := alClient;
  for i := AForm.controlCount - 1 downto 0 do
  begin
    if AForm.Controls[i] <> SB then
    begin
      // for window controls remember their taborder
      if AForm.Controls[i] is TWinControl then
        List.AddObject( IntToStr( WinControl_GetTabOrder( TWinControl(AForm.Controls[i]) ) ), AForm.Controls[i]  );
      AForm.Controls[i].Parent := SB;
    end;
  end;
  // restoring the taborder
  for i := 0 to List.Count - 1 do
  begin
    WinControl_SetTabOrder(TWinControl( List.Objects(i) ), StrToInt( List.Strings(i) ) );
  end;
  List.Free;
end;

// since in My Visual Database for window controls forgot to implement the taborder property,
// we need two auxiliary functions that need to be supplemented with all the visual components used in the project

function WinControl_GetTabOrder(AWinControl:TWinControl):integer;
begin
  if AWinControl is TdbButton then
    result := TdbButton(AWinControl).TabOrder
  else
  if AWinControl is TdbEdit then
    result := TdbEdit(AWinControl).TabOrder
end;

procedure WinControl_SetTabOrder(AWinControl:TWinControl; ATabOrder:integer);
begin
  if AWinControl is TdbButton then
    TdbButton(AWinControl).TabOrder := ATabOrder
  else
  if AWinControl is TdbEdit then
    TdbEdit(AWinControl).TabOrder := ATabOrder;
end;

540

(5 replies, posted in Talks about all)

Комплект - некий набор из одинаковых или разных элементов.  И операции: комплектовать / разукомплектовать. Это если чисто складской вариант.  В торговле обычно используется понятие заказ. В принципе то же самое, но привязанное к контрагенту: покупателю или поставщику. В производстве операция комплектации анизотропная - собрали так собрали, на века )))

541

(5 replies, posted in Talks about all)

Это игра с элементами случайности, поэтому даже применение выигрышной стратегии не всегда будет приводить к выигрышу )))

542

(5 replies, posted in Talks about all)

pavlenko.vladimir.v wrote:

эта программа нaталкиевает меня на мысль о создании складского учета с приминением штрихкодов, вот только какую БД использовать ??

Имеется ввиду поддержка специальных принтеров для печати штрихкодов на наклейках?  И автоматический поиск по полю, в котором хранится штрих-код при нажатии кнопки сканера?

543

(5 replies, posted in Talks about all)

Я забыл удалить файл проекта. Но для подписчиков библиотеки "Визуальное программирование" (https://k245.ru/biblioteka) доступны исходники версии 1.0b и других опубликованных в моём блоге проектов.


Тип БД выбирается исходя из количества одновременно работающих с программой пользователей и необходимости в удаленном доступе:

  • SQLite - однопользовательская система, доступ к БД в пределах локальной сети.

  • MySQL - многопользовательская система, возможен доступ в глобальной сети интернет.


SQLite теоретически может обслуживать несколько пользователей, но во время записи данных происходит блокировка и остальные пользователи в этот момент могут получать сообщения об ошибке. Это надо учитывать и как-то обрабатывать.

ПРЕДЛОЖЕНИЕ
Mars GO! Игровая программа
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=7883&amp;download=0
БЕСПЛАТНО


Mars GO! - компьютерный вариант настольной игры, в которой игроки по очереди захватывают соседние клетки, выставляя новые блоки. Размер блока определяется случайно. Побеждает тот, кто сможет захватить больше клеток.


Скачать: https://drive.google.com/file/d/1np5ZQd … sp=sharing
Обсудить: http://myvisualdatabase.com/forum/viewtopic.php?id=7658

ПРЕДЛОЖЕНИЕ
Производство
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=9035&amp;download=0
БЕСПЛАТНО


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


Скачать: https://drive.google.com/file/d/1kaHzHM … sp=sharing
Обсудить: http://myvisualdatabase.com/forum/viewt … 172#p46172

546

(5 replies, posted in Talks about all)

Бесплатная программа "Производство" предназначена для учета материалов, используемых в производстве, а также готовой продукции.


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


Ключевые особенности


•  Партионный метод учета материалов и продукции
•  Мастер формирования документов списания в производство
•  Расчет себестоимости продукции по фактическим затратам
•  Учет остатков, в том числе по партиям
•  Учет прибыли
•  Быстрое формирования первичной документации (использование значений по умолчанию)


Операции, которые реализованы в программе:


•  Приход от поставщика
•  Возврат поставщику
•  Списание в производство
•  Приход из производства
•  Реализация покупателю
•  Возврат от покупателя
•  Внутреннее перемещение
•  Списание брака


Версия 1.0:  https://drive.google.com/file/d/1kaHzHM … sp=sharing


Возможна платная доработка программы по вашему ТЗ.

547

(15 replies, posted in General)

I don't see such an effect. It is possible that the traversal order is changing due to the addition of a scroll area. Please send a test project for analysis and solution.

Эй, люди, помогите! Вы мне нужны, поймите! Эй, мне нужен кто-нибудь.

The Beatles

https://k245.ru/wp-content/uploads/2022/09/help.jpg


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


Читать: https://k245.ru/mvdb/help.html

function IncYear(ADate:TDateTime; AValue:integer = 1):TDateTime;
// увеличить дату на год или несколько лет
var
  Year,Month,Day: Word;
begin
  DecodeDate(ADate,Year,Month,Day);
  Inc(Year,AValue);
  if (Month = 2) and (Day = 29) and (not IsLeapYear(Year)) then
    Day := 28;
  Result := EncodeDate(Year,Month,Day);
end;

Использование:


Form.my_date.Date := IncYear(form.my_date2.Date,2);
pavlenko.vladimir.v wrote:
k245 wrote:

Революция откладывается

Community Edition хорош.. но вот как раз , большое количество компонентов (которые нужно настроить для работы с БД) реально бесят ...

Зато их можно настраивать программно - это я про BDE. 


Я вот пока не вкурил, можно ли программно настраивать FireDAC + FireMonkey. В примере, который я разобрал, приходится для каждого обращения к базе (Чтение/Добавление/Редактирование/Удаление) писать свой запрос в отдельном компоненте. Такое себе удовольствие, особенно если поменяется структура данных.