Jump to content
uniGUI Discussion Forums


Popular Content

Showing content with the highest reputation since 03/19/19 in Posts

  1. 8 points
    I read somewhere here that was not possible to play a sound on the mobile platform using uniGUI. I completely forgot about the subject and these days I needed to put sound in one of my web/app/sites and already knew how to do with JQuery and mainly did not want those HTML5 audio controls disrupting the interface. And combining JQuery with uniGUI I was able to do much faster. So I made this example Desktop / Mobile showing that yes, "uniGUI DOES" sounds and very well. Both desktop and mobile. Example showing how to play direct from a URL, local (local file here refers to a file on the server and not from the client's computer, of course), using ClientEvents and conventional OnEnter Event. And in Mobile, no need to put in TAP, because it's obvious. Preview online. http://www.unigui.com.br:8077/ uniGUI DOES SOUNDS.rar
  2. 6 points
    I created a simple unit for google oauth2. To get QR Code, call UniImage1.Url:=GetQRCodeUrl(UniImage1.Width, UniImage1.Height, 'YOURSECRETKEY', 'your email address', 'Your name'); To ValidateOTP : if Format('%.6d', [CalculateOTP('YOURSECRETKEY')]) = UniEdit1.Text then begin // Valid end; Here some screenshots GoogleAuth.pas
  3. 4 points
    QrCode Reader for uniGUI That's is my new series (old "All about x topic") and now inspired in Chelsea DOES Series... (lol) here we go. This is the first experimental project for our future Pack 4 commercial/biz automation. The final version will have several other features as well as QrCode generation capability etc. This code is free and based on several JavaScript libs linked and adapted. This project design is hybrid. Restrictions: Chrome only allows WebRTC access via https or localhost. Safari ONLY https. FireFox is the most compatible of all. This is an HTML5 feature that has not yet been implemented in most browsers and many users have old versions. So check the browser version of your device and test with others browsers. Website that shows what each browser supports https://caniuse.com/#search=getUserMedia Mobile Compatibility with HTML5 http://mobilehtml5.org/ https://webrtc.github.io/samples/ https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API How to use: Copy the / files folder just below where you want to place your ISAPI or StandAlone. And let's rock ! Live Demo: https://lojasms.com.br/qrcode/qrcode.dll More Information, Resources, Books, and Project Packs visit http://www.unigui.com.br (the Brazilian portal to uniGUI). ' Enjoy... and have a good one! Sorry: but I'm experience some health problems today... tomorrow I'll post version with English Interface. Pack04-Project01 QrCode.rar
  4. 2 points
    Good Morning Sirs, From 6_3 edition something has changed in FastReport. If you are using a, empty frxDBDataSet (to save your time) and design your report on the fly, then add thees two line in your unit, from now : ___________________________________________________ frxReport1.DataSets.Add(DBMyDataSet); frxReport1.EnabledDataSets.Add(DBMyDataSet); ___________________________________________________ Thx to Paul Gursky (FastReport Support Team) procedure TfrmFastReport.Prepare_And_ShowReport(Report: TfrxReport; Exp: TfrxPDFExport); var AUrl : string; begin Report.PrintOptions.ShowDialog := False; Report.ShowProgress := false; Report.PreviewOptions.AllowEdit := False; Report.EngineOptions.SilentMode := True; Report.EngineOptions.EnableThreadSafe := True; Report.EngineOptions.DestroyForms := False; Report.EngineOptions.UseGlobalDataSetList := False; Exp.Background := True; Exp.ShowProgress := False; Exp.ShowDialog := False; fFile_Temp:=UniServerModule.NewCacheFileUrl(False, 'pdf', '', '', AUrl, True); Exp.FileName :=fFile_Temp; Exp.DefaultPath := ''; //****************************** Report.LoadFromFile(fFr3_File); // 1 DBMyDataSet.DataSet:=fFrDataSet; // 2 // FROM FastReport 6_3 (important) frxReport1.DataSets.Add(DBMyDataSet); //3 frxReport1.EnabledDataSets.Add(DBMyDataSet); //4 //****************************** fFrDataSet.DisableControls; // Yes Report.PrepareReport; Report.Export(Exp); UniURLFrame1.URL := AUrl; fFrDataSet.EnableControls; end; Best Regards.
  5. 2 points
    Hi , Document Viewer: simple interface unigui to view OpenOffice + Pdf documents. See : http://viewerjs.org DocViewer.zip Good fun . Regards Salvatore Marullo
  6. 2 points
    Hi Please assign an icon to button and set iconAlign to right. with UniButton1, JSInterface do begin JSConfigObject('listeners','btnIconEl', [JSObject(['click', JSFunction('sender','ajaxRequest('+JSName+', "iconClick");')])]); end;
  7. 1 point
    I feel dumb here. I downloaded the FMSoft_uniGUI_Complete_Professional_1.70.0.1493_Trial.exe after 18 month gap and noticed that the new look & feel is very different. My app used to have vibrant blue rounded buttons and red power-off icons that looked cool. Now they are ... 1. Rectangular and solid color 2. And in the grids where I could drag my mouse up and down to scroll the list up and down, then drag scrolling doesn't work anymore. I went to the online demo and it looks/works as expected(cool) and the dragging worked as expected. I compiled the new demos and ran them and they TOO are not draggable to scroll the grid list and the buttons don't look as cool. Is there some new property that I need to set in order to get that look/feel back again? Or did sencha remove the "coolness" from the OEM version? Something has changed and I don't know how to get it back. Thanks Davie
  8. 1 point
    Hi, Edit boxes can have different sizes on different themes. Try using a TUnimFieldSet.
  9. 1 point
    Hello, Which theme are you using? Have you tried with other theme, to clear your browser's cache? Are you using a custom CSS?
  10. 1 point
    I want to run two applications in one machine ,when hyperServer minimized to the taskbar,they have a same title and icon,can you change them?
  11. 1 point
    1.70.0 (Pulsar) +---------------------------------------------------------------------------------------- Improvement [UNG-2720] - TUnimMenu Scrollable property [UNG-2722] - Modify EXECURL constant to make it compatible with Google API. [UNG-2735] - unimDBListGrid: ImageOptions property for Columns [UNG-2738] - TUniPageControl: New OnChangeValue event. [UNG-2740] - HyperServer: New DetailedLog config property. [UNG-2743] - HyperServer: System Registry Configuration Application [UNG-2744] - Delphi 10.3.1 Rio Support [UNG-2759] - HyperServer: New "server_title" config property. Task [UNG-2174] - TUniTreeNode.MoveTo method [UNG-2723] - All response content types set to "text/html". [UNG-2745] - Sencha Ext JS upgraded to version [UNG-2751] - Web deployment document is not compatible with Apache 2.4 New Feature [UNG-2725] - OnMouseDown event for mobile controls. [UNG-2742] - Ext JS upgraded to version 6.7.0 [UNG-2746] - unimDBGrid: New Column.Menu property. [UNG-2758] - UniHTMLFrame: New OnUpdateHtml event. Bug [UNG-2719] - Error in Application Data Module C++ source code. [UNG-2721] - UniFileUpload remains behind the StayOnTop forms. [UNG-2724] - HTTP Callback issue with stream content type. [UNG-2726] - UnimPanel: Runtime color change does not work [UNG-2727] - Updating TUniMenuItem.Caption doesn't affect the attached TUniTreeMenu item. [UNG-2728] - Updating TUniMenuItem.ImageIndex doesn't affect the attached TUniTreeMenu item. [UNG-2729] - Changing UniTreeNode.ImageIndex at runtime doesn't work if Image is a web font. [UNG-2730] - PopupMenu doesn't fit in viewport. [UNG-2731] - UniDBGrid cause Access Violation on OnDataChange [UNG-2732] - TUnimLabel: OnClick Event does not fire [UNG-2733] - uniDBGrid: Render error: Cannot read property 'getWidth' of undefined. [UNG-2734] - TUniTreeView: Node text is misplaced when ShowIcons is false. [UNG-2736] - Ext JS data store is not freed after owner control is destroyed. [UNG-2737] - UniDBGrid: DisablesControls of dataset is not released if grid is destroyed before data is loaded. [UNG-2739] - HyperServer: HTTP custom headers are not relayed to the browser. [UNG-2741] - Can not navigate in message dialog buttons using Tab key. [UNG-2747] - Themes folder are incorrect in build 1487 [UNG-2748] - UniStringGrid Abstract error in build 1488 [UNG-2749] - uniCalendarPanel: Store AutoDestroy fails to work properly. [UNG-2750] - UniMenuItems: AV when trying to access JSId. [UNG-2752] - UniCanvas: Broken functionality on FireFox [UNG-2753] - Broken StressTest tool functionality. [UNG-2754] - Scalability issue when LoginBackground is assigned but LoginForm is not shown. [UNG-2755] - UniPageControl : TabSheet rendered in wrong index when TabSheet is added in an inherited form. [UNG-2756] - UniMainMenu: New menu items in an inherited form are always appended to the end. [UNG-2757] - Automatic redirection to a mobile session loses query parameters. [UNG-2760] - Ajax error when changing form's icon at runtime. [UNG-2761] - Can't set UniMenuItem.ImageIndex at runtime with font icons. [UNG-2762] - HyperServer: Node should run in service mode with PatchVCLService called. [UNG-2763] - TUniDBFormattedNumberEdit: Error: '-' is not a valid floating point value [UNG-2764] - UniComboBox: Trigger with IconCls 'x-form-date-trigger' doesn't show correct icon. [UNG-2765] - UniEdit: JS error when setting EmptyText at runtime.
  12. 1 point
    uniGUI - v1.70.0.1493 Improvement [UNG-2759] - HyperServer: New "server_title" config property.
  13. 1 point
    Hi Happy New Nowruz 1398(2019-2020). https://en.wikipedia.org/wiki/Nowruz Best Regards.
  14. 1 point
    I think it depends on the query itself: join, calculation, sub select etc. Extjs itself uses buffering in client-side like Android when using a listview. You can try to measure executing time for your query.
  15. 1 point
    Hi, Can you try this approach?: procedure TMainForm.UniButton1Click(Sender: TObject); var needToMove: TUniPanel; indxToMove: Byte; begin needToMove := UniPanel2; indxToMove := 0; UniContainerPanel1.RemoveControl(needToMove); UniContainerPanel1.JSInterface.JSCall('insert', [indxToMove, needToMove.JSControl]); needToMove.JSInterface.JSCall('show', []); end;
  16. 1 point
    Существует масса компонентов для генерации xls без использования OLE и не требующие установленного офиса. Мой Вам совет, воспользуйтесь ими. У вас же четко написано что вызывается метод ShowModal который блокирует работу приложения. А уж кто там у Вас его вызывает отсюда не видно.
  17. 1 point
    My solution is: procedure T_FRM.GRD_AfterLoad(Sender: TUniDBGrid); begin if GRD_.Tag>0then begin GRD_.DataSource.DataSet.Locate('PR_KEY', GRD_.Tag, []); GRD_.Tag:= 0; end; end;
  18. 1 point
    Hi, As the title says, I converted a library that Mike Heydon made to export a DataSet to old format Excel file (xls) without OLE or Excel installed. This library now converts an UniDBGrid to Excel. Sample of usage. // Add uses UExportExcel procedure TMainForm.UniButton1Click(Sender: TObject); var url, filename, reportname : String; exportExcel: TDataSetToExcel; i: integer; begin reportname := 'ExcelReport'; url := UniServerModule.LocalCacheURL+name+'.xls'; filename := UniServerModule.NewCacheFileUrl(false, 'xls', reportname, '', url); exportExcel := TDataSetToExcel.Create(filename); exportExcel.Grid := UniDBGrid1; exportExcel.WriteFile; FreeAndNil(exportExcel); UniSession.SendFile(filename, reportname+'.xls'); end; Hope it helps everyone. UExportExcel.zip
  19. 1 point
    I have 57. Working with Delphi from 1998. Started programming 1982 on IBM1130 and my first personal comp was ZX Spectrum
  20. 1 point
    onGetText Text: = FormatFloat ('###, ###, ## 0.00', TField (Sender) .AsFloat);
  21. 1 point
    Hi Project from here: http://3msoft.net/mhmd/dbgridtray.rar We will turn paging tool bar from: To this: What we did: We hide the First page, Last page, Refresh buttons We add a label to show how many selected rows we add two buttons aligned to the right We will use two images and we will put them inside a folder 'images': when we want to hide buttons we will need there index...
  22. 1 point
    uses JvDBGridExport, DBGrids; // Activex; for Word/Excel var mygrid : TDBGrid; myexport : TJvDBGridCSVExport; // myexport : TJvDBGridExcelExport; // myexport : TJvDBGridWordExport; // myexport : TJvDBGridHTMLExport; begin mygrid := TDBGrid.Create(nil); mygrid.DataSource := unimainmodule.myexportdatasource; // CoInitialize(nil); // call only if export to Word/Excel myexport := TJvDBGridCSVExport.Create(nil); // myexport := TJvDBGridExcelExport.Create(nil); // myexport := TJvDBGridWordExport.Create(nil); // myexport := TJvDBGridHTMLExport.Create(nil); myexport.FileName := 'c:\myexport.csv'; myexport.ExportSeparator := esSemiColon; // estab, esComma, esSemiColon myexport.Grid := mygrid; myexport.ExportGrid; // read exceptions in: myexport.LastExceptionMessage; myexport.Free; mygrid.Free; end; If you want to export to Word/Excel, then you have to have Office installed on the Server. Excel can easily read CSV files. You need to have JVCL in your Delphi.
  23. 1 point
    I have created some UniGUI components for my project, in that way I can re-use the visual objects that I have implemented at ease. I just wanted to share my way of doing this with you guys. Any comments, technical critiques are welcome. 1. Creating the Component Package Since I have more than one custom components, I prefer to keep them in a Deplhi Package instead of individual self registering Delphi units. So we start with creating a component package in Delphi. File > New > Other > Delphi Projects > Package 2. Adding a TUNIFrame to The Package As the base of the components, I'm using TUNIFrame. We are going to add a TUNIFrame first. File > New > Other > Delphi Projects > uniGUI for Delphi > Frame 3. Adding Child Components Decorate your new TUNIFrame with existing UniGUI components as you wish. In this example, my frame looks like the picture below. I'm also renaming the frame. In this case the name is 'frame_myunipanel'. Don't forget to save unit files to disk. I named the files as unit_myunipanel. The visual object tree is shown below: And this is how the project tree looks like. I saved package with the name 'package_myunipanel'. I have only one unit; unit_myunipanel in the project tree. Our package has some dependencies: Right click on package_myunipanel.bpl > View Source from the pop-up menu. requires rtl, vcl, vclimg, dbrtl, soaprtl, vcldb, uIndy22, uniTools22, uniGUI22Core, uniGUI22, designide, uniGUI22Chart; contains unit_reg in 'unit_reg.pas', unit_myunipanel in 'unit_myunipanel.pas' {frame_myunipanel: TUniFrame}; 4. Adding The Registrar Unit To The Project At some point, we should tell Delphi to register our new component. We can do this in a plain Delphi unit. File > New > Other > Delphi Projects > Delphi Files > Unit Now we have a new unit in the package. I'm saving this unit as 'unit_reg.pas'. This is the final appearance of our package tree: Here is the tricky part, the registration. This is the unit_reg.pas. unit unit_reg; interface uses uniGUIFrame; procedure Register; implementation uses Classes, TreeIntf, unit_myunipanel; type TFrameClass = class of TUniFrame; procedure RegisterFramesAsComponents(const Page: string; const FrameClasses: array of TFrameClass); var FrameClass: TFrameClass; begin for FrameClass in FrameClasses do begin RegisterComponents(Page, [FrameClass]); RegisterSprigType(FrameClass, TComponentSprig); end; end; procedure Register; begin RegisterFramesAsComponents('UniGUI 3rd Party', [Tframe_myunipanel]); end; end. I did not add any published properties or methods to my panel yet. This is how the unit_myunipanel looks like. You can add properties and methods to your component just like you do with VCL units. unit unit_myunipanel; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uniGUITypes, uniGUIAbstractClasses, uniGUIClasses, uniGUIFrame, uniTrackBar, uniLabel, uniEdit, uniGUIBaseClasses, uniPanel; type Tframe_myunipanel = class(TUniFrame) UniContainerPanel1: TUniContainerPanel; UniEdit1: TUniEdit; UniLabel1: TUniLabel; UniTrackBar1: TUniTrackBar; private { Private declarations } public { Public declarations } end; implementation {$R *.dfm} end. 4. Installing the Component Right click on package_myunipanel.bpl > Install Voila! We are good to go. Now you can add this component to your UniGUI projects. PS: TreeIntf.pas is located in here: "c:\Program Files (x86)\Embarcadero\Studio\16.0\source\ToolsAPI\TreeIntf.pas" If your IDE can't find it, you might need to add it to your search path.
  24. 1 point
    Hi! With this app you can run a cmd or console app in an interactive way. Just like sitting in front of a "cmd" on a PC. This project is similiar to "PHP Shell" (http://www.tecmint.com/linux-shell-access-on-browser-using-php-shell/), but "WebCmd" is interactive and uses UniGui instead of PHP. It is also helpfull, if you use console apps on the server to perform something (creating PDF's, converting Files, ...). If such a process runs very long, the user get results (output) at every time with WebCmd; if you use a standard "CreateProcess()" instead the result is only available after process has finished. If you want to use interactive input (optional) you must enter the command / input into the edit field below and then press enter (no "inline" edit/ input possible). Use "exit" command to close a cmd, just like in a normal cmd. Regards Oliver WebCmd.zip
  25. 1 point
    Hi Ronny When you say frames, you are talking about TUniFrame? If so, this is the way I do it, and it work fine for me: I Have a main form, in this form there is a UniPanel, then I have a procedure that I invoke to show my frames For example on a Button click: LanzarVentana(Sender); I have these variable in private: FFrameTag : Integer; FFrameName : string; FCurrentFrame : TUniFrame; And the procedure: procedure TMainForm.lanzarVentana(Sender: TObject); begin if FFrameTag = TComponent(Sender).Tag then Exit; FFrameTag := TComponent(Sender).Tag; if Assigned(FCurrentFrame) then begin FreeAndNil(FCurrentFrame); end; FFrameOpcionName := ''; case FFrameTag of 0: begin FCurrentFrame := TUniFrameClass(FindClass('TfrEstudiantes')).Create(Self); FFrameName := 'Estudiantes'; end; end; if Assigned(FCurrentFrame) then begin FCurrentFrame.Align := alClient; FCurrentFrame.Parent := pnCentro; end; Caption := FFrameName; lbTitulo.Caption := FFrameName; end; Also the Mega Demo use frames, you can see there. I hope this help you. Regards Rafael Liriano