Jump to content

Sherzod

Moderators
  • Posts

    22118
  • Joined

  • Last visited

  • Days Won

    781

Everything posted by Sherzod

  1. Hello, Unfortunately it’s not possible to get the real client-side file path (e.g. C:\Users\...\Downloads\...) from TUniFileUpload. This is a browser security restriction: when a user selects a file, the browser does not expose the original full path to the server/application...
  2. Hello, Which build? Could you please provide a simple test case to reproduce the issue?
  3. Hello, https://www.unigui.com/doc/online_help/api/uniBasicGrid_TUniHyperGridOption.html
  4. Here is one possible workaround for your case. I may have overlooked something, so please check if it fits your scenario. 1. procedure TChatBubble.UniFrameCreate(Sender: TObject); begin cxreText.JSInterface.JSAddListener('afterrender', 'function(){var el = this.inputEl.dom; var sh = el.scrollHeight; ajaxRequest(this, "_change", {newHeight: sh}); this.inputEl.setStyle("overflow", "hidden")}'); end; 2. ChatBubble.ClientEvents.UniEvents -> function beforeInit(sender, config) { config.style = { opacity: 0 }; } 3. ChatBubble.ClientEvents.ExtEvents -> function boxready(sender, width, height, eOpts) { Ext.defer( function() { sender.getEl().setStyle({ transition: "opacity 1000ms ease", opacity: 1 }); }, 500 ) } 4. cxreText.OnAjaxEvent -> procedure TChatBubble.cxreTextAjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings); var CurrHeight: SmallInt; NewHeight: SmallInt; begin if EventName = '_change' then begin CurrHeight := (Sender as TUniMemo).Height; NewHeight := Params.Values['newHeight'].ToInteger; if NewHeight > CurrHeight then begin (Sender as TUniMemo).Height := NewHeight + 2; Self.Height := NewHeight + cxbCopy.Height + 12; end; end; end;
  5. Hello, procedure TMainForm.UniFormCreate(Sender: TObject); begin UniSyntaxEditEx1.BorderStyle := ubsNone; end;
  6. Hello, I will try to check.
  7. You may also find this post useful:
  8. Hello, Then it would be correct to also specify the "files" path: UniServerModule.CustomFiles.Add('files/html5-qrcode.min.js');
  9. Sebebini buldum. Bir sonraki güncellemede düzeltmeye çalışacağız.
  10. Demos: Documentation: https://www.unigui.com/doc/online_help/unigui-and-websocktes.htm
  11. Bunu kontrol edeceğiz.
  12. Hello, WebSockets/server push would be the “right idea” for real-time notifications in general, because polling with UniTimer + AjaxEvent will scale poorly when you have many active sessions. But in your case, the real bottleneck is not only the timer itself — it’s the heavy database work executed by every session every few seconds (in your code it’s basically every 5 seconds) Every open session runs SELECT TOP 1 ... Then performs UPDATE ... SET Notif='1' And after that it may reload a big grid query (LoadGridResep) With 20+ sessions this becomes 20× repeated SQL polling, which can easily freeze the server/database and make the whole app slow.
  13. Hello, It looks like a third-party package built with an older uniGUI version. Please remove it and rebuild/reinstall it with your current version.
  14. As a possible workaround, you may “reset” the grid by recreating the TUniDBGrid instance dynamically, so the client-side state (including filter editors) is rebuilt from scratch...
  15. Could you reproduce this issue using our demo examples, so we can test it on our side?
  16. Hello, To better understand and reproduce the issue on our side, could you please provide a small test case (a minimal sample project) that demonstrates the freeze?
  17. Well, this doesn’t really tell much…
  18. Hello, To better understand the issue, could you please prepare a small test project that shows this problem?
  19. @emin Try this approach for now: MainForm.Script -> Ext.override(Ext.form.field.HtmlEditor, { /** * NOTE: * This method overrides the private HtmlEditor.adjustFont() implementation. * * Root cause: * When FontSize is triggered from the menu, the `btn` parameter refers to * an Ext.menu.Item, which does NOT have a meaningful itemId. * In that case getItemId() returns an auto-generated menuItemId, causing * the font size adjustment direction (+ / -) to be detected incorrectly. * * Solution: * Always resolve the real toolbar button via `btn.masterComponent` * (available when the action originates from a menu item). * For direct toolbar clicks, `btn` already refers to the correct component. * * IMPORTANT: * adjustFont() is a private/internal method in Ext JS. * This override relies on internal behavior and may need to be reviewed * when upgrading Ext JS versions. */ adjustFont: function(btn) { var realBtn = btn.masterComponent || btn; var adjust = realBtn.getItemId() === 'increasefontsize' ? 1 : -1, size = this.getDoc().queryCommandValue('FontSize') || '2', isPxSize = Ext.isString(size) && size.indexOf('px') !== -1, isSafari; size = parseInt(size, 10); if (isPxSize) { if (size <= 10) { size = 1 + adjust; } else if (size <= 13) { size = 2 + adjust; } else if (size <= 16) { size = 3 + adjust; } else if (size <= 18) { size = 4 + adjust; } else if (size <= 24) { size = 5 + adjust; } else { size = 6 + adjust; } size = Ext.Number.constrain(size, 1, 6); } else { isSafari = Ext.isSafari; if (isSafari) { adjust *= 2; } size = Math.max(1, size + adjust) + (isSafari ? 'px' : 0); } this.relayCmd('FontSize', size); } });
  20. Hello, I’ve identified the root cause of the issue. I’ll evaluate the optimal solution and get back to you.
  21. Hello, We’ll review this case and see whether it’s possible to add a warning or validation to prevent such situations on mobile forms. In the meantime, could you please let us know which uniGUI version and edition you are using?
  22. Hello, I tried to reproduce your case, but I wasn’t able to. I tested it on Android using Chrome and Firefox, and the form size was restored correctly after the on-screen keyboard was hidden. At least in my tests, the bottom panel did not slip off the screen.
  23. Доброе утро! Я воспроизвёл описанный сценарий... Название колонки меняется обычным способом, например: UniDBGrid1.Columns[xx].Title.Caption := 'New caption'; После этого повторно выполняется запрос. В таком варианте поведение корректное, проблема не воспроизводится. Поэтому уточню: каким именно образом Вы меняете заголовок колонки? Если используется JavaScript — уточните, пожалуйста, зачем он применяется в данном случае и в какой момент выполняется (до/после обновления запроса).
×
×
  • Create New...