Доброго дня. А зачем городить отдельную таблицу? Проще добавить ячейку с флагом "занято". При открытии флаг ставим, при закрытии - снимаем. Не забываем нагружать во всех клиентах добавить автообновление грида по таймеру (чтобы видеть изменения в основной таблице). Это при условии что нужно только знать что строка занята, а не кем занята.
2 2023-10-28 06:47:16
Re: Проблема TreeView с большим деревом (7 replies, posted in Russian)
K245, Sparrow, я Вам очень благодарен за помощь!
3 2023-10-26 06:42:45
Re: Проблема TreeView с большим деревом (7 replies, posted in Russian)
Компонент медленный, ничего не поделаешь.
Другие варианты:
1. Загружать по мере надобности. То есть сначала грузятся только узлы верхнего уровня. При клике на раскрытие узла подгружаются порция записей в дерево. Нужен скрипт для добавления записей в дерево.
2. Вместо компонента дерева (TdbTreeView) использовать компонент таблицы (TdbStringGridEx), загружать SQL-запросом, а вложенность эмулировать отступом (пробелами) в названии первой колонки. Также понадобится скрипты для сворачивания/разворачивания "узлов" путем изменения свойства видимости строк.
Можете подсказать как через скрипт заполнять дерево? Основная проблема это задать id записей. До этого совсем уж костыли приходилось делать через скрытые столбцы...
4 2023-10-25 19:29:35
Topic: Проблема TreeView с большим деревом (7 replies, posted in Russian)
Коллеги, добрый день!
Подскажите как решить такую проблему: у меня есть таблица (каталог) с глубиной ветвления порядка 4х вложений. Количество строк 13600.
Если я настраиваю компонент TreeView на отображение дерева, то получаю ОЧЕНЬ долгий запуск приложения.
Как ускорить процесс построения дерева в компоненте? Или, может быть, есть другой способ?
Прикладываю sql файл для создания соответствующей таблицы БД с большим количеством строк
5 2023-10-20 15:29:05
Re: сторонее приложение в форме (21 replies, posted in Russian)
Огромное спасибо! Идеально!
З.Ы. Я бы с удовольствием пошел от обратного, но у вкладок нет кнопочки "Закрыть".
Еще можно попробовать через postmessage наверно, но как создать свой обработчик не понятно (Application.OnMessage не доступен)
6 2023-10-20 12:00:29
Re: сторонее приложение в форме (21 replies, posted in Russian)
Перед открытием другой программы создается экземпляр TabSheet. В него вставляется окно вызываемой программы.
При закрытии вложенной программы нужно удалить вкладку. Пример связки закинул к посту.
В примере: Запускаем, идем на вкладку Проекты -> Жмем "плюс" -> Появляется новая вкладка. На той форме есть кнопка закрыть. Если ее нажать вкладка станет пустой, а надо ее удалить.
7 2023-10-20 11:00:54
Re: сторонее приложение в форме (21 replies, posted in Russian)
Для того чтобы закрыть вкладку в которую программа была встроена. Не оставлять же ее пустой.
8 2023-10-20 09:46:45
Re: сторонее приложение в форме (21 replies, posted in Russian)
Всем добрый день! Подскажите есть возможность поймать событие закрытия встроенного таким способом окна?
9 2023-09-08 04:37:15
Re: backup (11 replies, posted in General)
I think it's difficult to create with mvd on clear fast script. I prefer to create a python script and convert it to exe file. Then start script with OpenFile function.
10 2023-08-20 07:55:15
Re: Отправить текст в консоль windows (9 replies, posted in Russian)
Спасибо! Задача решена. Мне нужно было рабочее решение, не до элегантности.
Но пару вопросов добавлю:
1. Где нужно было искать код WM_CHAR? (Это для общего развития)
2. Можно как-то отловить окончание выполнения задачи в консоли?
11 2023-08-20 05:52:29
Re: Отправить текст в консоль windows (9 replies, posted in Russian)
У меня есть скрипт (уже скомпилирован в ехе), которому нужно при запуске передать параметры. Просто OpenFile(cmd) не срабатывает /cmd это строка содержащая путь к скрипиу и параметры
Если делаю OpenFile('cmd.exe'), то открывается консоль куда можно строку вставить из буфера и выполнить.
Собственно задача передать команду в консоль посимвольно. Примеры в интернете указывают что нужно в PostMessage использовать WM_CHAR вместо WM_KEYDOWN, но WM_CHAR в среде разработки нет (возможно можно нет алиаса текстового, но тогда нужено знать позицию WM_CHAR в массиве параметров (для WM_KEYDOWN позиция 255)
12 2023-08-19 19:43:10
Topic: Отправить текст в консоль windows (9 replies, posted in Russian)
Доброго времени суток!
Подскажите как мне отправить текст в консоль?
cmd := 'строка которую требуется отправить в консоль';
Wcmd := FindWindow('', 'c:\windows\system32\cmd.exe');
for i := 1 to Length(cmd) do
begin
PostMessage(Wcmd,WM_KEYDOWN,Ord(cmd[i]),0);
Sleep(50);
end;
//PostMessage(Wcmd,WM_KEYDOWN,VK_RETURN,0);
Этот код работает, но в консоль приходит не то, что я отправляю. Предполагаю что должен быть не WM_KEYDOWN, а WM_CHAR, но на такое решение ругается компилятор.
13 2023-06-30 18:52:02
Re: [Скрипт] Подключение к MySQL с помощью скрипта (22 replies, posted in FAQ)
Для себя на память, да и может быть кому пригодится: Если включено управление ролями, то блок подключения к основной базе MySQL следует выкинуть в отдельную процедуру, а ее вызов определить в главном блоке "begin - end."
Автозаполнение гридов и деревьев проще через цикл сразу после "UpdateDatabase(''); // to fill ComboBoxes":
for i:= 0 to fMain.ComponentCount-1 do
begin
if fMain.Components[i].ClassName = 'TdbTreeView' then TdbTreeView(fMain.Components[i]).dbUpdate;
if fMain.Components[i].ClassName = 'TdbStringGridEx' then TdbTreeView(fMain.Components[i]).dbUpdate;
end;
14 2023-06-23 04:02:28
Re: Картинка при запуске программы. (4 replies, posted in Russian)
Если правильно понял Ваш вопрос, то скорее всего это то что Вам нужно:
http://myvisualdatabase.com/forum/viewt … 613#p45613
15 2023-04-28 06:44:56
Re: Постройка таблицы с пересеченным встречей признака (14 replies, posted in Russian)
Возможно. Для начала составить запрос SQL и вывести его в TableGrid. Потом Обработать Grid скриптом для придания ему ножного оформления. Без структуры БД составление запроса - как гадание на кофейной гуще.
16 2023-04-28 06:42:32
Re: сохранение текста из ComboBox (12 replies, posted in Russian)
Событие ComboBox'а OnCloseUp имеет доступ к тому тексту, который был введен. Подхватываете его и обрабатываете скриптом (просто вносите новую строку в TableGrid или создаете запись в БД - это Ваше решение).
17 2022-12-22 07:28:38
Topic: Навигатор по сметным нормативам (0 replies, posted in Talks about all)
На данный момент разрабатываю для себя софт для составления расчетов и ведения строительных объектов.
Существующие на рынке продукты (та же гранд-смета) не устраивают по ряду причин.
Сейчас готов модуль для навигации по базе ФСНБ 2022 года с последними изменениями.
К расценке выводится состав работ, трудозатраты рабочих и механизаторов, машин и механизмов, потребность в материалах.
По ссылке можно получить доступ на версию с усеченной нормативной базой.
По полной версии базы - в личку.
18 2022-12-16 05:22:56
Re: Альтернативное чтение данных из BLOB (12 replies, posted in Russian)
Спасибо за ссылки!
19 2022-12-15 11:40:20
Re: Альтернативное чтение данных из BLOB (12 replies, posted in Russian)
SELECT * FROM <алиас базы>.<таблица>
то есть перед именем таблицы добавляется алиас базы данных.
если подключение было таким
ATTACH DATABASE 'c:\base2.db' as 'base2'
то выборка делается так
SELECT * FROM base2.mytable
Подскажите пожалуйста как быть если часть баз (или все) будут не SQLite, а MySQL?
20 2022-12-15 08:37:40
Re: Альтернативное чтение данных из BLOB (12 replies, posted in Russian)
indigen wrote:ОФФ. Как добавить строки в TreeView так, чтобы MVD видела id привязанных к ним записей (заполняла sqlValue)?
Нужно указывать свойство ID у строки:
tmpGrid.Row[tmpRow].ID := <id записи>
Это касается как таблиц, так и деревьев.
В таблицах проще, там нужно что бы в выборке был столбец id и она его сама по строкам раскидывает, а вот деревья - не хотят...
За подсказку огромное спасибо!
21 2022-12-15 04:55:58
Re: Альтернативное чтение данных из BLOB (12 replies, posted in Russian)
Подскажите, как указывать из какой базы делается выборка?
У меня в проекте логически требуется подключение к 3 базам, 2 из которых не содержат файлов, поэтому проблема BLOB тут не поднимется, а элементы форм все равно заполняются программно.
ОФФ. Как добавить строки в TreeView так, чтобы MVD видела id привязанных к ним записей (заполняла sqlValue)?
22 2022-08-20 20:26:01
Topic: Заполнение TreeView скриптом (0 replies, posted in Russian)
Доброго времени суток!
Подскажите пожалуйста как заполнить скриптом компонент TreeView?
В таблице базы есть поля id, Code, Caption, ParentID
23 2022-08-16 17:53:52
Re: Счетчик (18 replies, posted in Russian)
Про триггеры слышали? Вот они как раз для этого.
Или на крайний случай хранимая процедура - её проще отлаживать
Про триггеры слышал что они есть, а вот как их есть - не знаю. Для меня потолок это JOIN и вложенный SELECT.
24 2022-08-16 17:51:30
Re: Как купить лицензию? (22 replies, posted in Russian)
Поддерживаю по всем пунктам.
Решаю на своём уровне:
1) делаю "Справочник разработчика" - база знаний по My Visual Database.
2) использую OLE MSXML2.DOMDocument
3) пишу кучу скриптов
4) думаю над своим генератором PHP-кода .
1 - видел, но еще не пробовал. Идея мне нравится. Сам собираю потихоньку расчетно-сметный софт для себя на основе открытых данных минстроя.
2 - без нормального туториала для меня сложно. Проще на питоне обработать сырые данные и загрузить их в базу
А в целом было бы круто иметь возможность самим накидывать функционал MVD с помощью плагинов или модулей. (это бы наверное решило часть проблем)
25 2022-08-16 04:11:15
Re: Счетчик (18 replies, posted in Russian)
Я думаю тут выход один:
1) Открываешь форму -> проверяешь переменную Action -> если == 'NewRecord', то генеруриуешь новое значение счетчика и сохраняешь запись без закрытия формы.
2) Узнаешь id вновь созданной записи и присваиваешь его кнопке сохранения (чтобы новую запись не создала, а отредактировала нужную) или сохраняешь все через скрипт.