Jump to content

andyhill

uniGUI Subscriber
  • Posts

    1257
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by andyhill

  1. grdWorkSheet.ClientEvents.UniEvents.Clear; MyScript:= 'pagingBar.afterCreate=function pagingBar.afterCreate(sender)'+ '{ '+ ' sender.add( '+ ' [ '+ ... ' { '+ ' xtype: ''tbseparator'' '+ ' }, '+ ' { '+ ' xtype: ''label'', '+ ' id: "gridLabelid", '+ ' text: ''abc'', '+ ' margin: ''0 0 0 10'', '+ ' }, '+ ' { '+ ' xtype: ''tbseparator'' '+ ' }, '+ ... ' ]); '+ '} '; grdWorkSheet.ClientEvents.UniEvents.Add(MyScript); Above my FormCreate code adds a Label to the Pagingbar and it displays as expected (please advise if I have added the Label correctly). Elsewhere I want to change the Label.Text value at runtime grdWorkSheet.JSInterface.JSCode(#1'.pagingBar.getComponent("gridLabelid").setValue(''Andy'');'); SetValue fails, please advise how to change the "gridLabelid" - thanks.
  2. From a coding point of view I can easily create the list, parse the list, reject matching words if necessary, BUT I did not want to type into my application all of the ugly words (plus I do not know them all, nor do I want to). It would have been nice to have an encrypted lookup to check questionable text against. Maybe I am old fashioned 🫣 eg. if Obscene(UserText) then begin ShowMessage('Obscenities are not tolerated - Aborting !'); end else begin ... end; Yes I am sure there are URL offerings out there but I need to watch my pennies plus I am trying to limit URL services in my project. What about a UniGUI Community project ?
  3. That is a lot to ask, download and run many unknown EXE's (no code) ?
  4. I am looking at USER input text (Supplier Names, Item Names, Customer Names etc...) Thanks for the links - interesting.
  5. I am happy to learn about what is out there, could we have a UniGUI solution in the future (less opportunities to be intercepted) ?
  6. I searched the forum for a simple way to reject obscenities, are there any examples out there ?
  7. TLedgerTypesForm = class(TUniForm) ... procedure PromptLedgerType(Sender: TComponent; AResult: Integer; AText: string); ... procedure TLedgerTypesForm.btnProcessClick(Sender: TObject); begin Prompt('Ledger Name:', '', mtInformation, mbOKCancel, PromptLedgerType); // Prompts as expected ... procedure TLedgerTypesForm.PromptLedgerType(Sender: TComponent; AResult: Integer; AText: string); // Never fires begin if AResult = mrOK then begin ... I cannot understand why PromptLedgerType is never called ? I believe all procedures are declared correctly - am I having a seniors moment - please advise - thanks.
  8. When Grid shows no rows the user can still invoke ContextMenu, if Grid contains row(s) then my current coding below disables ContextMenu. How do we prevent Grid ContextMenu with zero rows ? Please advise - thanks ////////////////////////////////////////////////////////////////////////////// // Before Container MyScript:= 'beforecontainercontextmenu=function beforecontainercontextmenu(sender, td, cellIndex, record, tr, rowIndex, e, eOpts) '#13#10 + '{ '#13#10 + ' e.preventDefault(); '#13#10 + '} '; grdWorkSheet.ClientEvents.ExtEvents.Add(MyScript); // Container MyScript:= 'containercontextmenu=function containercontextmenu(sender, td, cellIndex, record, tr, rowIndex, e, eOpts) '#13#10 + '{ '#13#10 + ' e.preventDefault(); '#13#10 + '} '; grdWorkSheet.ClientEvents.ExtEvents.Add(MyScript); // Row MyScript:= 'rowcontextmenu=function rowcontextmenu(sender, td, cellIndex, record, tr, rowIndex, e, eOpts) '#13#10 + '{ '#13#10 + ' e.preventDefault(); '#13#10 + '} '; grdWorkSheet.ClientEvents.ExtEvents.Add(MyScript); // Before Cell MyScript:= 'beforecellcontextmenu=function beforecellcontextmenu(sender, td, cellIndex, record, tr, rowIndex, e, eOpts) '#13#10 + '{ '#13#10 + ' e.preventDefault(); '#13#10 + '} '; grdWorkSheet.ClientEvents.ExtEvents.Add(MyScript); // Cell MyScript:= 'cellcontextmenu=function cellcontextmenu(sender, td, cellIndex, record, tr, rowIndex, e, eOpts) '#13#10 + '{ '#13#10 + ' e.preventDefault(); '#13#10 + '} '; grdWorkSheet.ClientEvents.ExtEvents.Add(MyScript); // Before Item MyScript:= 'beforeitemcontextmenu=function beforeitemcontextmenu(sender, td, cellIndex, record, tr, rowIndex, e, eOpts) '#13#10 + '{ '#13#10 + ' e.preventDefault(); '#13#10 + '} '; grdWorkSheet.ClientEvents.ExtEvents.Add(MyScript); // Item MyScript:= 'itemcontextmenu=function itemcontextmenu(sender, td, cellIndex, record, tr, rowIndex, e, eOpts) '#13#10 + '{ '#13#10 + ' e.preventDefault(); '#13#10 + '} '; grdWorkSheet.ClientEvents.ExtEvents.Add(MyScript); // Header MyScript:= 'headercontextmenu=function headercontextmenu(sender, td, cellIndex, record, tr, rowIndex, e, eOpts) '#13#10 + '{ '#13#10 + ' e.preventDefault(); '#13#10 + '} '; grdWorkSheet.ClientEvents.ExtEvents.Add(MyScript);
  9. All good Sherzod, I was searching under "local storage" instead of "localstorage".
  10. I have followed instructions published on this forum but cannot fetch (get) the token 'BB' value which clearly exists in the Chrome Browser ? Str:= ''; with edtStore.JSInterface do JSCall('setValue', [jsstatement('localStorage.getItem("BB")')]); Str:= Trim(edtStore.Text); Please advise - thanks
  11. Can we please have a project wide solution to stop Browser "Save Password" prompt that pops up at all odd times, not even related to the current non-password editor. Something we can add to the MainForm.Script that will work across all editing - a Sencha solution. Individually manipulating each edit as mentioned on other Internet posts is not practical.
  12. Using port 80 Your HtmlMemo Component fails to add necessary tags to inserted images:- "id" "width" "height" to name a few. My primitive work around is attached, please paste an image (view source [tags missing]), DblClick inserted image again shows "id" missing. Please advise how to resolve. Ultimately all images in HtmlMemo need the function of grabbing and resizing buy the end user. Project1.zip
  13. OK, "id" now assigned. How do I get the "width" and "height" // Ctrl+V Paste ' sender.iframeEl.dom.contentDocument.body.addEventListener(''paste'', function(e) '+ ' { '+ ' var items = e.clipboardData.items; '+ ' if(items.length === 1) '+ ' { '+ ' var str = items[0].type; '+ ' if(str.indexOf("image") !== -1) '+ ' { '+ ' ajaxRequest('+MyJsName+', ''_PasteBefore_'', []); '+ I WANT TO SEND "ID", "WIDTH" & "HEIGHT" in params here ' } '+ ' } '+ ' else '+ // More or Less than one ' { '+ ' e.preventDefault(); '+ // Kill Paste ' } '+ ' }); '+ // Create Image ' function createImage(source) '+ ' { '+ ' var pastedImage = new Image(); '+ ' pastedImage.onload = function() '+ ' { '+ // Add Unique "id" ' pastedImage.id = Ext.id(); '+ // DO I NEED WIDTH and HEIGHT attributes recorded with image here ' }; '+ ' pastedImage.src = source; '+ ' } '+
  14. I have played with all sorts of concepts (bypassing stretch handles for now using DblClick to investigate the selected pasted image [if one uses Ctrl+V to paste image there is no "id" added to the <img tag ???]):- MyJsName:= htm001.JSName; htm001.ClientEvents.ExtEvents.Clear; MyScript:= 'initialize=function initialize(sender, eOpts) '+ '{ '+ // DblClick ' sender.getDoc().addEventListener(''dblclick'', function() '+ ' { '+ ' if (arguments[0].target && arguments[0].target.tagName.toLowerCase()==''img'') '+ ' { '+ ' ajaxRequest('+MyJsName+', ''_img_'', ["id="+arguments[0].target.getAttribute(''id'')]); '+ ' } '+ ' }); '+ // Ctrl+V Paste ' sender.iframeEl.dom.contentDocument.body.addEventListener(''paste'', function(e) '+ ' { '+ ' var items = e.clipboardData.items; '+ ' if(items.length === 1) '+ ' { '+ ' var str = items[0].type; '+ ' if(str.indexOf("image") !== -1) '+ ' { '+ ' ajaxRequest('+MyJsName+', ''_PasteBefore_'', []); '+ ' } '+ ' } '+ ' else '+ // More or Less than one object ' { '+ ' e.preventDefault(); '+ // Kill Paste ' } '+ ' }); '+ // Create Image ' function createImage(source) '+ ' { '+ ' var pastedImage = new Image(); '+ ' pastedImage.onload = function() '+ ' { '+ // Need To Add "id" to image here - please show how to make "id" unique ' }; '+ ' pastedImage.src = source; '+ //' alert(pastedImage.src); '+ ' } '+ '} '; htm001.ClientEvents.ExtEvents.Add(MyScript); Sherzod, while you are investigating Stretch Handles, please show me how to add unique "id" to pasted image - Thanks
  15. Sherzod, this only adds image which I have no problem with. I need (the component needs) the ability for the end user to select the already imbedded image and resize it.
  16. It is easy to paste images into the HtmlMemo however once inserted there is no way to resize the image, please advise how to apply stretch handles on image when selected with the editor so user can resize - Thanks
  17. In reality, my understanding is that anything the browser displays (obfuscated code underneath or not) it is ultimately accessible. Let me know what you come up with.
  18. In the past I used HiddenPanel for a staging area where I placed certain UniGUI IDE Visual Components that are hidden from Forms/Panels in general. eg. UniGrid uses a Custom Editor for a given field that is encapsulated into the grid. These days I make everything at runtime.
×
×
  • Create New...