tcoton wrote:

This project looks promising if it is an evolution of MyVisual Database, would you implement the form auto-resizing depending on user screen resolution? It really is a bummer to have a fixed resolution in modern apps.

I agree with you: the form needs to be scalable. But I wouldn't rely on the default scaling system and the form's scaled property. I have some experience with scaling forms in My Visual Database, and the scale can be scaled up or down. This is a good reason for the next app update, thank you for your feedback!

pavlenko.vladimir.v wrote:
dazzleqq wrote:

Подскажите, может быть знаете. Как в PHP сделать проверку пароля при авторизации?

тут смотрите
https://pavlenkovv.ru/2022/03/29/%d0%be … %b1%d0%b4/

Не смог коммент оставить, пишет, что не все поля заполнены, но я вижу только два поля

md5(password+username)
Отсюда интересное следствие - после редактирования имени пользователя его пароль становится недействительным ))

0. Начать транзакцию
1. Создать новую таблицу, в которой есть новое поле, но нет старого
2. Скопировать данные из старой таблицы в новую
3. Удалить старую таблицу
4. Переименовать новую таблицу в имя старой таблицы
5. Завершить транзакцию.

Транзакцию можете не трогать, если в монопольном доступе работаете. Копировать нужно не базу, а таблицу, одним SQL-запросом INSERT ... SELECT (см. пример)

TColorEdit
https://k245.ru/wp-content/uploads/2023/10/kraski.jpg
My Visual Database. DIY color editing component TColorEdit. Display color value in grid.
https://k245.ru/en/mvm-en/tcoloredit-2.html

Important Details
https://k245.ru/wp-content/uploads/2023/10/detali.jpg
A typical task of data representation is to create Master-Detail relationships, that is, when one object is a detail of another.
https://k245.ru/en/mvdb-en/important-details.html

Switch
https://k245.ru/wp-content/uploads/2023/10/Pereklyuchatel.jpg
Data Keeper. Visual component for displaying logical data with your own hands.
https://k245.ru/en/mvdb-en/switch.html

A significant set
https://k245.ru/wp-content/uploads/2023/10/tsvety.jpg
Data Keeper. Editing multiple values for an object property: components and data structures.
https://k245.ru/en/mvdb-en/a-significant-set.html

Для открытия окон используйте обработчик события у таблицы OnCellDoubleClick (Sender: TObject; ACol, ARow: Integer);
Анализируйте ACol (номер колонки) и открывайте нужные окна:

case ACol of
1: Form1.Show;
2: Form2.Show;
3: Form3.Show;
else Form4.Show; 
end;

Parents and children
https://k245.ru/wp-content/uploads/2023/10/rodovoe-derevo.jpg
Inheritance of class properties; displaying child objects along with their parents; adding the "Date" type.
https://k245.ru/en/mvdb-en/parents-and-children.html

По второму вопросу: данные загружаются не "в запись", а "в поле". Ответ - в MVDB нет компонента, который бы поддерживал запись нескольких файлов в одно поле. Более того, такой возможности нет и на уровне СУБД. Но, скорей всего, вам это и не нужно )))))


Вы вопрос правильно сформулируйте.


Сомневаюсь, что вы хотите физически помещать видеофайлы в базу данных, Может, все таки речь идет о хранении ссылок на файлы и формирование плейлиста для воспроизведения? Ежели вам надо-таки файлы в базу кидать, причем мышкой, то это, конечно, возможно. Есть обработчики кидания (onDropFiles), следовательно, можно написать соответствующий скрипт. Но вряд ли вы этим скриптом сможете напрямую объединить видеофайлы, разве что задействовать какую-то стороннюю утилиту конвертации видео.

162

(5 replies, posted in General)

tcoton wrote:

I know I have seen it on this forum but I cannot find it anymore, I am looking for the correct syntax to use in the filter of a table grid if we want to use one of the existing form text field as a condition.

In my case, I want to use the field "form1.EditPCName.txt" as one of the condition to dig into a log table:

old_pc_name="{EditPCName}" or New_PC_Name="{EditPCName}" and src="Computers"

This does not return any results as it does not retrieve any value for {EditPCName}

The names of the input fields are valid in the SQL request, which is written in the button with the SQL-query action.
In the filter, computational fields are written in curly braces.

A repository for everything
https://k245.ru/wp-content/uploads/2023/10/sklad.jpg
Data Keeper - experimental project of object-oriented data storage in relational DBMS
https://k245.ru/en/mvdb-en/a-repository … thing.html

164

(17 replies, posted in General)

pavlenko.vladimir.v wrote:
jrga wrote:

I don't know if "dynamic query" is the best name for this project. I like programming, but my background is different. I created it to be integrated into my applications, which can be activated with Ctrl-9. The goal is to have a feature in the application itself to eventually resolve end-user issues by checking tables, executing custom SQL statements in real time, etc. If anyone wants to improve it, please share the improvements. It was made with MVD 5.6

обнаружен вирус
virus detected

Та же фигня - защитник винды не даёт скачать....

sparrow wrote:

Можно и так попробовать
Пример

Какая прелесть!  Рекурсивные запросы, IN (SELECT...)  - и всё работает быстро. Возьму себе на вооружение вместо интервальных деревьев...

SQLiteStudio вам в помощь. Заходите и меняете что вам там нужно )))
https://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=10004&download=0

https://sqlitestudio.pl

TColorEdit
https://k245.ru/wp-content/uploads/2023/10/kraski.jpg

Компонент для редактирования цвета своими руками.

https://k245.ru/mvm/tcoloredit.html

https://k245.ru/wp-content/uploads/2023/10/image-20.png

Sergynhik wrote:

Просьба подсказать знающих пользователей.

Такая ситуация. В добавлении пользователей изменил имя Администратора и теперь при заходе пишет неверный логин или пароль. Можно как-то восстановить пароль или скинуть его, сейчас нет возможности заходить в программу под админом, только под менеджером.

Какой тип СУБД?

indigen wrote:

Можете подсказать как через скрипт заполнять дерево? Основная проблема это задать id записей. До этого совсем уж костыли приходилось делать через скрытые столбцы...

Присвоить ID:


ATree.Row[tmpSubRow].ID := tmpID;

Вот пример кода.

 // рекурсивная процедура добавления дочерних контролов
  procedure AddControlOnTree( AControl:TWinControl; ARow: integer; );
  var
    j: integer;
    tmpSubRow: integer;
    tmpControl: TControl;
    tmpControlList: TStringList;
  begin
    // перед загрузкой в дерево сделаем сортировку
    tmpControlList := TStringList.Create;
    tmpControlList.Sorted := true;
    for j:=0 to  AControl.ControlCount - 1 do
    begin
      tmpControl := AControl.Controls[j];
      tmpControlList.AddObject( tmpControl.Name, tmpControl );
    end;
    // загрузка отсортированного списка
    for j:=0 to  tmpControlList.Count - 1 do
    begin
      tmpControl := TControl(tmpControlList.Objects[j]);
      ATree.AddChildRow( ARow, crLast );
      tmpSubRow := ATree.LastAddedRow;
      ATree.Row[tmpSubRow].ID := tmpID;
      inc(tmpID);
      ATree.Cells[0,tmpSubRow ] := tmpControl.Name;
      ATree.Cells[1,tmpSubRow ] := tmpControl.ClassName;
      ATree.Cells[2,tmpSubRow ] := GetControlCaption(tmpControl);
      // если у контрола есть дочерние, то загрузить их тоже
      if tmpControl is TWinControl then
        AddControlOnTree(TWinControl( tmpControl ), tmpSubRow );
    end;
    tmpControlList.Free;
  end;

Это часть процедуры procedure LoadObjectData ( ATree: TdbTreeView;); -  загрузить в дерево список контролов приложения

Полные исходники здесь: https://k245.ru/software-ru/clearapp.html

Компонент медленный, ничего не поделаешь.


Другие варианты:


1. Загружать по мере надобности. То есть сначала грузятся только узлы верхнего уровня. При клике на раскрытие узла подгружаются порция записей в дерево. Нужен скрипт для добавления записей в дерево.


2. Вместо компонента дерева (TdbTreeView) использовать компонент таблицы (TdbStringGridEx), загружать SQL-запросом, а вложенность эмулировать отступом (пробелами) в названии первой колонки. Также понадобится скрипты для сворачивания/разворачивания "узлов" путем изменения свойства видимости строк.

Важные детали
https://k245.ru/wp-content/uploads/2023/10/detali.jpg
Типовой задачей представления данных является создание отношений Master-Detail, то есть когда один объект является детализацией другого.
https://k245.ru/mvdb/vazhnye-detali.html

pavlenko.vladimir.v wrote:
vovka3003 wrote:

А что не получается-то..?

в каждом индексе должен быть свой цвет
https://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=9994&download=0

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

Да это я понял.... но не теряю надежды: вдруг кому-нибудь удастся обуздать прозрачность в PNG )))

Есть задача перекрашивать черно-белые PNG с прозрачностью в цветные. Но в MVDB для этого кое-чего не хватает у TPNGImage.  Если бы получилось, то стили автоматически бы получали картинки для кнопок в нужной цветовой тональности. А то сейчас приходится мудрить и делать копии разных цветов....

pavlenko.vladimir.v wrote:

...даже в png перевожу,..

Вопрос по коду:

var
ImageList:TImageList;
bmp:TBitmap;
png: TPngImage;
begin
  bmp := TBitmap.Create;
  bmp.Canvas.Brush.Color := clBlack;
  png := TPngImage.Create;
  png.Assign( bmp );

То есть в результате получается PNG с прозрачностью? Если да, то как ей управлять попиксельно?
Но что-то мне подсказывает, что получаются PNG в стиле программы Paint - без прозрачности.