Skip to forum content
My Visual Database
A Simple Solution for Creating Databases
You are not logged in. Please login or register.
Active topics Unanswered topics
Search options (Page 3 of 15)
Так работает вроде:
const
text = '<span style="color:red"><b>123459</b></span>';
script = '<script>alert("Привет мир!");</script>';
var WB:TWebBrowser;
begin
WB:=TWebBrowser.Create(Application);
// WB.Silent := 1;
TWinControl(WB).Parent := Form1;
WB.Align := alClient;
WB.Navigate('about:blank');
WB.Navigate('javascript:document.body.innerHTML='''+text+script+''';');
end.
Вариант - сделать "базовую страницу" и через Navigate в нее передавать содержимое для записи на странице.
newusr wrote:А как в него записать, есть пример какой-нибудь?
Ну, попробовал - не работает ни один из адекватных способов (data/url, Document.Write).
Бесполезный огрызок браузера, короче...
newusr wrote:Я правильно понял, что для каждой камеры нужно создать html файл и открыть их через TWebBrowser на форме?
Ну, это уже зависит от возможностей контрола, я с ним не работал, не в курсе. Думаю, как минимум можно сделать сетку div-ов и засунуть в нее отдельно плееры. Делать страницу в виде файла - необязательно, достаточно записать код в TWebBrowser.
Ну и сам установщик контрола с собой таскать для компьютеров, где его нет.
Ну, может производителю задать вопрос?
newusr wrote:Но хотелось по красоте сделать...
"Красоты" не будет без контейнера ActiveX.
newusr wrote:для 3-го нужно знать rtsp поток, а я, к сожалению, не смог его вычислить.
Если есть Onvif, то ODM что-то должен показать.
vovka3003 wrote:1. Плеер загнать в TWebBrowser, а сам TWebBrowser положить на форму.
Примерный html-код:
<body leftmargin=0 topmargin=0 rightmargin=0 bottommargin=0>
<OBJECT id="NV1" style="width:100%;height:100%; " classid="clsid:62D6556A-808B-4322-A76F-B5DFF38D3DC5"></OBJECT>
<script>
NV1.MediaURL = '192.168.1.100';
// ... другие настройки
NV1.Connect();
if (!NV1.Play()){
alert('Ошибка соединения!');
};
</script>
</body>
OLE-объекты нельзя рассматривать как WinControl.
Возможные варианты:
1. Плеер загнать в TWebBrowser, а сам TWebBrowser положить на форму.
2. Собрать в делфи в Ole-контейнере, запускать как Exe-шник, придумать управление (например через параметры запуска).
3. Заюзать через rtsp в VLС плеере (exe), SetParent-ом подтянуть к форме. Управление возможно http-командами.
В адекватном варианте это надо было реализовать мьютексом, но в MVDb его нет...
vit007 wrote:Люблю "сделать" красиво...
Ну это тогда винегрет... Или помидоры со шкурками.
По мне так лучше минимизировать операции записи на диск, даже с "какашкой" весом 22 г̶р̶а̶м̶м̶а̶ байта...
vit007 wrote:DeleteFile('~$applock') не прокатывает
У меня прокатывает.
vit007 wrote:Как понял про TZipMode, она создает файл, и дальше смотрит его наличие
Не столько "наличие", сколько "занятость" другим, ранее открытым экземпляром.
vit007 wrote:..и после завершения созданная "какашка" остается...
Я должен "бумажку подать"?
Если надо ловить глобально (а не только из одной папки), тогда можно попробовать так:
begin
if FindWindow('','already_launched')>0 then
begin
ShowMessage('Программа уже запущена');
Application.Minimize;
Form1.Close;
end;
with TForm.Create(Application) do
begin
Name := 'already_launched';
BorderStyle := bsNone;
Width:=0;
Height:=0;
Show;
Hide;
end;
end.
vit007 wrote:Реакция на Zip...
Это для случаев, когда из одной и той же папки выполняется повторная попытка запустить exe-шник.
zip - это контрольный файл, по которому проверяется запущенный экземпляр. Если "занят", значит программа уже открыта.
vit007 wrote:Спасибо. А во втором случаи это если прогу из архива извлекать или для каких случаев...
А причем тут архив?
var ZF:TZipFile;
procedure Form1_OnClose (Sender: TObject; Action: string);
begin
ZF.Free;
end;
begin
try
ZF:=TZipFile.Create;
ZF.Open('~$applock',zmWrite);
except
ShowMessage('Уже запущен экземпляр программы');
Form1.Close;
end;
end.
В интерактивном режиме можно подключить разные движки.
Но что именно надо выполнить в Python-e?
pavlenko.vladimir.v wrote:хрен с ним, я уже придумал как решить эту проблему
Ок.
А проблемный пример никто не полюбляет приложить... Ни новички, ни старички...
Если правильно понял вопрос - задача на "зацикливание"...
k245 wrote:..решение, как мне кажется, есть: посадить грид на панель, и каждый раз разпупыживать его так, чтобы его родные скролбары не появлялись.
Интересно, что скажет выньда, когда увидит позицию меньше -32000..?
k245 wrote:You can create any interface, with your own color schemes and appearance of components, but this can take years.
Here is an example of an interface where input components have rounded frames, the palette is fully customizable by the user, there is smart scaling and many other useful things. All this was created without using styles.
Скроллбары... скроллбары, йома..)
Примера нет, не сохранял.
Но могу подсказать методику:
"Рамка" окна - это form1, с растянутой картинкой (или сплошным цветом), и установленным свойством bsNone.
"Область формы" - form2, также с установленным свойством bsNone и в качестве Parent-a указана form1.
Крестик, максимизация, минимизация - обычные TLabel, с соответствующими действиями в скрипте.
Ну и дальше "соль и перец по вкусу", насколько хватит фантазии.
А обновить до последней версии кто запрещает..?
Можно еще с виндой "поспорить", свои бордюры и элементы нарисовать:
k245 wrote:P.S. Эффективней спрашивать не о том, как работает функционал компонентов (это можно прочитать в инструкциях), а о том, как правильно решить бизнес-задачу.
Vickus wrote:На форме записи есть чекбокс. Хотелось бы, чтобы при установке чекбокса "Ранее включен в счет" в итоговой таблице на главной форме это значение имело знак минус и в футере из суммы вычиталось.
Ля, бронированный...
Если рассматривать "плоский" вариант - я б сделал еще колонки "Оплачено" и "Остаток". В итогах - тупо сложение...
Для удобства - по флажку "оплачен полностью" - копировать в "Оплачено" значение из "Суммы".
Posts found: 51 to 75 of 359