Jump to content
uniGUI Discussion Forums

stas

uniGUI Subscriber
  • Content Count

    350
  • Joined

  • Last visited

  • Days Won

    31

stas last won the day on January 29

stas had the most liked content!

Community Reputation

96 Excellent

3 Followers

About stas

  • Rank
    Advanced Member

Profile Information

  • Gender
    Male
  • Location
    Kiev Ukraine

Recent Profile Visitors

1331 profile views
  1. Safari, Chrome какой броузер? На ipad нормально
  2. Ну, полный код такой 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;
  3. stas

    TUnimap компонент

    Там есть кнопочка "НАЖМИ МЕНЯ", нажмите ее пожалуйста, и листинг в студию, может помочь
  4. Есть. Кусок кода примерно такой 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); )]); От себя добавлю, я перестал видеть смысл использовать Мобильную версию Унигуи (Фаршад ее похерил) Посмотрите в сторону нативных приложений
  5. stas

    Сохранение отчета

    Тогда, очень странно. Дело в том, что если Вы не создаете отдельный поток для генерации отчета, отсылка файла должна произойти после его сохранения. По другому быть не может.
  6. stas

    Сохранение отчета

    SQL сервер напрямую может генерировать pdf? Не знал
  7. stas

    Сохранение отчета

    Отчет строится средствами чего?
  8. 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;
  9. stas

    Настройки ISAPI

    Я уже это рассказывал, это сложно, но становится больше возможностей. Цитирую Смотрите Ставите 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 Вуаля, Ваш сайт работает
  10. stas

    Настройки ISAPI

    Отказывайтесь от этого, dll-ки не пропускают многие антивирусы, уходите от старой технологии. Работая с сервисом, Вы не зависите от веб-сервера, и вообще от того, что смотрит в мир.
  11. stas

    Настройки ISAPI

    Зайдите в любую папочку в консоле иис (функция Документ по умолчанию) После модификации посмотрите содержимое файла web.config в этой папочке
  12. stas

    Настройки ISAPI

    Можете, страницы по умолчанию допишите туда Web.dll Это не пул, это папочка, Можете смотреть в сторону ARR и URLrewrite Но тогда ISAPI выкиньте Только сервисы, только хардкор
  13. stas

    iPhone.Safari

    Я думаю, Safari не разрешит, у меня хром из-за просрочки сертификата, вообще сайт не грузил А чем LetsEncrypt плох?
  14. stas

    Аналог DataSnap

    Это в принципе события TidHttpServer, просто Фаршад их передает. Можно там порыться, я, честно говоря, не думал над этим вопросом.
  15. Странно, конечно. У нас такой фигней специально обученная девочка занимается, (мне продлили до 10.05), может у них девочкам нельзя таким заниматься.
×