-
Posts
22118 -
Joined
-
Last visited
-
Days Won
781
Content Type
Profiles
Forums
Events
Everything posted by Sherzod
-
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...
-
Hello, Which build? Could you please provide a simple test case to reproduce the issue?
-
Hello, https://www.unigui.com/doc/online_help/api/uniBasicGrid_TUniHyperGridOption.html
-
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;
-
Hello, procedure TMainForm.UniFormCreate(Sender: TObject); begin UniSyntaxEditEx1.BorderStyle := ubsNone; end;
-
Hello, I will try to check.
-
You may also find this post useful:
-
Hello, Then it would be correct to also specify the "files" path: UniServerModule.CustomFiles.Add('files/html5-qrcode.min.js');
-
Sebebini buldum. Bir sonraki güncellemede düzeltmeye çalışacağız.
-
-
Bunu kontrol edeceğiz.
-
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.
-
TUniDBComboBox with ITEMS+VALUES
Sherzod replied to lawrencetse's topic in Components and Code Samples
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. -
Well, this doesn’t really tell much…
-
Hello, To better understand the issue, could you please prepare a small test project that shows this problem?
-
@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); } });
-
Hello, I’ve identified the root cause of the issue. I’ll evaluate the optimal solution and get back to you.
-
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?
-
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.
-
Доброе утро! Я воспроизвёл описанный сценарий... Название колонки меняется обычным способом, например: UniDBGrid1.Columns[xx].Title.Caption := 'New caption'; После этого повторно выполняется запрос. В таком варианте поведение корректное, проблема не воспроизводится. Поэтому уточню: каким именно образом Вы меняете заголовок колонки? Если используется JavaScript — уточните, пожалуйста, зачем он применяется в данном случае и в какой момент выполняется (до/после обновления запроса).
