Jump to content

GerhardV

uniGUI Subscriber
  • Posts

    385
  • Joined

  • Last visited

  • Days Won

    27

Everything posted by GerhardV

  1. OK I have tracked the culprit down by deleting components one by one. It was a TUniContainerPanel that had the following ExtEvents assigned: function beforerender(sender, eOpts) { sender.addClass("x-panel-container"); } First I removed the event but the error persisted, then I cleared the cache but the error still persisted. Then I deleted the panel and the error was gone. I then placed another TUniContainerPanel on the TabSheet and it still worked fine. So I have no idea what the real problem was except for that it was that specific control....maybe some DFM corruption?
  2. Well not a commercial project, just a project I use to test and play with themes. Loads fine in 1.0.0.1425 but not in 1.0.2.1444.
  3. I have no idea where to start looking based on the following error message I receive when the page is loading. Also I do not get this with Version 1.0.0.1425. "Cannot set property 'component' of null". Nothing in the console...any ideas?
  4. Farshad how do you make the triton.modified theme available in the drop down selection? I have only noticed the file "uni-xtheme-triton.modified.css" in the "C:\dev\FMSoft\Framework\uniGUI\uni-1.0.2.1444\css" folder. I have added a custom file of mine there but it is not available in the selection list.
  5. 49 years Started with a VIC 20, Sinclair ZX81 and later the Spectrum. Turbo Pascal 2.0 and was also at the launch of Delphi 1 and using it ever since. First big system was actually in PAL (Paradox Application Language), it was a Laboratory Information Management System. Love Delphi...easy to read...nice constructs...big fan of the separate interface and implementation segmentation...even with some bugs it still rocks today. And of course uniGUI has blown new life into it. [HIGH FIVE]
  6. "In your example you have that. Delete it." I think he meant you have to delete it instead
  7. Thank you. if SameText(Columns[i].FieldName, pColumnName) then ...
  8. Yep good point...forgot about the helper (decorator) classes
  9. You can easily extend the TuniDBGrid class as such and create your own component: TMyUniDBGrid = class(TUniDBGrid) public function ColumnByName(const pColumnName: string): TUniBaseDBGridColumn; end; function TMyUniDBGrid.ColumnByName(const pColumnName: string): TUniBaseDBGridColumn; var i: integer; begin for i := 0 to Columns.Count-1 do begin if Columns[i].FieldName = pColumnName then begin Result := Columns[i]; Break; end; end; if (Result = nil) then raise Exception.Create('Column "' + pColumnName + '" does not exist!'); end;
  10. GerhardV

    File ListView

    Can not remember where I got this from but maybe this is what you are looking for?
  11. You probably can't do it OnCreate as the frame might not be defined yet as it it is still in the constructor, probably needs to move the responsibility to the owner form where you know the frame has been created. (hence after create)
  12. Walter this will achieve what you are looking for. Just remember that the Login Form might close before the ajaxEvent has been handled so you should choose where you want to inject the JS code. I have attached a sample project as well. procedure TfrmLogin.btnLoginClick(Sender: TObject); begin UniSession.AddJS('$.getJSON(''//freegeoip.net/json/?callback=?'', function(data) {' + 'ajaxRequest(' + Self.WebForm.JSName + ', "ClientIPAddr", ["ip="+data.ip]);});'); end; procedure TfrmLogin.UniLoginFormAjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings); begin if SameText(EventName, 'ClientIPAddr') then ShowMessageN(Params.Values['ip']); end; ClientPublicIP.zip
  13. Walter just send an Ajax request back to the MainForm and handle it in the OnAjaxEvent event? ajaxRequest(MainForm, 'ClientIPAddr', [ip=192.168.1.1])
  14. Depending on your criteria for switching between them, you can have an "empty" main form with a uniContainerPanel. You then build two separate uniFrames which you assign at run-time to the container panel based on your criteria. That will solve the visual aspect of it, the main form however will still contain the code behind, or logic but that is transparent to the user.
  15. You can use the search functionality on this forum to look for "datamodule", below are two results: http://forums.unigui.com/index.php?/topic/7884-multiple-datamodules/?hl=datamodule http://forums.unigui.com/index.php?/topic/5663-tdatamodule-to-use-or-not-to-use/?p=28979
  16. Ditto...3 million? ...have to re-think the design...nobody can make sense of 3 million records...will take days to scroll through given the real estate on a monitor. Limit the records by imposing a criteria....think what you really want to see.
  17. Not sure what an "accident character" is but maybe there is a setting for language/region?
  18. Another fellow South-African...welcome!
  19. Thanks Walter....it might come in handy.
  20. Upgrade to the latest Demo Version 1.0.0.1399. Your demo build 1386 is old. Or maybe ask at the website where you downloaded "your 1386 version" from?
  21. One solution is to build a router/gateway (or use NGINX) which redirects the traffic to the correct service based on a regular expression and the resource path, which mean that you have only one port open to the public and the services each have their own internal port. It also adds another level of security as well as load balancing. https://www.nginx.com UniGUI also uses REST although might it be only one resource namely "/event".
  22. There are many types of Barcodes, you would need to adjust the decoder property array under the state object to cater for the expected types in the live_w_locator.js file. decoder: { readers : ['ean_reader', 'ean_5_reader', 'ean_2_reader', 'code_128_reader'] See the examples on the Quagga website...in which case they have a drop down to select the type but you can pass it in as above. Remember the more you define the longer it might take to recognize it as it has to try all of them.
×
×
  • Create New...