Re: [Lazarus] External/out-of-tree LCL widgetset
On 28.11.2017 11:28, Sven Barth via Lazarus wrote: Why should they? They are two completely different projects. From the LCL's point of view fpGui is a black box like GTK, Qt or the Windows API. OK, so in the end fpGUI *is* an external Widget set, only that it comes more independent of the OS distribution than WinXX, GTK, QT or Apple variants. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] External/out-of-tree LCL widgetset
On 30.11.2017 10:04, Michael Schnell via Lazarus wrote: e.g. a small embedded device or to allow running them as a service.. Of course another important "headless environment" is server applications with built-in Web server or sitting behind a standard WebServer. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] External/out-of-tree LCL widgetset
On 27.11.2017 20:07, Graeme Geldenhuys via Lazarus wrote: Either way, it would be nice to see LCL-CustomDrawn and LCL-fpGUI widgetsets get some more attention. Is there any chance to unify them to a single Widget Type implementation that uses a low level graphics API (without an external Widget Set) ? AFAI understand, MSE-Gui does this very successfully. They even provide a functionality called "IFI" that allows for remoting the interface between the RTL (and the MSE-variant of the LCL) and the "custom drawn" library via a stream interface. IMHO this is a highly attractive way to provide an optional remote GUI to otherwise headless applications, while still providing portability and support for Delphi-typical RAD-style development. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] External/out-of-tree LCL widgetset
On 27.11.2017 19:59, Graeme Geldenhuys via Lazarus wrote: (except for TLabel) To me TLable seems like very important to allow easy "porting" of applications from an other widget Type to fpGUI/LCL. Is implementing TLabel really that hard ? -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] External/out-of-tree LCL widgetset
On 30.11.2017 00:02, Graeme Geldenhuys via Lazarus wrote: RAD style development is highly overrated... I do know that very exactly, been there often enough. RAD is great to create "small" applications, but with huge projects, you will very likely hit a limit where you wish you would not have started the project in an RAD manner. Nonetheless there are lots of 3rd party components for Delphi (and Lazarus if you can get them in source code) that prevent to do your projects using them in a non-RAD manner, as they provide or organize business logic but their components need to be "dragged on a form" and create some user interface there, instead of just providing hooks to have the user do his own GUI for them if appropriate. Porting originally RAD crafted projects to a headless environment (e.g. a small embedded device or to allow running them as a service) is possible (did that multiple times) but a real PITA. That is why a long standing wish is a fully fledged LCL Widget Type (just swap the Widget Type in the project's configuration in Lazarus and press compile), that provides no local GUI but some hook to optionally attach a remote GUI. MSE can do something like this via "ifi" (i.e. an external fpc program connected via some stream interface), more "generally usable" would be an application running in a browser (e.g. Pascal compiled Java script or WebAssembly) connected via HTTP/WebSocket, and a decently prepared way to use such "nearly remote" GUI for a Linux/Windows/Mac "service". -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] External/out-of-tree LCL widgetset
On 30.11.2017 12:09, el es via Lazarus wrote: It is not easy to break free from old, ... programming practices Nonetheless, IMHO RAD is a great way to start programming, as you immediately and painlessly can see (visualize) what your "business logic" software does and easily set parameters and triggers for your business logic. So you are not that likely to jump off the ship at an early stage. But education needs to make clear the limitations of this proceeding strong enough. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] External/out-of-tree LCL widgetset
On 01.12.2017 08:22, Martin Schreiber via Lazarus wrote: For me Delphi is not the best RAD environment and therefore developments made with Delphi should not be used to disqualify RAD as a whole. Which are there other than Delphi and its siblings ? -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] External/out-of-tree LCL widgetset
On 01.12.2017 07:42, Martin Schreiber via Lazarus wrote: separating of GUI and business logic is perfectly possible with RAD. Yep. But you need to apply this discipline to yourself right from start of the project, as doing this afterwards is tedious. Unfortunately many projects arise from sloppy prototypes necessary as a proof of concept before officially starting the project. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] External/out-of-tree LCL widgetset
On 05.12.2017 00:50, Graeme Geldenhuys via Lazarus wrote: DBGrid behaves slightly different to TStringGrid, and is slow. While for perfect performance / clearness / portability / ... , DBGrid supposedly should not be used in a production release, it might be very helpful when designing an application. Maybe the way to go is to do an RAD form with Debug I/O when drafting an application and in the process move any tested business logic code in non-visual units, and when deciding how the final GUI should work and look like do this in another Form, e.g. using "GUI-Mediator". Finally deactivate the RAD form, but keep it for reference. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] PlotFunction patch declined?
On 07.11.2017 10:55, Alexey via Lazarus wrote: https://bugs.freepascal.org/view.php?id=32653 wp wrote: >>Sorry I will not fix this one because it opens another Pandora to add features well-established in TAChart. Pls apply the patch. it makes several plots on one panel. What Pandora?? I don't know Pandora, I use Laz and LCL. -> https://en.wikipedia.org/wiki/Pandora%27s_box :-) -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] Quick Video: A Web Application
On 09.11.2017 11:12, Michael Van Canneyt via Lazarus wrote: We are busy creating this framework. Great. From the previous messages I got the impression it would be depreciated. But Rome wasn't built in a day. Obviously. I am not trying to hurry anybody. I am very happy with what Lazarus and fpc do offer. Nonetheless I think discussing improvements always does make sense. Thanks a lot ! -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] Quick Video: A Web Application
On 08.11.2017 16:39, Michael Van Canneyt wrote: .. I believe that you should embrace the platforms you're using. That means: browser as client, webserver as server, and HTTP or websocket as the transport layer. This depends on who is "you" :) . I've already been doing some " Lazarus Community" work (I do have a working draft for an "application" Widget Type that does not do a GUI binding, as an extension to the NoGui Widget Type, but stop working on it due to the complexity of publishing any of it), and so "you" might be the creator of Lazarus means to provide such a framework managing the clint/server communication in some (yet undefined) user friendly way. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] Quick Video: A Web Applicationx
On 08.11.2017 08:47, Marcello via Lazarus wrote: Are there any information about it? I just found and watched -> https://prezi.com/upueosj4ep0q/pj-suite/?webgl=0 -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] Quick Video: A Web Application
On 08.11.2017 11:14, Mattias Gaertner via Lazarus wrote: A server is not needed. You can write standalone browser applications that work offline too. OK. Great ! Stand alone browser based applications might be one desirable type of application, but AFAIK, the more commonly required type of application would be server based. Sigh. Michael, sometimes I got the impression you are stuck in a loop. Use TFPTimer and TThread. You might be right :-) But it's not just me, but it's based on the Lazarus claim "write once, compile everywhere" which means that I can design and test an application in - say - Windows (using the "RAD"-way that once has been introduced by (Borland-) Delphi, and then tell Lazarus to create a server application with a browser GUI by just compiling my code. In a perfect world this should simply work, in a less perfect world, some tweaks might be necessary to optimize the thing for either platform to run on. - Communication between the Server application and the part running on the brower via a 3rd party web server. There are various ways since years. I do know. Some are depreciated, I feel at the moment WebSocktes is the way to go. But see above: the Lazarus user should not even see this, but the infrastructure would organize the communication in a (as good as possible) compatible way, by just telling Lazarus to compile the application as a server based application with a browser based GUI accessible via a web-server. - allowing for decent Debugging in Lazarus (e.g. via an optional built-in web server, which AFAIK already is in place) . Server debugging is already possible. But I agree, it could be easier. Client side debugging is working. You can use the browser's debugger to set breakpoints in the Pascal code and step through. I suppose you are talking about pas2js, running in a Browser, which is perfectly viable, of course. What I meant was debugging the server based part of the application (which accesses an attached GUI part done in pas2js. Here (AFAIK) a webserver unit that allows for attaching to a browser to display the GUI while the application (i.e. the "business code") runs under Lazarus, already is provided. so I don't assume any problems here. (While in Delphi AFAIK, this is a major problem). - Lazarus providing a GUI builder for the browser based GUI. That's a big topic. Some parts already work. As I already did some research om that (some time ago) I do know that is is a big topic :) . That is why I ask. Great to hear that it is worked on and something already is functional. Moreover IMHO a migration path from Java script in the Browser (pas2js) to using WebAssembly in the Browser should be considered. It has been started in FPC, but no one is working on that. So same state as since quite a while. Regarding that most decent browsers nowadays provide the WebAssembly framework, it seems viable to ask, but of course developing time is limited. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] Quick Video: A Web Application
On 08.11.2017 12:28, Michael Van Canneyt via Lazarus wrote: It is the basic building block. I do agree that it is a very viable building block, but theoretically for "Rich internet Applications" there are alternatives: - WebAssembly (which as far as I understand is considered for fpc, and I suppose it might get started after pas2js is released, as it partly might be based on same. ) - using a 3rd party JS based GUI framework (like EXTJS/EXTPASCAL, which is very expensive/depreciated/dead), or e.g. "React", which might be not decently suited as a target for the Lazarus GUI builder. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] Quick Video: A Web Application
On 08.11.2017 14:15, Sven Barth via Lazarus wrote: Nope, WebAssembly and what pas2js does are two different things even if in the end both run in the browser's JavaScript engine. Of course I do know this. But AFAIK WebAssembly has been invented with JS in mind, so it might follow some paradigms, that are closer to JS than to Pascal (e.g. not strictly typed variables). So maybe some stages of the transpilation / compilation might be similar. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] Quick Video: A Web Application
On 08.11.2017 13:12, Michael Van Canneyt via Lazarus wrote: ExtPascal way (or UniGUI for that matter) is the wrong way to do things. Interesting as a toy, but not suitable for a) Large, scalable websites b) serveless applications. Agreed ! But if doing a server based application (ore one that includes the web-server) that mainly does unattended, "embedded" work, and tghe GUI is only used for configuration and monitoring, such a toy-functionality might be useful, nonetheless. From the view of the application programmer, doing a Rich Internet Application with pas2js is a similar endeavor as Microsoft intended by Silverlight (which has been canceled some time ago) : Design an application and define "bridging points" that "somehow" shift the execution between server and browser. With Silverlight, both parts would be compiled to CIL byte code and run an a CIL (aka .NET) framework, with fpc, the server part would be compiled to a native executable while the Browser part would be compiled to JS (or maybe later to WebAssembly). The user source code would not necessarily need to contain much more than appropriate definitions of the bridging points (supposedly some kind of inter-class interface), and the Lazarus infrastructure would take care of the communication. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] External/out-of-tree LCL widgetset
On 01.12.2017 20:43, Graeme Geldenhuys via Lazarus wrote: On 2017-12-01 13:33, Marcos Douglas B. Santos via Lazarus wrote: I believe RAD is the best way to code a GUI I'll even disagree with that - somewhat. :) http://geldenhuys.co.uk/articles/model-gui-mediator.pdf The article starts : After mastering OOP and Object Persistence, the next thing developers need to conquer is how to present their business objects in the GUI ... IMHO this is the best way to threaten away would be software developers from even starting to try to do any programming but have them do their living as windows cleaners. When (as a newcomer) starting to do any "business logic", it's essential to have a toolbox that allows for testing your work on the fly. And this (at best) does include a really simple way to add a GUI (this is called RAD), even if intending to use this only for your own purpose and deactivate it in any final version of the product. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] External/out-of-tree LCL widgetset
On 05.12.2017 12:16, Martin Schreiber via Lazarus wrote: What is wrong with TDBGrid??? As I quoted, Graeme claims it's slow. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] Converting a component package Delphi->Lazarus using built-in converter?
On 08.06.2018 19:05, Bo Berglund via Lazarus wrote: This Delphi package is a collection of some 20 components and all of them have Register procedures inside of each source file. Are those really IDE-relevant packages (showing up in the visual component selection ) ? If not, they might be just Delphi "Runtime Packages" (a special kind of DLLs that can be attached by Delphi executables). The concept of "Runtime Packages" is not (yet) supported by FPC/Lazarus. That is why the IDE needs to be recompiled when installing a package that provides visual components. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] Using a component OBJ file in Lazarus?
On 10.06.2018 15:11, Bo Berglund via Lazarus wrote: ... Build IDE: Exit code 2, Errors: 23 ... You want to compile some 3rd party Dongle code in the IDE ? That is more than weired ! -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] Using a component OBJ file in Lazarus?
On 11.06.2018 21:03, Bo Berglund via Lazarus wrote: On Mon, 11 Jun 2018 10:23:44 +0200, Michael Schnell via Lazarus wrote: You want to compile some 3rd party Dongle code in the IDE ? That is more than weired ! Sorry, I don't really know what you mean here... What is the reason for this comment? Unlike Delphi it seems like when one wants to add components to the development IDE palette in Lazarus one has actually to *rebuild* the IDE, there seems to be no otehr way... As fpc/Lazarus dos not (yet) provide run time packages, and IMHO it will ask for major problems when compiling the Lazarus IDE to contain the Dongle code, I suppose your best option is to replace the Dongle .OBJ file by a small pascal function and use this to build your package to allow it for compiling the IDE (providing the design time stuff) and the user program (providing the run time stuff). Now you need to "fake" the runtime package behavior by doing the said small pascal function in a way that it dynamically (not in the startup code !) loads and then uses a dll . The dll would be done in a way that it just forwards the call to the functions provided by Dongle .OBJ to same, and statically links to it. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] Using a component OBJ file in Lazarus?
On 12.06.2018 11:30, Sven Barth via Lazarus wrote: Only because the code is part of a package that's loaded by the Delphi IDE does not mean that it also is one in the final Delphi program. Delphi package distributions more often than not also contain the DCU for static linking. Of course you are correct that in Delphi a package can be linked dynamically to the IDE (it can't be linked statically, as the IDE never is recompiled), but statically in the final executable. But Lazarus does not provide dynamic linking to the IDE in such a way. That is why the IDE needs to be recompiled when adding a package with "design time stuff". (IMHO this is not harmful at all.) Am I wrong supposing that this means that the package will be statically linked to both the IDE and the executable, and hence it content will be linked in with both ? AFAIU, there are means to control how the code is executed at runtime and how at design time, but this does not affect linking. Hence the dongle code will be linked in with the IDE and might (or might not) provide problems. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] Using a component OBJ file in Lazarus?
On 12.06.2018 17:08, Sven Barth via Lazarus wrote: No. Delphi does *not* solve this by using dynamic linking. OK. I see. Thanks for pointing this out. Hence in such a (potentially problematic) case the suggested solution might be helpful even with Delphi. But as Bo's code seemingly works fin with Delphi, hopefully compiling the Dongle code into the Lazarus IDE will simply work as expected. -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] Using a component OBJ file in Lazarus?
On 12.06.2018 14:06, Sven Barth via Lazarus wrote: The dongle code would also be linked if it would be in a dynamic package and Lazarus would support them. Sorry, I seem not to be have been clear. The (potential) problem I want to provide a solution for is: not to link the Dongle code in the Lazarus IDE executable. (But have it usable in the compiled user application.) (Delphi does this by using the dynamic linking for the package the Delphi IDE uses, but this is of no concern when doing Lazarus.) That is why I suggest to avoid the Dongle code in the package altogether, and have it only dynamically linked late (on request, which only is supposed top occur with the user application). -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] Doe fpc/lazarus already have System-Threading or is it planned
sorry -> http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Threading -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
[Lazarus] Doe fpc/lazarus already have System-Threading or is it planned
Featuring "parallel loops", "future variables", etc, implemented via a thread pool that is transparent for the application programmer. -> http://docwiki.embarcadero.com/Libraries/Tokyo/de/System.Threading -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] TMS Web core released - based on pas2js.
On 15.02.2018 22:22, Michael Van Canneyt via Lazarus wrote: Yesterday, TMS Software has released a tech preview of their "TMS Web core" product for Delphi. Great stuff indeed ! -Michael -- ___ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] alternative to web programming?
There are application that require a „stylish“ GUI for optimum user satisfaction, …. And there are applications that do their thing more or less on their own, requiring human attention only for configuration and service. -Michael -- ___ lazarus mailing list lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] It's alive !
Wonderful !!! -Michael -- ___ lazarus mailing list lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus
Re: [Lazarus] The future of the Lazarus IDE
IMHO, in the end it should be possible to do an application in an RAD-way (if desired), test it on a desktop (using the desktop Widgets for its GUI), scale it (by defining parts of the procedures as "Remote"), and finally (just by re-compiling) have it run as a combination of application-parts running as WEBASM in the browser (and used the browser for its GUI) and application-parts running on the Server as fully compiled native code. The infrastructure would need to automatically provide the communication means (shared objects, remote procedure calls, ...) via Websockts. -Michael -- ___ lazarus mailing list lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus