Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 06/27/24 in all areas

  1. Demo: \FMSoft\Framework\uniGUI\Demos\Desktop\DBLookupComboBox Adding code to change boundList: 1. UniDBLookupComboBox2.ListField -> 2. UniDBLookupComboBox2.ClientEvents.ExtEvents -> function afterrender(sender, eOpts) { var parts; sender.createPicker = function() { var a = this, b, c, tpl; a.getPickerStore().each(function(record) { var val = record.get('val'); parts = val.split(' - '); for (var i = 0; i < parts.length; i++) { record.set('field' + (i + 1), parts[i]); } }); tpl = new Ext.XTemplate( '<div class="x-boundlist-body">', '<tpl for=".">', '<div class="x-boundlist-item">', '<tpl for="this.getFields(values)">', '<div class="x-boundlist-item-cell">{field}</div>', '</tpl>', '</div>', '</tpl>', '</div>', { getFields: function(values) { var fields = []; for (var i = 1; i <= 10; i++) { //limit if (values['field' + i]) { fields.push({ field: values['field' + i] }); } else { break; } } return fields; } } ); c = Ext.apply({ xtype: 'boundlist', cls: 'customPicker', id: a.id + '-picker', pickerField: a, selectionModel: a.pickerSelectionModel, floating: true, hidden: true, store: a.getPickerStore(), displayField: a.displayField, preserveScrollOnRefresh: true, pageSize: a.pageSize, tpl: tpl, ariaSelectable: a.ariaSelectable, width: parts.length * 150 }, a.listConfig, a.defaultListConfig); b = a.picker = Ext.widget(c); if (a.pageSize) { b.pagingToolbar.on('beforechange', a.onPageChange, a); } if (!b.initialConfig.maxHeight) { b.on({ beforeshow: a.onBeforePickerShow, scope: a }); } b.getSelectionModel().on({ beforeselect: a.onBeforeSelect, beforedeselect: a.onBeforeDeselect, focuschange: a.onFocusChange, scope: a }); b.getNavigationModel().navigateOnSpace = false; return b; }; } 3. CustomCSS -> .customPicker .x-boundlist-body { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; border-left: 1px solid #ddd; border-right: 1px solid #ddd; overflow-y: auto; } .customPicker .x-boundlist-item { display: flex; border-bottom: 1px solid #ddd; } .customPicker .x-boundlist-item-cell { flex: 1; border-right: 1px solid #ddd; padding: 5px; box-sizing: border-box; text-align: center; } .customPicker .x-boundlist-item-cell:last-child { border-right: none; } Result:
    3 points
  2. Hello, We will prepare extensive document and videos to demonstrate this. In short, You can modify multiple rows (edit, delete or append) on client side and send all changes in a single batch request to the server Navigation in grid won't change dataset cursor (This can be enabled using an option) Editing cells doesn't send multiple events to the server as it happens in standard UniDBGrid You can use database transactions to commit or rollback changes. This means that you can rollback all changes if an error occurs during posting multiple changes. You can use non-datebase data sources to populate the grid. (You can write your own adapters to get data from any data source) You can write custom event handlers to take full control on how data is posted to the underlying data source You can work with closed data tables. (Open only when needed) Unlike UniDBGrid, HyperGrid doesn't rely on "RecNo". Everything is handled using a KeyField which is a field in your table with unique key values. This key values will be used to locate rows when editing or deleting rows. Same key values are used when navigating in the grid. Data adapters allow to centralize event handling for multiple HyperGrids using a single data adapter. Modified rows won't be sent to the server until user decides to do so.
    3 points
  3. An example of my custom LocalStore and a custom DbLookupCombobox. Very rudimentary, I'm not an EXTJs expert, but this is what I want to achieve as a component for Unigui. But even as grid editor!!! I load the store only once in the form or session, at startup. Lookup.mp4
    2 points
  4. Hello, The license will be extended! We will try during the day. Thank you.
    2 points
  5. great thread, bolshoi spacibo, folks!
    2 points
  6. Then I don't know, need to investigate.
    1 point
  7. One WORKING example I think it's necessary (we are Delphi developers, not ExtJs 🙂 ) Thanks
    1 point
  8. It is also possible to extend boundList, like this 🙂
    1 point
  9. I would also like to have something that I can do insert, update, detail on the client side with the Unidb components, after confirming the data would be uploaded, another important factor would be in networks that fluctuate the internet with an internet outage not ending the session, it would be possible to resend something that is being edited, a kind of reconnection with the session in progress.
    1 point
  10. I do it practically the same way, I tried to use the grid directly and the work of controlling it was very difficult and I wasn't very successful, that's why I chose this way.
    1 point
  11. Both share same DCU files.
    1 point
  12. Master @Hayri ASLAN, your work in relation to hypergrid is very good, I would like to maybe ask for examples, in relation to people who use grids just to show data like me. What can we gain from hypergrid?
    1 point
  13. We can implement a server-side event which allows modifying client side data store without editing the underlying server side database.
    1 point
  14. Hi Farshad, But in this first version it doesn't seem to work like that yet (I'm referring to the first point). So do we have to wait for the next releases to see something changed or improved in the logic? I already asked this question: How to do row calculations in Hypergrid? Example: Total=Price x quantity. We need examples or instructions on how to carry out calculations and validation checks directly in Javascript (unless you want to implement Pas2Js 🙂 ) I would like to point out that Hypergrid is truly a step forward in the management of "enterprise" applications and I hope to use it intensively. Thanks in advance!
    1 point
  15. Hello, In this case you will also need some knowledge of HTML, CSS, JavaScript I think. You can search the Internet for approximate implementations of chats and apply them. As components you can use HTMLMemo, and possibly grid.
    1 point
  16. 1 point
  17. 1 point
  18. I think you can use any grid but dbgrid is really good
    1 point
  19. Thank you @Sherzod and sir @Farshad Mohajeri!!! ❤️❤️
    1 point
  20. Good morning, unfortunately I have not found the solution, I am still investigating. What I have done to solve this issue is to display the pdf in a TUniHTMLFrame control with the standard options so that the user can execute the download. Greetings
    1 point
  21. Да, то что нужно, спасибо ещё раз!
    1 point
  22. I have tried option dgAllowSelfUpdate = True, but still it doesn't update the summary values. I am working on a test case at the moment, so I will provide it soon.
    1 point
  23. I'm 55 and started with Turbo Pascal in late '80s. ( My first computer during early '80s was a ZX Spectrum 48K with BASIC) Then Delphi 5 in late '90s. Still love Delphi and most of my code is still Delphi though are now also programming in C++. Transition from Delphi to C++ is not that difficult. C++ remains popular amongst data science community because its much faster than Python. By the way, UniGUI 1.95.0.1583 works perfectly with RAD C++ Builder 12.1 (Windows 64bit target) There are thousands of C++ developers below 40. In my opinion, if UniGUI wants to grow, they should focus on the C++ community
    1 point
  24. I developed a fully functional db-aware (lookup) control and requested some minor changes in unigui code. so far i didnt get any feedback nor were those very minor changes implemented. Its definitely possible without too big changes, so i do not understand why its not included in unigui (the file is 1400 lines of code and i use space out things and uses a lot of empty lines).
    1 point
  25. Thanks for your help @mazluta , actually I already use AlignmentControl = uniAlignmentClient, and this problem does not occurred on Development PC, it does shown on "some" PC's of the customers side I solved the issue temporarily by enabled the options.dgRowNumbers "Which suppose not shown" Dears @Farshad Mohajeri @Sherzod Please I need your help in this issue. Regards
    1 point
  26. Good morning. Thank you very much, it works perfectly
    1 point
  27. I'm wanting to leave Google, the cost is getting too high.
    1 point
  28. Hello, One possible solution: 1. UniPropertyGrid1.ClientEvents.ExtEvents -> function store.load function store.load(sender, records, successful, operation, eOpts) { var grid = this.grid, cols = grid.dbColumns; cols.forEach(function(col) { if (col.editor) { col.editor.fieldCls = "custom-editor" } }); } 2. CustomCSS -> .custom-editor { font-size: 16px !important; }
    1 point
  29. If you were able to achieve success, let me know.
    1 point
  30. Hi all, I'm testing a mix of Unigui (ExtJs Layout) and Pure.css for get a TOTAL CLIENT Responsive features. Work is in progress, but this is a short video of result. I want to get a client (in browser) responsive operations ,to avoid too much communication with the server, especially with large installations. Any hint or help is valuable, thank you! Happy New Year to all! Demo Responsive_GoogleChrome.mp4
    1 point
  31. Hello, For example: function beforeInit(sender, config) { config.style = "box-shadow: 0 3px 30px green;" + config.style; } That syntax is: box-shadow: [horizontal offset] [vertical offset] [blur radius] [optional spread radius] [color];
    1 point
  32. Hello, Here is the solution: 1. UniDBGrid1.ClientEvents.ExtEvents -> function afterrender(sender, eOpts) { sender.view.rowExpander.collapseRow = function(rowIdx) { var rowNode = this.view.getNode(rowIdx), row = Ext.get(rowNode), nextBd = Ext.get(row).down(this.rowBodyTrSelector), record = this.view.getRecord(rowNode), grid = this.getCmp(); if (!row.hasCls(this.rowCollapsedCls)) { row.addCls(this.rowCollapsedCls); nextBd.addCls(this.rowBodyHiddenCls); this.recordsExpanded[record.internalId] = false; this.view.fireEvent('collapsebody', rowNode, record, nextBd.dom); } }; } 2. private { Private declarations } FPrevRowID: Integer; 3. procedure TMainForm.UniFormCreate(Sender: TObject); begin FPrevRowID := -1; end; 4. procedure TMainForm.UniDBGrid1RowExpand(Sender: TUniCustomDBGrid; const RowId: Integer; var RowControl: TControl; Container: TUniContainer); begin if FPrevRowID=-1 then begin FPrevRowID := RowId end else begin UniDBGrid1.JSInterface.JSCall('view.rowExpander.collapseRow', [FPrevRowID]); FPrevRowID := RowId; end; RowControl := TDetailFrame.Create(Container); end; 5. procedure TMainForm.UniDBGrid1RowCollapse(Sender: TUniCustomDBGrid; const RowId: Integer; Container: TUniContainer); begin if FPrevRowID=RowId then FPrevRowID := -1; end;
    1 point
  33. Try this: function painted(sender, eOpts) { var me = sender.inputElement; me.setStyle('line-height', me.getStyle('font-size')); }
    1 point
  34. Hello, In case anyone is interested to send mails with gmail, Mr. Geoffrey Smith has posted to GitHub this utility: https://github.com/geoffsmith82/GmailAuthSMTP From Post: https://en.delphipraxis.net/topic/1949-sending-email-via-gmail-using-oauth-20-via-indy/?tab=comments#comment-24856
    1 point
  35. Hi there, I suggest you use the login form for this. Display your splash screen after a successful login and before showing main form. See attached sample project. SplashDemo.zip
    1 point
  36. Farshad tested and approved, some components do not show the linux platform to add to the project, but realize that add or component with a windows platform and switch to linux, compile and run a custom test application.
    1 point
  37. Чтобы "сохранить" шрифты, используйте такой код: with UnimDBLookupComboBox1 do begin JSInterface.JSAddListener('painted', 'function(){this.inputElement.setStyle("font-family", this.inputElement.getStyle("font-family") + ", FontAwesome")}'); JSInterface.JSConfig('placeholder', [#$f002 +' Search']); end;
    1 point
  38. Hello, Will there be any extensions for expired license? Our license just got expired before the latest publish of build 1585.
    0 points
×
×
  • Create New...