stas
-
Posts
489 -
Joined
-
Last visited
-
Days Won
37
Content Type
Profiles
Forums
Events
Posts posted by stas
-
-
Кстати, я не понимаю, почему Фаршад не использует стандартный метод, я от версии к версии переделываю.
if Column.DisplayMemo then JSConfig('cellWrap', [true], JSCol); //extjs // JSConfig('tdCls', ['x-uni-grid-cell-normal'], JSCol); //unigui
-
Не думаю, тут Вы сам себе хозяин.
-
Какой ужас.
Column.DisplayMemo
-
Обещал, выполняйте, я обещаю, только то что могу выполнить сам.
У Фаршада с обещаниями, сами знаете, как.
-
Для капса староват
- 1
-
Я ли не кричал об этом.
-
Если Вы касательно Listview, то я ответил, вообще оно в дорожной карте.
Сейчас его нет. Шерзод посчитал мой ответ удовлетворительным.
Причем техподдержка, это для подписки.
Не купившим помогают энтузиасты. Я вот например.
- 1
-
А что Вы имеете в виду ?
Шерзод регулярно.
- 1
-
On 2/28/2020 at 6:12 AM, =GGG= said:
я как понял форум нужен сейчас для того, чтоб узнавать кто какой сборкой пользуется?))
Это действительно раздражает, помогать нужно без паспорта и свидетельства о прописке.
-
Здравствуйте, вверну свои пять копеек.
Отказывайтесь от ISAPI в принципе.
Имхо, оптимальный вариант, это сервис с прокси через ARR, nginx, Apache (virtual proxy)
В этом случае Вы легко можете деплоить свой продукт и не заморачиваетесь на web server.
-
Нет конечно, есть RestrictByIp, но слово "ограничивать" подразумевает более глубокий смысл
-
И не получится.
1)WebSocket
2)Timer
-
Safari, Chrome какой броузер?
На ipad нормально
-
Ну, полный код такой
type TmyUnimFileEdit=class(TUnimFileEdit); TMyUnimcustomButtonItem=class(TUnimcustomButtonItem); TmyUniToolButton=class(TUnimToolButton); procedure TfmViewMPhoto.CreateFileInput; var FJSEdit:TUnimFileEdit; begin FJSEdit:=TUnimFileEdit.Create(Self); FJSEdit.Name := 'FileEdit_'+FJSEdit.JSName; FJSEdit.Visible:=false; FJSEdit.Parent:=Self; TmyUnimFileEdit(FJSEdit).JSHackObject(FJSEdit.JSControl); TmyUnimFileEdit(FJSEdit).FieldLabelWidth:=30; TmyUnimFileEdit(FJSEdit).FieldLabel:=''; FJSEdit.Name := FJSEdit.JSName; TmyUnimFileEdit(FJSEdit).JSConfig('accept',['image/jpeg']); TmyUnimFileEdit(FJSEdit).JSCall('on',['change', TmyUnimFileEdit(FJSEdit).JSFunction('var input=document.getElementsByName("'+TmyUnimFileEdit(FJSEdit).JSName+'")[0];'+ ' Ext.Viewport.mask({ xtype: "loadmask", message: "Завантаження..." });'#13#10+ ' var filesToUpload = input.files; '#13#10+ ' var file = filesToUpload[0]; '#13#10+ ' var img = document.createElement("img"); '#13#10+ ' var reader = new FileReader(); '#13#10+ ' reader.onload = function(e) '#13#10+ ' { '#13#10+ ' img.src = e.target.result; '#13#10+ ' '#13#10+ ' var canvas = document.createElement("canvas"); '#13#10+ ' var ctx = canvas.getContext("2d"); '#13#10+ ' ctx.drawImage(img, 0, 0); '#13#10+ ' '#13#10+ ' var MAX_WIDTH = 1024; '#13#10+ ' var MAX_HEIGHT = 768; '#13#10+ ' var width = img.width; '#13#10+ ' var height = img.height; '#13#10+ ' '#13#10+ ' if (width > height) { '#13#10+ ' if (width > MAX_WIDTH) { '#13#10+ ' height *= MAX_WIDTH / width; '#13#10+ ' width = MAX_WIDTH; '#13#10+ ' } '#13#10+ ' } else { '#13#10+ ' if (height > MAX_HEIGHT) { '#13#10+ ' width *= MAX_HEIGHT / height; '#13#10+ ' height = MAX_HEIGHT; '#13#10+ ' } '#13#10+ ' } '#13#10+ ' canvas.width = width; '#13#10+ ' canvas.height = height; '#13#10+ ' var ctx = canvas.getContext("2d"); '#13#10+ ' ctx.drawImage(img, 0, 0, width, height); '#13#10+ ' '#13#10+ ' var dataurl = canvas.toDataURL("image/jpeg"); var avalue=input.value; input.value=""; '#13#10+ ' ajaxRequest('+tlbBtn.JSName+',"export",["type=jpeg","uri="+dataurl,"filename="+avalue]);'#13#10+ ' }; '#13#10+ ' reader.readAsDataURL(file); '#13#10 )]); UniSession.AddJS(tlbBtn.JSName+'.owner.fileInput='+FJSEdit.JSName+';'); end;
Я поднимал свн 2-х годичной давности, что-то мне там не понравилось, но файлы сжимались
И еще
procedure TfmViewMPhoto.tlbBtnAjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings); var MS:TMemoryStream; ss:String; begin if EventName='export' then begin MS:=TMemoryStream.Create; try ss:=copy(Params.Values['uri'],pos(',',Params.Values['uri'])+1,length(Params.Values['uri'])); uIdCoderMIME.TIdDecoderMIME.DecodeStream(SS,MS); MS.Position:=0; imPhoto.LoadFromStream(MS); UniSession.AddJS('Ext.Viewport.unmask();'); finally MS.Free; end; end; end;
-
Там есть кнопочка "НАЖМИ МЕНЯ", нажмите ее пожалуйста, и листинг в студию, может помочь
-
Есть.
Кусок кода примерно такой
var filesToUpload = input.files; var file = filesToUpload[0]; var img = document.createElement("img"); var reader = new FileReader(); reader.onload = function(e) { img.src = e.target.result; var canvas = document.createElement("canvas"); var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0); var MAX_WIDTH = 1024; var MAX_HEIGHT = 768; var width = img.width; var height = img.height; if (width > height) { if (width > MAX_WIDTH) { height *= MAX_WIDTH / width; width = MAX_WIDTH; } } else { if (height > MAX_HEIGHT) { width *= MAX_HEIGHT / height; height = MAX_HEIGHT; } } canvas.width = width; canvas.height = height; var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0, width, height); var dataurl = canvas.toDataURL("image/jpeg"); var avalue=input.value; input.value=""; ajaxRequest(+tlbBtn.JSName+,"export",["type=jpeg","uri="+dataurl,"filename="+avalue]); }; reader.readAsDataURL(file); )]);
От себя добавлю, я перестал видеть смысл использовать Мобильную версию Унигуи (Фаршад ее похерил)
Посмотрите в сторону нативных приложений
-
Тогда, очень странно.
Дело в том, что если Вы не создаете отдельный поток для генерации отчета, отсылка файла должна произойти после его сохранения.
По другому быть не может.
-
SQL сервер напрямую может генерировать pdf?
Не знал
-
Отчет строится средствами чего?
-
POST
https://your.unigui-server.com/youproject/dofileupload?my_data=[some_data]&_S_ID=[your_session_id]
On unigui server
procedure TUniMainModule.UniGUIMainModuleHandleRequest(ASession: TObject; var Handled: Boolean); var S:TUniGUISession; begin if (ASession is TUniGUISession) then begin S:=TUniGUISession(ASession); if (S.ARequest.Document='/dofileupload') then begin //save file from poststream Handled:=false //??? end end;
- 1
-
Я уже это рассказывал, это сложно, но становится больше возможностей.
Цитирую
Смотрите
Ставите ARR v3+ Url rewrite
UniGuiHyperService+UniGuiApplication stand alone
В ARR разрешаете прокси
Далее создаете обыкновенный сайт
в IIS
Предположим у Вас UniGuiHyperService вертится на порту 8077
Допустим, вы хотите чтобы у вас сайт вертелся по имени mysite.com/myproject
В Директории Сайта создаете папочку myproject
Там создаете web.config следующего содержимого
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="redirect" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://127.0.0.1:8077/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Далее в UrlPathUniServermodule Вашего проекта
И в cfg UniGuiHyperService
прописываете /myproject
Вуаля, Ваш сайт работает
- 2
-
2 hours ago, Alex_w said:
То что надо! Спасибо!
Отказывайтесь от этого, dll-ки не пропускают многие антивирусы, уходите от старой технологии.
Работая с сервисом, Вы не зависите от веб-сервера, и вообще от того, что смотрит в мир.
- 2
-
Зайдите в любую папочку в консоле иис (функция Документ по умолчанию)
После модификации посмотрите содержимое файла web.config в этой папочке
- 1
- 1
-
Можете, страницы по умолчанию допишите туда Web.dll
Это не пул, это папочка,
Можете смотреть в сторону ARR и URLrewrite
Но тогда ISAPI выкиньте
Только сервисы, только хардкор
- 2
создание набора tDBedit
in Russian
Posted
Да, можно, можно. в дизайнере, в редакторе полей, драг на форму.
Только это новичкам нужно. Обычно не пользуются.