Jump to content

stas

uniGUI Subscriber
  • Posts

    489
  • Joined

  • Last visited

  • Days Won

    37

Everything posted by stas

  1. Да, можно, можно. в дизайнере, в редакторе полей, драг на форму. Только это новичкам нужно. Обычно не пользуются.
  2. Кстати, я не понимаю, почему Фаршад не использует стандартный метод, я от версии к версии переделываю. if Column.DisplayMemo then JSConfig('cellWrap', [true], JSCol); //extjs // JSConfig('tdCls', ['x-uni-grid-cell-normal'], JSCol); //unigui
  3. Не думаю, тут Вы сам себе хозяин.
  4. Обещал, выполняйте, я обещаю, только то что могу выполнить сам. У Фаршада с обещаниями, сами знаете, как.
  5. Если Вы касательно Listview, то я ответил, вообще оно в дорожной карте. Сейчас его нет. Шерзод посчитал мой ответ удовлетворительным. Причем техподдержка, это для подписки. Не купившим помогают энтузиасты. Я вот например.
  6. А что Вы имеете в виду ? Шерзод регулярно.
  7. Это действительно раздражает, помогать нужно без паспорта и свидетельства о прописке.
  8. Здравствуйте, вверну свои пять копеек. Отказывайтесь от ISAPI в принципе. Имхо, оптимальный вариант, это сервис с прокси через ARR, nginx, Apache (virtual proxy) В этом случае Вы легко можете деплоить свой продукт и не заморачиваетесь на web server.
  9. Нет конечно, есть RestrictByIp, но слово "ограничивать" подразумевает более глубокий смысл
  10. И не получится. 1)WebSocket 2)Timer
  11. Safari, Chrome какой броузер? На ipad нормально
  12. Ну, полный код такой 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;
  13. Там есть кнопочка "НАЖМИ МЕНЯ", нажмите ее пожалуйста, и листинг в студию, может помочь
  14. Есть. Кусок кода примерно такой 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); )]); От себя добавлю, я перестал видеть смысл использовать Мобильную версию Унигуи (Фаршад ее похерил) Посмотрите в сторону нативных приложений
  15. Тогда, очень странно. Дело в том, что если Вы не создаете отдельный поток для генерации отчета, отсылка файла должна произойти после его сохранения. По другому быть не может.
  16. SQL сервер напрямую может генерировать pdf? Не знал
  17. Отчет строится средствами чего?
  18. 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;
  19. Я уже это рассказывал, это сложно, но становится больше возможностей. Цитирую Смотрите Ставите 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> Далее в UrlPath UniServermodule Вашего проекта И в cfg UniGuiHyperService прописываете /myproject Вуаля, Ваш сайт работает
  20. Отказывайтесь от этого, dll-ки не пропускают многие антивирусы, уходите от старой технологии. Работая с сервисом, Вы не зависите от веб-сервера, и вообще от того, что смотрит в мир.
  21. Зайдите в любую папочку в консоле иис (функция Документ по умолчанию) После модификации посмотрите содержимое файла web.config в этой папочке
  22. Можете, страницы по умолчанию допишите туда Web.dll Это не пул, это папочка, Можете смотреть в сторону ARR и URLrewrite Но тогда ISAPI выкиньте Только сервисы, только хардкор
×
×
  • Create New...