Leaderboard
Popular Content
Showing content with the highest reputation since 08/24/23 in all areas
-
Completely unnecessary this question about the future of Unigui If the Unigui team doesn't create anything new and just improve what already exists, giving more stability bug fixes it's already great everything we need in terms of components we have with Unigui For me Unigui is perfect. I managed to migrate all my ERP of 520.000 thousand lines of code to Unigui Instead of complaining let's help the team by always renewing our licenses. Hug to everyone.7 points
-
I have the same opinion. nothing is perfect but out of all the frameworks I tested to create Radcore, Unigui was my best choice. 4 years after Radcore was created, I am proud to have collaborated with the sale of new licenses in Brazil, as I explain to my users the importance of this and they, how it has results, licensing and/or renewing their licenses.4 points
-
dgAllowSelfUpdate - Normally when you edit a grid row directly, the entire row won't be refreshed until all changes in row are committed to the related dataset. Sometimes when row contains calculated fields you may want to refresh the row before all changed are committed. By enabling this option the related grid row will be refreshed each time a field is edited. This option is disabled by default. You can enable it if your dataset contains calculated fields and you want to update the row before it is committed. http://unigui.com/doc/online_help/api/uniGUITypes_TUniDBGridOption.html3 points
-
This problem - is not a problem. This happens because I did not clear params of my connection. Having a blank setup page like this. is not the same as - "there are no params"! I made the error of reusing an earlier FDConnection component ... and that cost me some hours of debugging 😕 And that will give the error - that the connection cannot be pooled. Thanks all for your help in trying to help me along. And I hope this information can help others as well.2 points
-
Hello, I don't know where you got it from: In your case this will be correct: procedure TMainmForm.UnimFormCreate(Sender: TObject); begin var oPanel:= UnimContainerPanel1; // TuniLayoutConfig(oPanel.LayoutConfig).Cls:= 'mainbackground'; var oJS:= oPanel.JSInterface; oJS.JSAddListener('painted', oJS.JSFunction('sender', 'sender.bodyElement.setStyle(''background'', ''url(/files/mainlogo2.jpg) repeat scroll 0% 0%'')')); end;1 point
-
What you are talking about is a PWA (Progressive Web App). PWAs are web apps that are installable on mobile devices. So yes, you can make your unigui app installable on any device by converting it to a PWA. See my post on how to do it:1 point
-
1 point
-
// something like this procedure TMainForm.UniBitBtn1Click(Sender: TObject); procedure DisableControls(Ctl: TControl; AEnabled: Boolean); var I: Integer; WC: TWinControl; begin if Ctl is TWinControl then begin WC := TWinControl(Ctl); for I := 0 to WC.ControlCount-1 do DisableControls(WC.Controls[i], AEnabled); end; Ctl.Enabled := AEnabled; end; begin Self.Enabled := not Self.Enabled; DisableControls(Self, Self.Enabled); // end;1 point
-
Thanks again, I correct my code to and now it's work : from: // if (window?.navigator?.connection) { //- this work on IPhone + Safary, but not work on Android 5 + Google Chrome to : if (window.navigator && window.navigator.connection) { //- this work on IPhone + Safary + Android + Google Chrome ... my code from above }; I will use information from userAgent for some of my functions.1 point
-
Hello @irigsoft Can you try also this approach? procedure TUniServerModule.UniGUIServerModuleHTTPCommand( ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; var Handled: Boolean); function getOSName(AUserAgent: string): string; begin if AUserAgent = '' then begin Result := 'Unknown OS'; Exit; end; AUserAgent := LowerCase(AUserAgent); if Pos('win', AUserAgent) > 0 then Result := 'Windows' else if Pos('mac', AUserAgent) > 0 then Result := 'Macintoch' else if Pos('linux', AUserAgent) > 0 then Result := 'Linux' else if Pos('android', AUserAgent) > 0 then Result := 'Android' else if Pos('like Mac', AUserAgent) > 0 then Result := 'iOS' else Result := 'Unknown OS'; end; begin // getOSName(ARequestInfo.UserAgent) end; Based:1 point
-
1 point
-
Forget, sorry, I saw unimFSsignature and unimFScamera1 point
-
Best solution: 1- https://jsontodelphi.com/ Paste your JSon example and it will generate all code and units to use it in your Delphi project in the best way available. (It's a "Marlon Nardin"'s project. Can get in touch with him at this very forum). 2- In your Delphi Project declare the units downloaded from the website and just use as a regular class. 3- There is no better solution than this one to Delphi/JSon, regarding accessing/importing JSon data to your project. Should be native to RAD IDE. 4- Se Dataset Serializer at GitHub (https://github.com/viniciussanchez/dataset-serialize-adapter-restrequest4delphi) that provide more powerful features and manipulating JSon as a regular Table. 5- Learn to use JS function JSON.stringify() and ajaxRequest, in all of its mess with uniURLFrame, and HTMLFrame. That's all you need to move data between webbrowser, forms and Delphi (unigui) tables and DB logic. I'm working on a new book all about those topics and more.1 point
-
Hi irigsoft, the local temp table is visible only to the connection/session that creates it and is deleted when the connection/session is closed. You should work with GLOBAL TEMP TABLES. Global temp tables are visible to everyone and are deleted when all connections that have referenced them have closed. A flexible solution, no need to change applications, data are cleaned automatically.1 point
-
Hello everyone! A while ago I looked for a component or something that made it easy to use Highcharts in Unigui but I was unsuccessful. So I decided to develop my own component to do this. After 2 months of work is in a more stable version and decided to share with the community. I remind you that Highcharts is free for personal use only. Download from github: https://github.com/andriwsluna/Unigui-Components With this component it is possible to generate a chart with only 6 lines of code. Follow : EchoHightChart1.HighChartOptions.title.text.Value := 'Introduction'; EchoHightChart1.HighChartOptions.series.Datasource.DataSet := FDMemTable1; EchoHightChart1.HighChartOptions.series.List.FieldNameForSerie := 'Operation'; EchoHightChart1.HighChartOptions.series.List.FieldNameForX := 'month'; EchoHightChart1.HighChartOptions.series.List.FieldNameForY := 'value'; EchoHightChart1.Load; Note that there is a Datasource for data access. See demo: PM me to contribute with this project. Thanks.1 point
-
1 point
-
Fix: On Linux computer please go to below folder (or the respected folder for your particular deployment): /etc/fmsoft/unigui/unigui_runtime/unipackages-7.5.1/themes Rename Css folder to css. (That's why it works in Windows but not in Linux. Linux FS is case sensitive) We will also fix it internally for the next build.1 point
-
1 point
-
Hi Pep, Great work. Really Congratulations! Thank you1 point
-
1 point
-
Thank you very much Sherzod! I have tried it in the example, it worked1 point
-
1 point
-
One possible solution: function store.nodeexpand(sender, eOpts) { var store = this; var colIndx = 1; /* Second column */ sender.childNodes.forEach(function(node) { var leafCount = 0; store.getNodeById(node.data.id).cascadeBy(function(_node) { if (_node.isLeaf()) leafCount++; }); if (!node.isLeaf()) node.data[colIndx] = leafCount; }); store.grid.getView().refresh(); }1 point
-
1 point
-
News All components are compatible with the Delphi 11.3 Alexandria and latest version ExtJS 7.5.1 - uniGUI 1.90.0.1571 https://store.falconsistemas.com.br [FSAsaas] Added support for the new notifications; [FSAsaas] Updated for the new V3 EndPoints; [FSAsaas] Added new filters in the subscription listing; [FSQrCodeScanner] Fixed initialization of some cameras; [FSQrCodeScanner] Added support for new camera scan formats; [FSSignature] Fixed bug in resize event on component initialization; [Installer] Updated installer for UniFalcon package components;1 point
-
When i was searching for slider in forum i found some posts, but couldn't apply those decisions. Also i found WOW slider - but it didn't work correct in my project. All of them was beautiful and amazing - that is true. But sometimes it is needed just some working decision. So I've created my simple simple slider. Working example is here Code below Getting pics for slider, lets say max number is 10 procedure TSlider.DataModuleCreate(Sender: TObject); var appPath:string; begin FSlidePathesSL:=TStringList.Create; FSlidePathesSL.Clear; if TFile.Exists( UniServerModule.StartPath+'pics\slides\1.jpg' ) then FSlidePathesSL.Add('pics\slides\1.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\2.jpg' ) then FSlidePathesSL.Add('pics\slides\2.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\3.jpg' ) then FSlidePathesSL.Add('pics\slides\3.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\4.jpg' ) then FSlidePathesSL.Add('pics\slides\4.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\5.jpg' ) then FSlidePathesSL.Add('pics\slides\5.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\6.jpg' ) then FSlidePathesSL.Add('pics\slides\6.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\7.jpg' ) then FSlidePathesSL.Add('pics\slides\7.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\8.jpg' ) then FSlidePathesSL.Add('pics\slides\8.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\9.jpg' ) then FSlidePathesSL.Add('pics\slides\9.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\10.jpg' ) then FSlidePathesSL.Add('pics\slides\10.jpg'); end; We need uniImage on some Form or Frame, a named it iSlide in code Then we need unitimer on some Form or Frame. UniTimer works only on Form or Frame in UniGUI. Setting interval to 500 miliseconds!!! <<< And handling onTimer Event. procedure TClientForm.SliderTimerTimer(Sender: TObject); var picture: tpicture; begin picture:=TPicture.Create; try SliderTimer.Tag:=SliderTimer.Tag+1; if (SliderTimer.Tag=6) then UniSession.AddJS(iSlide.JSName + '.el.fadeOut({duration: 1000})'); if SliderTimer.Tag=8 then begin // nextSlide Inc(FSlideNumber); if FSlideNumber=FSlider.SlidePathesSL.Count-1+1 then FSlideNumber:=0; picture.LoadFromFile(UniServerModule.StartPath+FSlider.SlidePathesSL[FSlideNumber]); iSlide.Picture.Bitmap:=nil; iSlide.Picture.Assign(picture); end; if SliderTimer.Tag=8 then begin UniSession.AddJS(iSlide.JSName + '.el.fadeIn({duration: 1000})'); SliderTimer.Tag:=0; end; finally picture.Free; end; end; One thing to improve sliding, suggested by DD - is to use 2 uniimages to avoid white space beetwen slides. I will do it later and post here. Also other effects could be applied, not only fade - but for that we should look to Sencha docs API! Or I suppose jQuery also could be used here. Best wishes to all! If you have another decisions - please share. DD, special thanks for extJS fade effect!1 point
-
Hello @Luciano França Can you try this approach for now?1 point
-
1 point
-
Hello Google map works. Did you check the demo? I'll check how to add images as layer1 point
-
Can you please check? uniGUI - v1.90.0.1569: Bug [UNG-3393] - UniFileUpload: Bug when file name includes Unicode characters.1 point
-
Hi Luciano, please make a screenshot or a demo of your multicolumn popup, thanks1 point
-
1 point
-
Hi Irigsoft. Thanks for the advice. I'll try. If something interesting comes up, I'll share it.1 point
-
1 point
-
1 point
-
1 point
-
I figured it out, thanks to The following C++ code works and creates a LineSeries and AreaSeries dynamically, exactly what I want: int I; TUniLineSeries *LineSeries; TUniAreaSeries *AreaSeries; LineSeries = new TUniLineSeries(UniChart1); LineSeries->Name = "NewLineSeries"; LineSeries->Parent = UniChart1; for (I=1; I<=25; I++) LineSeries->Add(Random(1000), IntToStr(I)); AreaSeries = new TUniAreaSeries(UniChart1); AreaSeries->Name = "NewAreaSeries"; AreaSeries->Parent = UniChart1; for (I=1; I<=25; I++) AreaSeries->Add(Random(1000), IntToStr(I));1 point
-
Ваш случай, возможно я не правильно понимаю... Тогда просто включите эту опцию в designTime.1 point
-
Я подумал что Вы должны менять SelModel динамически. Использовать RowModel или же CellModel, нет?1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
Hi guys, There has been a lot of conflicting information on the forum about whether uniGui can create PWA apps and how to go about turning your app into a PWA. I have done quite a bit of work with PWA’s and I am hoping that this post will clarify the issue and provide easy-to-follow guidelines for those who are interested. To make the process easier I have selected a simple demo app that comes with uniGui and uploaded it for you after converting it to PWA. You can use the url below to see the resulting PWA on any device. https://www.qssldtf.com:8086 The answer to whether uniGui is PWA capable depends very much on what aspect of PWA you are looking for. Clearly there is no doubt that any uniGui app can be made installable on all devices that support PWA technology. This includes all mobile devices as well as desktops running Chrome or MS Edge. Firefox & Opera support aspects of PWA but do not allow installation. And simply making your app installable makes such a massive a difference to ease of use (no browser, faster launch, full-screen, smooth navigation etc.) that there should be no excuse why you would not want to do it. How easily this can be done depends on the deployment option you have chosen. More to this below. The other aspects of PWA (offline operation, push notification & access to device resources) are, in my opinion, only achievable with uniGui if you build your UI with HTML and JavaScript because otherwise Ext JS puts too many stumbling blocks in the way. There are 3 basic requirements to making your app a PWA: The site must be accessed via HTTPS with a valid SSL certificate. The site must have a valid web Manifest You must supply and register a Service Worker HTTPS requirements PWA sites will only work over a secure connection with a valid SSL. However, for development purposes Google Chrome allows you to bypass this requirement when working over localhost so you can easily debug and install the PWA on your development device. This feature is not a default setting in Chrome. You need to enable it via chrome://flags as explained here Options for testing service workers via HTTP. Web Manifest The web manifest is a text file that contains a single JSON object whose fields map out the essential settings of your PWA site. By convention the manifest usually has the filename manifest.json or manifest.webmanifest and must reside in the root folder of your app. It contains all the information needed to tell the browser how the PWA will look when it is installed on the target device and configures how it will behave when it is launched. The manifest must also point to a list of icons of varying sizes to be used on splash-screens of devices you are targeting. There is a wealth of information about the web manifest online so I won’t say anymore here, except to mention that this is where there is a stumbling block with uniGui, unless you are deploying via ISAPI. As many developers have discovered, it is impossible to import the manifest if your app is running in standalone mode, with or without hyper-server. You will consistently get the dreaded “401 (unauthorised)” error. However I managed to come up with a means to sneak the manifest in through the back-door and I will share that below. Service Worker The Service Worker is a piece of JavaScript code that runs in its own thread in the browser background and intercepts and routes all the communication between the client side of your app and both the server and the rest of the world. You have tools to interrogate and manipulate this communication at will with JavaScript. You can immediately see how things like “working offline” and “push notifications” evolve from this. Every PWA running in the browser must register its own service worker. By convention the service worker has a filename like sw.js and usually reside in the root folder of your app. Depending on the desired functionality the service worker can be very complex or a simple stub that just relays messages without any interrogation. The service worker included in the demo project I have uploaded with this post is of the latter type and you can safely use it in all your apps. However, every service worker must have a unique “cache-name” so you need to edit the file and change the embedded cache-name to something that matches your app-name. What is with Safari At the point of this writing Safari does not yet support the web manifest. When you run you PWA on any Safari device the manifest is completely ignored. Instead, in order to get a PWA to work Safari requires that you insert some essential meta tags into the header of your html. It so happens that this anomaly with Safari makes it much easier to convert a uniGui app installable on Apple devices. Just give the app the little stub of service worker discussed above and add a tiny bit of JavaScript into the ServerModule.CustomCSS to activate it then add the following meta tags and into the ServerModule.CustomMeta and you have a working PWA for all Safari Devices. Gone is the “401 (unauthorised)” nightmare. <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="apple-mobile-web-title" content="Video Demo"> <meta name="apple-touch-icon" href="/files/icons/i144x144.png" sizes="144x144"> <meta name="apple-touch-icon" href="files/icons/i192x192.png" sizes="192x192"/> <meta name="apple-touch-icon" href="files/icons/i152x152.png" sizes="152x152"/> I continue to see recent articles online that tell you that in order to get your PWA to also work on Safari you have to insert these meta tags into your app. This is old news guys. This Safari issue was made redundant in April 2020 when Google introduced PWACompat. This utility will look at your web manifest and automatically adjust the html of your app to satisfy Safari (and other legacy browsers). We’ll see how to use it below. So how do you go about converting you uniGui to PWA The components and bit of code you need are included in the project I have supplied so I suggest you start by downloading and compiling the project to get to grip with how things work. The project is very simple and should compile without any issues. Note that I have configured the project to store the resulting exe and dcu’s in their own folders because I prefer to keep the source folder uncluttered. After compiling, run the app by double-clicking on the resulting exe then use Chrome to access http://localhost:8077. Don’t forget to configure Chrome to bypass HTTPS requirements as stated above beforehand. Once the site has opened I suggest you activate Chrome’s dev-tools (F12 key) and switch to the “application” tab. There you can see that both the service worker and manifest have installed successfully and all the icons will be shown. You should now also see an install button in the toolbar. Depending your version of Chrome, you might have to close and restart the site if you don’t see the install button. Go ahead and run the install, it is very easy to uninstall later. The PWA should install immediately and switch over to a full-screen standalone application and the app icon should appear on your desktop. By the way, the easiest way to uninstall a PWA is to go to chrome://apps. All installed PWA’s will be shown and you can right-click to select the uninstall option. It might interest you to know that the PWA will also be registered as a valid Windows application in the Registry. So you can uninstall it by going to “Control Panel -> Programs & Features”. Lets’ analyse the PWA components in the demo project In the root folder of the executable you can see the following required files: manifest.json sw.js (Service Worker) We also have a list of splash-screen icons stored in the folder files/icons. That is in general all you need from a components point of view. In theory all you then need to do now is to import the manifest and register the service worker when the project starts up. Importing the manifest You do this by inserting this into ServerModule.CustomMeta: <link rel="manifest" href="/manifest.json"> Registering the Service Worker This is done with the bit of JavaScript shown below. You insert this into ServerModule.CustomCSS. As you can see, it is good practice to first check whether the host browser supports service workers before attempting to register. In the script I have supplied with the demo project I have inserted some logging (console.log) to show weather or not registration has succeeded. You can see the results in the “console” page of the dev-tools. You need to comment the log statements out before publishing your PWA app. </style> <script> if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/sw.js') } </script> <style> If you are deploying through ISAPI that is all you need to do. The site will work as a PWA in Android and Chrome. But not Safari. In order for Safari to work you need bring in the PWACompact utility discussed above. You do this by adding the pwacompat link in the ServerModule.CustomMeta entry, before the manifest link. So the CustomMeta entry will look like this (note I included the favicon injection that we all do): <link rel="icon" type="image/png" href="files/icons/i192x192.png" sizes="192x192"/> <meta name="apple-mobile-web-app-capable" content="yes"> <script async src="https://cdn.jsdelivr.net/npm/pwacompat" crossorigin="anonymous"></script> <link rel="SHORTCUT ICON" href="/favicon.ico"> <link rel="manifest" href="/manifest.json"> Briefly, the PWACompat utility will analyse your manifest and insert additional meta links to satisfy Safari. You will them have a PWA that will work in all PWA compatible browsers. But, as things stand, this will only work when deployed through ISAPI. If you are running in standalone mode the “manifest” link will fail with a “401 (unauthorized)” error and PWACompat will fail because it does not have a manifest to work with. To fix this issue I borrowed an idea from here How to Setup Your Web App Manifest Dynamically Using Javascript and adjusted it to overcome some ExtJS quirks. The trick here is to remove href="/manifest.json" from the manifest link in the CustomMeta script and replace it with a placeholder id that we can use later to inject a dynamic manifest. The manifest meta link now looks like this: <link rel="manifest" id="manifest_link"> What I did for standalone deployment is to read the manifest in Delphi and generate some JavaScript that will be injected into the starting html. The resulting JavaScript must be inserted into the “Script” field of the form that activates first. If your application uses a Login form the script should will be inserted the LoginForm is activated, otherwise it has to be inserted into the MainForm. The project demo I have supplied does not have a Login form so the script is inserted as follows in the Main form: procedure TUniLoginForm1.UniLoginFormCreate(Sender: TObject); var sManifest : String; begin sManifest := UniMainModule.GetDynamicManifest; if sManifest > '' then Self.Script.Text := sManifest; end; As the code indicates I have placed the required JavaScript generation code in the MainModule for ease of use. The UniModule.GetDynamicManifest function converts the contents of the manifest.json file into a JavaScript object and add the necessary java code that will modify the manifest link we added via CustomMeta (<link rel="manifest" id="manifest_link">) and insert an “href” that points to the new manifest object. You will notice when you look at the manifest generation function that it first checks the manifest.json to make sure that it contains all the essential fields. I discovered by accident that Delphi’s JSON handling does not have decent exception handling and there is no way of avoiding a crash if you try to reference a field that does not exist. If your manifest.json does not conform you will get an empty JavaScript back and the PWA won’t work. In case you want to see the resulting JavaScript I have added some code in the function to save it in the folder Config off the root folder. You just need to un-comment it. Additionally, it is a habit of mine to use the ini file concept to configure my applications. This is what I have done regarding the CustomMeta and CustomCSS scripts. I store the changes I need in an external text file and import it at start-up. For this project I have stored the data in the folder “Config" within the root folder. This is the code I use to populate the ServerModule: procedure TUniServerModule.UniGUIServerModuleCreate(Sender: TObject); var sData, cfgFolder, cfgFile : String; begin cfgFolder := ServerRoot+'config\'; //Import service worker registration cfgFile := cfgFolder + 'script.cfg'; if FileExists(cfgFile) then with TStringList.Create do try LoadFromFile(cfgFile); sData := Text; if sData > '' then CustomCSS.Text := sData; finally free; end; //Import manifest meta links cfgFile := cfgFolder + 'meta.cfg'; if FileExists(cfgFile) then with TStringList.Create do try LoadFromFile(cfgFile); sData := Text; if sData > '' then CustomMeta.Text := sData; finally free; end; end; To summarise, these are the steps you need to do to convert an existing uniGui app to PWA: Create a web manifest.json and place it in the root folder of your executable. I suggest you initially copy my manifest and change the “name”, “short_name” and start_url to fit your project. For standalone deployment the start_url should point to the project executable if you are not using the hyper-server, otherwise it should point to hyper_server.exe. For ISAPI it should point at the hyper-server dll, whatever you have called it. 2 quick tips here: The “name” in the manifest is used on the splash screen of mobiles and the caption of the MainForm when running on desktops. However what you have entered in the “name” field will be concatenated with whatever you have in the “Title” field of the ServerModule. So remember to blank the ServerModule’s Title field. FYI the “short_name” will be used on the home-screen icon of mobiles and shortcut icon of desktops, but only if the “name” is too long (I think >40 chars). There are numerous online tools to help you create your icons. I use https://manifest-gen.netlify.app. You just need to upload a 512x512 image and it will generate all the icons you require. Copy my sw.js into the executable root folder. Copy the contents of my files/config folder into the files folder of your executable. Copy the CustomMeta & CustomCSS importing code from my project into your ServerModule. If you are using standalone deployment copy the dynamic manifest generation function from my project into your MainModule and insert the scrip-handling calls in your LoginForm or MainForm. Something to be aware of regarding installing you PWA’s on your test device: Chrome uses the URL as a unique identifier for each PWA. So once you have installed an app running on https://localhost:8077 you won’t be able to install another app running on the same port. So you have to either un-install the previous one or use a different port. That’s it guys. I hope this post generates a bit of renewed enthusiasm. PWA-VideoDemo.zip1 point
-
This is a demo project to implement the "Sign in with Google" button using Unigui, enjoy ! LoginForm - Sign_in_with_Google.zip1 point
-
Performances are important and we use rest services for scalable system when users are a lot. Especially in a multi-server frontend system throught Hyperserver we have "remote" DB services with rest for optimize data requests and avoid big datasets in memory's UNIGUI frontend. Dataset is the most direct way in Delphi, but not the fastest way on data remoting.1 point
-
HI fernando not in this moment. I'm a bit full in this period. As soon as I have some time I prepare an example with Lazarus FR and unigui1 point
-
UniSpEdit Added. it is a placeholder label for input Demo : http://aslanhayri.com/demo/UniSpecialDemo.dll1 point