vovka3003 wrote:

"Сторонний exe" вывести в форме нельзя. Можно вывести окно с помощью FindFindow и SetParent.

Доброго всем дня.
Пытаюсь прикрепить к панели формы "стороннее приложение", используя скрипт:

      h := 0;
      Max := 20;
      Repeat
          Sleep(100);
          h := FindWindow('', 'ip_player'); // поиск окна стороннего приложения
          Dec(Max);
      until (h <> 0) or (Max = 0);

      // перемещение плеера в форму
      if h <> 0 then
      begin
          SetParent(h, main.Panel1.Handle);  // прикрепляю к форме
          SetWindowPos( h, 0, -8, -29, 821, 645, 0); // set position x=10, y=10  SWP_NOSIZE
          Application.ProcessMessages;
         showmessage('прикрепил'+inttostr(h));   // тестовое сообщение для проверки
      end else showmessage('плеер не найден');

Не на всех компьютерах происходит прикрепление окна приложения к форме с первого раза, хотя скрипт окно находит, так как сообщение 'прикрепил'+хэндл выводится. Если скрипт выполнить повторно, окно к панели формы прикрепляется. Что не так с кодом?

PS: не смог встроенной функцией медиаплеера вывести RSTP поток с IP камеры, поэтому пришлось написать на Delphi приложение - плеер, может кто подскажет, можно ли встроенными функциями MVD вывести поток?

Правильно понимаю, что GetFileCreationTime - показывает время создания существующего файла, а Created File Time - создаёт файл и сохраняет в переменную время создания? Тогда вопрос - если файл уже существует, как сработает функция Created File Time? Старый файл удалит и создаст новый, или нет?

PS: в теме не ту функцию указал, вопрос был про функции GetFileCreationTime и CreatedFileTime.

Добрый день.
Чем отличаются функции CreatedFileTime и GetFileLastWriteTime?
Какую лучше использовать для того, чтобы узнать время последней записи в файл?

Спасибо, разобрался.
Поторопился вопрос задать, потом только в справочник функций заглянул...

Добрый день.
Подскажите, как сохранить на диск изображение по IP адресу.
Получаю изображение запросом HTTPGet('http://<IP адрес>/jpg/image.jpg'), как его сохранить на компьютере?

56

(187 replies, posted in General)

k245 wrote:
function DLL:variant;
    var DW:variant;
begin
    DW := CreateOleObject('DynamicWrapperX');
    DW.Register('kernel32.dll', 'Beep', 'i=uu');
    DW.Register('user32.dll', 'GetSystemMetrics', 'i=l','r=l');
    // Функции вашей DLL
    result := dw;
    DW := nil;
end;

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
 var i : integer;
begin
  dll.Beep(800,1000);
  ShowMessage('Монитор: ' +
  IntToStr(dll.GetSystemMetrics(0))+ 'x' +
  IntToStr(dll.GetSystemMetrics(1)));
end;

begin
end.

Можно ли передать в функцию DLL тип данных список TStringList, например так:

..... //создаём объект библиотеки и регистрируем функции...
//создаём список
var
  names  : TStringList;

begin
  names := TStringList.Create;
  names.CommaText := 'Neil=45, Brian=63, Jim=22';

any_dll.any_func(names);   // пробуем вызвать функцию внешней библиотеки и передать ей список names

В оригинале кода функции передаётся тип данных RECORD, но MVDB не поддерживает этот тип.

57

(1 replies, posted in Russian)

Доброго дня!
Подскажите, чем в MVDB можно заменить тип данных RECORD, я так понял этот тип не поддерживается в MVDB.
Можно ли заменить на TStringList для передачи в процедуру или функцию?

58

(0 replies, posted in Russian)

Добрый день.
Возможно ли подключить библиотеку DLL, хочу использовать бесплатную библиотеку распознавания авто номеров iANPR_vc14_x86.dll
В документации приведён вот такой код для Delphi, но адаптировать к MVDB не получается:

Определение типов:
type
ANPR_OPTIONS = Record
min_plate_size:integer;
max_plate_size:integer;
Detect_Mode:integer;
max_text_size:integer;
type_number:integer;
flags:integer;
end;
type
CvRect = Record
x:integer;
y:integer;
width:integer;
height:integer;
end;
type
PRect = ^CvRect;

Подключение функции:
function anprPlateMemoryRect( in_buffer: PChar; size_buffer: integer; Rect: CvRect; Options: ANPR_OPTIONS; AllNumber: PInt; Rects: PRect; Texts: PPChar ): integer; stdcall; external 'iANPRinterface_vc12_x86.dll'
name 'anprPlateMemoryRect';

Чтение из файла и вызов функции:
with TFileStream.create(File_, fmOpenReadWrite) do
try
GetMem(p, Size);
read(p^, Size);
s := Size;
finally
free;
end;
all := 100;
anpr.min_plate_size := 500;
anpr.max_plate_size := 25000;
anpr.Detect_Mode := 6; // ANPR_DETECTMODE2 | ANPR_DETECTMODE3;
anpr.max_text_size := 20;
anpr.type_number := 0; // ANPR_RUSSIAN_BASE
anpr.flags := 0;
pr := @rect;
GetMem( ptext, all * sizeof(pchar));
for i := 0 to all-1 do
GetMem( ptext[i], 20 *sizeof( char ) );
RectArea.x := 0; RectArea.y := 0;
RectArea.width := 640; RectArea.height := 480;
r := anprPlateMemoryRect( p, s, RectArea, anpr, @all, pr, @ptext[0] );
FreeMem(p);
k245 wrote:

Это ещё одно изменение разработчика, на этот раз функции random(). Требует изменений в модуле secure.pas, строка 40 (41)


в версии до 5.3:

result := result + AAlphabet[trunc(random()*length(AAlphabet))+1];  

в версии 5.3 и старше:

result := result + AAlphabet[random(length(AAlphabet))+1];

Это, наверное, потому что я пробовал в версии 5.3beta.
Ещё раз спасибо.

k245 wrote:

В версии 5.х разработчик убрал свойство Visible у строк таблицы. Поэтому нужно заменить строку 361 в модуле mainmenu.pas

      MenuGrid.Row[tmpRow].Visible := false;

на

      MenuGrid.RowVisible(tmpRow) := false;

Спасибо, в версии 6.4 запустился, а в 5.3 ошибка:
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=6424&amp;download=0&amp;secure_str=805t146

k245 wrote:
andrey.yugay wrote:

Планируется ли реализация след:
Свернуть/Развернуть область; что-то наподобие панели, но с возможностью свернуть ее в плашку. соответственно нижний элемент при раскрытии опускается вниз, при сворачивании -вверх.

Если речь о меню-"аккордеоне", то его можно реализовать программно:

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

Полное описание с проектом находится в статье: https://vk.com/@createmyvisualdatabaseapp-akkordeon

Здравствуйте.
Не запускается пример из проекта с аккордеоном ни в 5, ни в 6 версиях MVDB
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=6420&amp;download=0&amp;secure_str=805t146

Как на форме сделать воспроизведение потока вида 'rtsp://IP/axis-media/media.amp' с IP камеры?
Пытался сделать воспроизведение в TWindowsMediaPlayer, плеер запускается, но не воспроизводит поток. Есть пример какой-нибудь на эту тему?

63

(2 replies, posted in Russian)

DriveSoft wrote:

В принципе можно его обновить SQL запросом, но если данный компонент расположен на форме, где редактируются данные, можно вызвать обновление всей формы, пример


procedure поездка_buttonUpdate_OnClick (Sender: TObject; var Cancel: boolean);
begin
    поездка.ShowRecord('tablename', поездка.bSave.dbGeneralTableID);
end;

Добрый день.
Поясните, как должна работать эта процедура? У меня компилятор ругается на "bSave", какая здесь должна быть кнопка?
И чем отличаются действия

Form.TableGrid1.dbUpdate

и

UpdateDatabase('tablename')

Как правильнее обновлять данные?

64

(6 replies, posted in Russian)

DriveSoft wrote:

Проверил, в последней версии нет проблем с русскими надписями, возможно у вас старая версия программы
http://myvisualdatabase.com/webgrid_rus/


Перевести интерфейс на русский можно в данном файле. Я перевел его для вас и приложил к данному сообщению, просто замените данный файл
webgrid_rus\scripts\jtable\jquery.jtable.js

Добрый день. Спасибо за перевод.
Разобрался в проблеме кракозябр, в последней версии программы тоже самое. Так как кракозябрами отображались только надписи принадлежащие странице index.php, предположил, что проблема с кодировкой этой страницы, поменял кодировку с UTF-8 без BOM на UTF-8
после этого и заголовок таблицы, и кнопка ПОИСК стали отображаться на русском корректно.

65

(6 replies, posted in Russian)

Добрый день.
А как подружить Web таблицы с русским языком?
У меня на странице с Web таблицей заголовок таблицы, если он написан на русском, отображается кракозябрами, но данные таблицы на русском отображаются корректно.
Как в целом руссифицировать Web таблицу, чтобы было не Showing 1-6 of 6, например, а "запись 1-6 из 6"?

Vickus wrote:

Подскажите, хостинг есть с доступным MySQL....возможно ли как-то на пальцах объяснить, что необходимо сделать, чтобы проект, созданный в MVD заработал через Интернет?
Спасибо.

Добрый день. Посмотрите темы: http://myvisualdatabase.com/forum/viewtopic.php?id=4296 и http://myvisualdatabase.com/forum/viewtopic.php?id=5411
Есть несколько вариантов подключения к базе через интернет, один из них взять обычный (для сайтов) хостинг с поддержкой MySQL, можно даже бесплатный, и подключиться к БД через SSH туннель, или взять vds с выделенным IP и подключаться по инструкции, на форуме есть примеры, ищите... Можно и через HTTP запросы общаться с удалённой базой через REDBEANPHP например.
Есть дешёвый VDS за 90 руб/мес. https://firstvds.ru/products/vds_vps_cheap
Полностью бесплатных не нашёл, но есть с бесплатным пробным периодом.
Алгоритм подключения к удалённой БД (в случае vds с выделенным IP) такой:
- На удалённом хостинге создаёте новую (пустую) БД;
- В MVDB открываете проект и выбираете тип БД MySQL, в окне подключения вводите данные для подключения к только что созданной БД;
- В случае успешного подключения программа сама создаёт в новой удалённой БД структуру таблиц;
- Да, не забываем в скрипте проекта прописать код для подключения к удалённой БД: http://myvisualdatabase.com/forum/viewt … ?pid=25154
если подключение не SSL, строчки кода с установкой сертификата можно удалить.

67

(4 replies, posted in Russian)

sibprogsistem wrote:

ой точно.... пора мне в отпуск

Всё равно спасибо за подробный пример wink

А выполнить поиск по любому сайту, даже если на нём нет встроенного поиска можно таким запросом:
фраза для поиска site:адрес сайта на котором ищете

68

(34 replies, posted in Russian)

agatlogic101 wrote:

4. раз уж жара такая пошла)) Если бы еще статистика велась о первом и последнем входе за день, что бы можно было контралировать во сколько началась работа и закончилась у пользователя. Но это мечты...

Есть время последнего входа.
Так это целая система учёта рабочего времени получается )))
Есть над чем работать!

69

(34 replies, posted in Russian)

DriveSoft wrote:
newusr wrote:

Добрый день.
1. можно ли в таблицу пользователей добавить столбец "выполнен вход" или что-то подобное, чтобы было видно какие пользователи подключены в данный момент;
2. можно ли сделать чтобы пользователь при первом входе сам задавал себе пароль?
у меня реализовано это всё скриптом.

1. Спасибо за идею, подумаю над этим, т.к. реализация не совсем простая в данном случае.
2. В ближайщих версиях это можно будет реализовать простым скриптом, т.к. планируется добавить в скрипты объект UserObject, который позволит реализовать это.

... 3. И чтобы можно было настроить (разрешить/запретить) множественный вход пользователя. То есть запретить/разрешить пользователю с одним логином входить с разных клиентов или уведомлять пользователя, что вход с таким логином уже выполнен.

70

(34 replies, posted in Russian)

Добрый день.
1. можно ли в таблицу пользователей добавить столбец "выполнен вход" или что-то подобное, чтобы было видно какие пользователи подключены в данный момент;
2. можно ли сделать чтобы пользователь при первом входе сам задавал себе пароль?
у меня реализовано это всё скриптом.

71

(6 replies, posted in Russian)

DriveSoft wrote:

В настоящий момент разрабатываю систему пользователей и ролей. WebGrid переместил в меню Проект

Хорошая новость...

72

(6 replies, posted in Russian)

DriveSoft wrote:

Скачайте пожалуйста последнюю бета версию

добрый день.
А что за новая кнопочка появилась на панели таблиц БД и куда делась WebGrid?

73

(10 replies, posted in Russian)

agatlogic101 wrote:

1)Какие сейчас есть сервисы для того что бы программа работала с MySQL не с моего компьютера, а сервер был бы удалённый?

Сам не пользовался, но вот нашёл: https://ru.kamatera.com/express/compute … #app=mySQL
Первый месяц бесплатно, потом от 4$.
Правда он буржуйский и требует привязки кредитной карты.

74

(4 replies, posted in Russian)

metatron wrote:

Может ли кто посоветовать готовый сервер\хостинг для БД на mysql. Желательно на территории РФ. Перебрал несколько поставщиков услуг и везде  либо ограничения по адресам подключения либо нет возможности удаленного подключения...

Я пользуюсь хостингом от М-рхост (не буду рекламировать, кому надо - отвечу) на котором расположен один из моих сайтов. Действительно, у большинства (и это правильно) хостинг провайдеров внешнее подключение к БД MySql закрыто из соображений безопасности, но если к хостингу можно подключиться по SSH, то возможно попробовать создать туннель SSH к БД.

На примере хостинга М-рхост:
Используя утилиту plink.exe от Putty (она должна находиться в папке с вашей программой MVBD, или в OpenFile прописать путь до утилиты) в основном блоке begin...end. пишем:

Openfile('-ssh -2 -P 22 -C -l username -pw password -L 3306:adr_mysq:3306 adr_ssh', 'plink');

где:
- username, password - соответственно имя пользователя и пароль для доступа к хостингу по SSH;
- adr_mysq - адрес для подключения к серверу mysql;
- adr_ssh - адрес для подключения по SSH;
- 3306 - порт подключения к mysq, если у провайдера другой порт, пишите - 3306:adr_mysq:port, то есть после адреса указать порт.

дальше работаете как с локальной БД, то есть в настройках подключения к БД пишете адрес Localhost.
Туннель работает пока работает процесс plink.exe, для разрыва соединения убиваю этот процесс.
Чтобы лишнее окно plink'a не мешало работе, я его скрываю.

DriveSoft wrote:

Расскажите, как выглядить для вас наиболее логична настройка радиокнопок на форме, чтобы они были привязаны к базе данных?

Выбор единственного из двух это CheckBox или вы имеете ввиду что то другое?

1. Первый вариант я вижу так: это должен быть аналог combobox, только в виде RadioButton, то есть для компонента радиокнопка должна быть отдельная таблица со значениями группы радиокнопок. При выборе одной кнопки в базу подставляется значение из этой таблицы.
В идеале было бы так: вставляю на форму визуальный компонент RadioButton, привязываю его к таблице (словарю) и количество радиокнопок и их значение генерировалось бы автоматически по привязанной таблице, если я добавляю в словарь запись, то и на форме автоматически добавляется радиокнопка с соответствующим значением.
2. Второй как предложил vovka3003:

"Возможно было бы целесообразным сделать родительский компонент "RadioButtonGroup", в него пользователь включает нужное количество RB и в базу вносится всего одно состояние.... ...группа батонов это одно поле. значение = caption"

CheckBox это CheckBox, там логическое значение и записывается в базу как "да/нет" и нет возможности поменять значения, например "муж/жен", ну это частный случай RadioButton для двух значений.