stas
uniGUI Subscriber-
Posts
489 -
Joined
-
Last visited
-
Days Won
37
Content Type
Profiles
Forums
Events
Everything posted by stas
-
Да, можно, можно. в дизайнере, в редакторе полей, драг на форму. Только это новичкам нужно. Обычно не пользуются.
-
Кстати, я не понимаю, почему Фаршад не использует стандартный метод, я от версии к версии переделываю. if Column.DisplayMemo then JSConfig('cellWrap', [true], JSCol); //extjs // JSConfig('tdCls', ['x-uni-grid-cell-normal'], JSCol); //unigui
-
Не думаю, тут Вы сам себе хозяин.
-
Какой ужас. Column.DisplayMemo
-
Обещал, выполняйте, я обещаю, только то что могу выполнить сам. У Фаршада с обещаниями, сами знаете, как.
-
Для капса староват
-
Я ли не кричал об этом.
-
Если Вы касательно Listview, то я ответил, вообще оно в дорожной карте. Сейчас его нет. Шерзод посчитал мой ответ удовлетворительным. Причем техподдержка, это для подписки. Не купившим помогают энтузиасты. Я вот например.
-
А что Вы имеете в виду ? Шерзод регулярно.
-
Это действительно раздражает, помогать нужно без паспорта и свидетельства о прописке.
-
Здравствуйте, вверну свои пять копеек. Отказывайтесь от ISAPI в принципе. Имхо, оптимальный вариант, это сервис с прокси через ARR, nginx, Apache (virtual proxy) В этом случае Вы легко можете деплоить свой продукт и не заморачиваетесь на web server.
-
И не получится. 1)WebSocket 2)Timer
- 2 replies
-
- unisession
- alert
-
(and 1 more)
Tagged with:
-
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;
-
Я уже это рассказывал, это сложно, но становится больше возможностей. Цитирую Смотрите Ставите 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 Вуаля, Ваш сайт работает
-
Отказывайтесь от этого, dll-ки не пропускают многие антивирусы, уходите от старой технологии. Работая с сервисом, Вы не зависите от веб-сервера, и вообще от того, что смотрит в мир.
-
Зайдите в любую папочку в консоле иис (функция Документ по умолчанию) После модификации посмотрите содержимое файла web.config в этой папочке
-
Можете, страницы по умолчанию допишите туда Web.dll Это не пул, это папочка, Можете смотреть в сторону ARR и URLrewrite Но тогда ISAPI выкиньте Только сервисы, только хардкор