Re: [lazarus] Program plugin
> Could someone give me an idea? I am writing an application to which I > hope to add functionality later. One option would be to simple send out > the new exe to all users. However, I would like to implement a plugin > system. So a new feature could simply be added and totaly integrated to > the original application. It is important to note that the application > has no idea what is going to be added later. > > Any ideas anyone? > Notes: If you want people to build plug-ins in other languages than Pascal (visual basic, C++, C, etc) then don't use ansistrings or objects since they are specific to Pascal. Who is your market? People who own copies of Delphi/FPC or people who own copies of Visual Studio, Delphi, VB, FPC, and more? If using a DLL system and you want to export ansistrings from a DLL you can use a memory manager trick similar to the trick being used in Pascal Server Pages 1.6.X project. The memory manager trick to export ansistrings from a DLL is: program MySoftware; // export memory manager from executable (software hosting the plug-ins) procedure ExportMemMan(out MemMan: TMemoryManager); stdcall; begin GetMemoryManager(MemMan); end; function TestAPI: string; begin result:= 'hello, this is the API in the exe '; end; exports ExportMemMan name 'GetSharedMemMan', TestApi; begin end. library MyPlugin; var GetExternalMemMan: procedure(MemMan: TMemoryManager); TestApi: function: string; MemMan: TMemoryManger; //storage of received mem manager begin // get handle of EXE ExeHandle:= loadlibrary('yourprogram.exe'); // import exe memory manager into DLL plug-in GetExternalMemMan:= getprocaddress(ExeHandle, 'GetSharedMemMan'); GetExternalMemMan(MemMan); SetMemoryManager(MemMan); // You can now use ansistrings in dll TestApi:= getprocaddress(ExeHandle, 'TestApi'); showmessage( TestApi() ); end. Above ansistring memory manager trick should work with FPC and Delphi plug-ins, which means Delphi developers and FPC developers will be able to make plug-ins for your program, not just fpc developers. The most powerful plug in systems have communication systems both held inside the exectuable and the dll. Many people make the mistake of thinking only the DLL can export, when in fact the program itself can contain an API of it's own that is exported which the DLL can talk to. A simple example plug-in system that uses an API held inside the EXE is implemented in LazarusRB in plugger_api.pas If it is objects that you need to export then you can make procedural wrappers that export each and every procedure/variable from that class, then reimport them with a wrapper again. Take a look at LazarusRB sources for an example of that system in plugger_api.pas and PluggerWrapper.pas. Or of course you also can wait until fpc is able to export BPL style packages, which again will only work with FPC and not plug ins built with Delphi or other languages like C/C++/VB. It depends on your needs and the type of program it is. _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: [lazarus] Program plugin
On 2/23/06, Andreas Berger <[EMAIL PROTECTED]> > Thanks, I'll take a look. You can check RemObjects' Pascal Script. Add some classes / functions that can be accessed from the script and then use it to communicate with the main application. _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: [lazarus] Program plugin
Mattias Gaertner wrote: On Thu, 23 Feb 2006 13:35:18 -0300 Andreas Berger <[EMAIL PROTECTED]> wrote: Could someone give me an idea? I am writing an application to which I hope to add functionality later. One option would be to simple send out the new exe to all users. However, I would like to implement a plugin system. So a new feature could simply be added and totaly integrated to the original application. It is important to note that the application has no idea what is going to be added later. Any ideas anyone? If you define it that abstract, then I suggest to it abstract: Define some abstract base classes/interfaces, which all plugins must implement and some registration mechanisms. The IDEIntf contains a lot of examples. Thanks, I'll take a look. _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
RE: [lazarus] FPC source directory
>Yes. Just install the FPC sources too. Maybe you already >have installed them. Search for classes.pp. I did what suggested and got to proceed. On adding new components I got error "Can't find unit Interfaces". Following related thread in ml archive, I made all adjustments suggested (http://www.mail-archive.com/lazarus%40miraclec.com/msg01180.html) but had same error messages: - Identifier not found "ExceptFrameCount" - Identifier not found "ExceptFrames" I'm sure (am I?) that Lazarus and FPC are the latest version, downloaded and installed just today. I searched continuasly to find any fpc 2.0.0 installation or files but there is not of them. Is there any possible reason for this problem? Panagiotis -Original Message- From: Mattias Gaertner [mailto:[EMAIL PROTECTED] Sent: Thursday, February 23, 2006 5:53 PM To: lazarus@miraclec.com Subject: Re: [lazarus] FPC source directory On Thu, 23 Feb 2006 17:34:57 + Panagiotis Sidiropoulos <[EMAIL PROTECTED]> wrote: > Just today I managed to install Lazarus and FPC, the right way. > Lazarus installed through svn. FPC downlaoded from > http://www.freepascal.org/down/i386/linux-germany_1.html as one file, > extracted and installed as instructions suggest. > > Now, in Lazarus while trying to set FPC path I get error message: "The > FPC source directory "usr/lib/fpc/2.0.2./units/i386-linux/" does not > look correct. Normally it contains directories like rtl, fcl, > packages, compiler, ..." This is the path to the compiled units (.ppu). The IDE is searching the FPC source files (.pas). > This folder include some of folders mentioned but not other such > "packages". > > What is the proper relative path in this case? I remember that I had > same problem on previous Lazarus and what I did was to download FPC > sources package, unpack into a permanent folder as it is and set this > path to Lazarus FPC path. Is this a correct approach? Yes. Just install the FPC sources too. Maybe you already have installed them. Search for classes.pp. Mattias _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
[lazarus] Example and tutorial about component streaming
I added an example and a wiki page about component streaming. http://wiki.lazarus.freepascal.org/index.php/Streaming_components Mattias _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: [lazarus] Program plugin
On Thu, 23 Feb 2006 13:35:18 -0300 Andreas Berger <[EMAIL PROTECTED]> wrote: > Could someone give me an idea? I am writing an application to which I > hope to add functionality later. One option would be to simple send out > the new exe to all users. However, I would like to implement a plugin > system. So a new feature could simply be added and totaly integrated to > the original application. It is important to note that the application > has no idea what is going to be added later. > > Any ideas anyone? If you define it that abstract, then I suggest to it abstract: Define some abstract base classes/interfaces, which all plugins must implement and some registration mechanisms. The IDEIntf contains a lot of examples. Mattias _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
[lazarus] Program plugin
Could someone give me an idea? I am writing an application to which I hope to add functionality later. One option would be to simple send out the new exe to all users. However, I would like to implement a plugin system. So a new feature could simply be added and totaly integrated to the original application. It is important to note that the application has no idea what is going to be added later. Any ideas anyone? _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: [lazarus] FPC source directory
> Now, in Lazarus while trying to set FPC path I get error message: > "The FPC source directory "usr/lib/fpc/2.0.2./units/i386-linux/" does > not look correct. Normally it contains directories like rtl, fcl, > packages, compiler, ..." > > This folder include some of folders mentioned but not other such > "packages". > > What is the proper relative path in this case? I remember that I had > same problem on previous Lazarus and what I did was to download FPC > sources package, unpack into a permanent folder as it is and set this > path to Lazarus FPC path. Is this a correct approach? > The skeleton of directores should look like what is in your /lazarus/fpcsrc/ directory. If you want to make the skeleton fpc source directories of what lazarus looks for, follow what exactly is in /lazarus/fpcsrc/ and then point it to your new skeleton. If you are looking for a pre-made set up just use /lazarus/fpcsrc/ from the latest lazarus installation (fpc 2.0.2 I beleive) _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: Why is this throwing an exception - ANSWER
It's a bug in ipro. I checked the code at the stack trace and found this: function TIpHtmlInternalPanel.HtmlPanel: TIpHtmlCustomPanel; begin Result := TIpHtmlPanel(Parent); while (Result.ClassType <> TIpHtmlPanel) do Result := TIpHtmlPanel(Result.Parent); end; The exception gets thrown in the while line. Now WHY they do it this way I do not know, but it means you get a real problem if you derive a component from it. I commented out the lines in the function like so: function TIpHtmlInternalPanel.HtmlPanel: TIpHtmlCustomPanel; begin //Result := TIpHtmlPanel(Parent); // while (Result.ClassType <> TIpHtmlPanel) do //Result := TIpHtmlPanel(Result.Parent); end; And now my test program works as beautifully as you could wish. >From the context I get the idea this is somehow used if you wish to embed two htmlpanels inside one another, which doesn't affect me - but the method they are using is NOT good because it causes crashes if you derive anything (which changes the classtype of course). So do I report a bug ? Or how does this get fixed ? Ciao A.J. -- A.J. Venter Chief Software Architect OpenLab International www.getopenlab.com www.silentcoder.co.za +27 82 726 5103 _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: Why is this throwing an exception ?
Sorry, forgot to add, here is the stack trace as well: TApplication.HandleException Access violation Stack trace: $0820B073 TIPHTMLINTERNALPANEL__HTMLPANEL, line 15979 of iphtml.pas $08209DA0 TIPHTMLINTERNALPANEL__MOUSEMOVE, line 15523 of iphtml.pas $0810D156 TCONTROL__WMMOUSEMOVE, line 2882 of ./include/control.inc $0805CEF7 $0810A30E TCONTROL__WNDPROC, line 1542 of ./include/control.inc $08101D49 TWINCONTROL__WNDPROC, line 3347 of ./include/wincontrol.inc $08109224 TCONTROL__PERFORM, line 1014 of ./include/control.inc $08100C14 TWINCONTROL__ISCONTROLMOUSEMSG, line 2823 of ./include/wincontrol.inc $08101CD9 TWINCONTROL__WNDPROC, line 3328 of ./include/wincontrol.inc $0811E965 DELIVERMESSAGE, line 3457 of gtkproc.inc $08126CC2 DELIVERMOUSEMOVEMESSAGE, line 867 of gtkcallback.inc $08126D67 GTKMOTIONNOTIFY, line 920 of gtkcallback.inc $401E164D SYNREGEXPR_finalize_implicit, line 936 of gtkglobals.ppiphtml.pas $40210E5A SYNREGEXPR_finalize_implicit, line 936 of gtkglobals.ppiphtml.pas $4021016A SYNREGEXPR_finalize_implicit, line 936 of gtkglobals.ppiphtml.pas $4020E234 SYNREGEXPR_finalize_implicit, line 936 of gtkglobals.ppiphtml.pas $40243FD9 SYNREGEXPR_finalize_implicit, line 936 of gtkglobals.ppiphtml.pas -- A.J. Venter Chief Software Architect OpenLab International www.getopenlab.com www.silentcoder.co.za +27 82 726 5103 _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
[lazarus] Why is this throwing an exception ?
So there I was, thinking today, what can I do to once more save future time... and I realised that something I would really like is to have a component that can wrap around ipro and implement a simple file-based html viewer with image support, jpeg loading and such built-in. Easy right, after all just that exists in the example shipped for it, so all I have to do is plagiarise the code a bit and create a component out of it. So I created my component and added the bits I wanted, mostly just a property for specifying an html file and a method for showing it. And it works, even jpg's load fine. But immediately after loading it throws an exception, ignore the exception and it throws it again, and again and again (no idea is given of WHAT exception). The frequency and timing does however suggest that the exception is thrown during the onpaint event (though I never TOUCHED that :p ) Anyway, here is the code: unit simple_html; {A simple file based html viewer component based on ippro with image viewing added} {$mode objfpc}{$H+} interface uses Classes, SysUtils, LResources, Forms, Controls, Graphics,IPHtml,lazjpeg; type TSimpleIpHtml = class(TIpHtml) public property OnGetImageX; end; TSimpleHTML = class(TIpHtmlPanel) private FHtmlFile : String; FNewHTML: TSimpleIpHtml; public { public declarations } procedure HTMLGetImageX(Sender: TIpHtmlNode; const URL: string; var Picture: TPicture); procedure ShowFile; {Loads a designtime set html file} destructor destroy; override; published { published properties } constructor create(AOwner: TComponent); override; property HTMLFile : String Write FHtmlFile; end; procedure register; implementation {TSImpleHTML} procedure Register; begin RegisterComponents('OLPack',[TSimpleHTML]); end; procedure TSimpleHTML.HTMLGetImageX(Sender: TIpHtmlNode; const URL: string; var Picture: TPicture); var PicCreated: boolean; begin try if FileExists(URL) then begin PicCreated := False; if Picture=nil then begin Picture:=TPicture.Create; PicCreated := True; end; Picture.LoadFromFile(URL); end; except if PicCreated then Picture.Free; Picture := nil; end; end; procedure TSimpleHTML.ShowFile; var fs: TFileStream; begin if FileExists(FHtmlFile) then try fs:=TFileStream.Create(FHtmlFile,fmOpenRead); try FNewHTML.OnGetImageX:[EMAIL PROTECTED]; FNewHTML.LoadFromStream(fs); finally fs.Free; end; SetHtml(FNewHTML); except on E: Exception do begin Writeln('Unable to open HTML file',FHtmlFile); end; end; end; destructor TSimpleHTML.destroy; Begin inherited; end; constructor TSimpleHTML.create(AOwner: TComponent); begin FNewHTML:=TSimpleIpHtml.Create; inherited; end; end. --- Here is the relevant parts from a simple demo program I did to test it: TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; OpenDialog1: TOpenDialog; SimpleHTML1: TSimpleHTML; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure TForm1.Button2Click(Sender: TObject); begin if OpenDialog1.Execute then Edit1.Text := OpenDialog1.Filename; end; procedure TForm1.Button1Click(Sender: TObject); begin SimpleHTML1.HTMLFile := Edit1.Text; SimpleHTML1.ShowFile; end; --- Anybody here familiar enough with ipro to know what I am doing wrong ? Ciao A.J. -- A.J. Venter Chief Software Architect OpenLab International www.getopenlab.com www.silentcoder.co.za +27 82 726 5103 _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: [lazarus] FPC source directory
On Thu, 23 Feb 2006 17:34:57 + Panagiotis Sidiropoulos <[EMAIL PROTECTED]> wrote: > Just today I managed to install Lazarus and FPC, the right way. > Lazarus installed through svn. > FPC downlaoded from > http://www.freepascal.org/down/i386/linux-germany_1.html as one file, > extracted and installed as instructions suggest. > > Now, in Lazarus while trying to set FPC path I get error message: > "The FPC source directory "usr/lib/fpc/2.0.2./units/i386-linux/" does > not look correct. Normally it contains directories like rtl, fcl, > packages, compiler, ..." This is the path to the compiled units (.ppu). The IDE is searching the FPC source files (.pas). > This folder include some of folders mentioned but not other such > "packages". > > What is the proper relative path in this case? I remember that I had > same problem on previous Lazarus and what I did was to download FPC > sources package, unpack into a permanent folder as it is and set this > path to Lazarus FPC path. Is this a correct approach? Yes. Just install the FPC sources too. Maybe you already have installed them. Search for classes.pp. Mattias _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
[lazarus] FPC source directory
Just today I managed to install Lazarus and FPC, the right way. Lazarus installed through svn. FPC downlaoded from http://www.freepascal.org/down/i386/linux-germany_1.html as one file, extracted and installed as instructions suggest. Now, in Lazarus while trying to set FPC path I get error message: "The FPC source directory "usr/lib/fpc/2.0.2./units/i386-linux/" does not look correct. Normally it contains directories like rtl, fcl, packages, compiler, ..." This folder include some of folders mentioned but not other such "packages". What is the proper relative path in this case? I remember that I had same problem on previous Lazarus and what I did was to download FPC sources package, unpack into a permanent folder as it is and set this path to Lazarus FPC path. Is this a correct approach? Regards, Panagiotis _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: [lazarus] Sqlite in ReportManager
> There is some talk on the RM yahoo group about getting it to work with > Laz/Fpc though Thanks for the update... I better go read the yahoo group again. Regards, - Graeme - _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: [lazarus] Interbase library
Sorry - should have stuck Joost's name on top for relevance SteveG wrote: Adding the line didnt seem to make any diff - this is the ordering of my code if thats any help SqlT := TSqlT.Create(NIL); SqlQ := TSqlQ.Create(NIL); DbConn[DatabaseOffset].SqlD.Transaction := SqlT; SqlT.StartTransaction; SqlQ.Database := DbConn[DatabaseOffset].SqlD; SqlQ.ParseSQL := FALSE; SqlQ.SQL.Text := QueryStr; Joost van der Sluis wrote: Could you try it again with ParseSQL := False? If that works it's still a bug, but then I know where to look at it. _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: [lazarus] Interbase library
Adding the line didnt seem to make any diff - this is the ordering of my code if thats any help SqlT := TSqlT.Create(NIL); SqlQ := TSqlQ.Create(NIL); DbConn[DatabaseOffset].SqlD.Transaction := SqlT; SqlT.StartTransaction; SqlQ.Database := DbConn[DatabaseOffset].SqlD; SqlQ.ParseSQL := FALSE; SqlQ.SQL.Text := QueryStr; Joost van der Sluis wrote: Could you try it again with ParseSQL := False? If that works it's still a bug, but then I know where to look at it. _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: [lazarus] ExceptFrameCount while compiling
> Use fpc 2.0.2 or later. I just finished downloading FPC same way Lazarus, SVN. FPc lies in folder /usr/share/fpc. Where make file is trying to locate fpc? Is there any default folder I should address? Panagiotis Στις 23-02-2006, ημέρα Πεμ, και ώρα 13:27 +0100, ο/η Vincent Snijders έγραψε: > Panagiotis Sidiropoulos wrote: > > I downloaded Lazarus using command: > > - svn checkout http://svn.freepascal.org/svn/lazarus/trunk lazarus > > > > Then, trying to compile I get the error messages: > > -Compiling lclproc.pas > > -lclproc.pas(745,15) Error: Identifier not found "ExceptFrameCount" > > -lclproc.pas(746,11) Error: Identifier not found "ExceptFrames" > > -lclproc.pas(2721) Fatal: There were 2 errors compiling module, stopping > > -lclproc.pas(63,12) Error: Compilation aborted > > -make[1]: *** [alllclunits.ppu] Error 1 > > -make[1]: Leaving directory `/usr/share/lazarus/lcl' > > -make: *** [lcl] Error 2 > > > > My skills on this and generally on Linux are limited so, I do not know > > what information you need to get into any conclusion, please ask. > > > > Any advise? > > > > Use fpc 2.0.2 or later. > > Vincent. > > _ > To unsubscribe: mail [EMAIL PROTECTED] with > "unsubscribe" as the Subject >archives at http://www.lazarus.freepascal.org/mailarchives > _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: [lazarus] ExceptFrameCount while compiling
Panagiotis Sidiropoulos wrote: I downloaded Lazarus using command: - svn checkout http://svn.freepascal.org/svn/lazarus/trunk lazarus Then, trying to compile I get the error messages: -Compiling lclproc.pas -lclproc.pas(745,15) Error: Identifier not found "ExceptFrameCount" -lclproc.pas(746,11) Error: Identifier not found "ExceptFrames" -lclproc.pas(2721) Fatal: There were 2 errors compiling module, stopping -lclproc.pas(63,12) Error: Compilation aborted -make[1]: *** [alllclunits.ppu] Error 1 -make[1]: Leaving directory `/usr/share/lazarus/lcl' -make: *** [lcl] Error 2 My skills on this and generally on Linux are limited so, I do not know what information you need to get into any conclusion, please ask. Any advise? Use fpc 2.0.2 or later. Vincent. _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
[lazarus] ExceptFrameCount while compiling
I downloaded Lazarus using command: - svn checkout http://svn.freepascal.org/svn/lazarus/trunk lazarus Then, trying to compile I get the error messages: -Compiling lclproc.pas -lclproc.pas(745,15) Error: Identifier not found "ExceptFrameCount" -lclproc.pas(746,11) Error: Identifier not found "ExceptFrames" -lclproc.pas(2721) Fatal: There were 2 errors compiling module, stopping -lclproc.pas(63,12) Error: Compilation aborted -make[1]: *** [alllclunits.ppu] Error 1 -make[1]: Leaving directory `/usr/share/lazarus/lcl' -make: *** [lcl] Error 2 My skills on this and generally on Linux are limited so, I do not know what information you need to get into any conclusion, please ask. Any advise? Regards, Panagiotis _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: [lazarus] Enhanced versions of TStringGrid
> > > > Being said that, I think your final question remains open to others > > wanting to participate on ideas of enhancement, deriving or whatever :) > > I think, Michael already gave a nice solution: Let's implement a plugin > system for grids. > See SynEdit for an example. > For the hook lists see TControl.AddHandler. > It should be possible to write plugins for cell drawing, cell editors, > sorting, navigation and data connections. > I like this idea as well (sorry if this is a me-too post :p), the concept of having a single top-level grid component, into which you can then plug those features needed by your application makes far more sense to me than having a dozen grid components each with one extra feature. I would even suggest that TDBGrid should be dropped and it's functionality turned into a plugin for this top-level grid component. Unless of course people feel that would break too much compatibility/familiarity for former delphi users. Ciao A.J. -- A.J. Venter Chief Software Architect OpenLab International www.getopenlab.com www.silentcoder.co.za +27 82 726 5103 _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: [lazarus] Enhanced versions of TStringGrid
On Thu, 23 Feb 2006 03:02:14 -0600 "Jesus Reyes" <[EMAIL PROTECTED]> wrote: > > - Original Message - > From: "Micha Nelissen" <[EMAIL PROTECTED]> > To: > Sent: Thursday, February 23, 2006 2:32 AM > Subject: Re: [lazarus] Enhanced versions of TStringGrid > > > > Jesus Reyes wrote: > > > It's a nice argument, however if this grid continue to get improved > > > and more features are added to it, the descriptive name become > > > misleading. TMaskEdit it's a good example of a component with a > > > specific purpose not meant to be improved but used as it is. > > > > > > But this is also the topic of this thread, to allow a component to > > > grow in features (in this case a better, more general name could used) > > > or let it as it is (and in this case your argument fits very well). > > > > Try to prevent designing components that are "bloated". Use as much as > > possible events and component connections (aka plugins), to expand > > features, otherwise you get a component no one can use because it's > > simply too complex. > > > > What kind of features are you thinking to add, and how ? > > > > Just my 2c, > > > > Micha > > > > We are talking of the possiblity only, indeed at the moment I don't have > more features to add to this component and my intention was to made it > available "as is". However I'm happy that this thread started, I already > was asked to make some improvements to grids and I have declined with the > argument that it should be made in derived grids, so for me it's all > exploring the possiblities. > > Being said that, I think your final question remains open to others > wanting to participate on ideas of enhancement, deriving or whatever :) I think, Michael already gave a nice solution: Let's implement a plugin system for grids. See SynEdit for an example. For the hook lists see TControl.AddHandler. It should be possible to write plugins for cell drawing, cell editors, sorting, navigation and data connections. Mattias _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: [lazarus] Enhanced versions of TStringGrid
- Original Message - From: "Micha Nelissen" <[EMAIL PROTECTED]> To: Sent: Thursday, February 23, 2006 2:32 AM Subject: Re: [lazarus] Enhanced versions of TStringGrid > Jesus Reyes wrote: > > It's a nice argument, however if this grid continue to get improved and > > more features are added to it, the descriptive name become misleading. > > TMaskEdit it's a good example of a component with a specific purpose not > > meant to be improved but used as it is. > > > > But this is also the topic of this thread, to allow a component to grow in > > features (in this case a better, more general name could used) or let it as > > it is (and in this case your argument fits very well). > > Try to prevent designing components that are "bloated". Use as much as > possible events and component connections (aka plugins), to expand > features, otherwise you get a component no one can use because it's > simply too complex. > > What kind of features are you thinking to add, and how ? > > Just my 2c, > > Micha > We are talking of the possiblity only, indeed at the moment I don't have more features to add to this component and my intention was to made it available "as is". However I'm happy that this thread started, I already was asked to make some improvements to grids and I have declined with the argument that it should be made in derived grids, so for me it's all exploring the possiblities. Being said that, I think your final question remains open to others wanting to participate on ideas of enhancement, deriving or whatever :) Jesus Reyes A. __ Correo Yahoo! Espacio para todos tus mensajes, antivirus y antispam ¡gratis! Regístrate ya - http://correo.yahoo.com.mx/ _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: Re: [lazarus] Enhanced versions of TStringGrid
Why not use TGrid ? - Original Message - From: "Micha Nelissen" <[EMAIL PROTECTED] > To: Sent: Thursday, February 23, 2006 1:54 AM Subject: Re: [lazarus] Enhanced versions of TStringGrid > Jesus Reyes wrote: > > > TStringGridPlus is a much better name :-) > > > > > > > I don't really know why the field "to:" is set to your personal address > > but anyway as I intended to send this to ml I'm doing again. > > > > I Like the proposed name :). Component name change is now scheduled. > > Maybe it's nice but not very descriptive IMHO. TAttrStringGrid at least > has some description in it... Otherwise every addition in a descendant > to TStringGrid can be called TStringGridPlus. TMaskEdit is also not > called TEditPlus ... > > Micha > It's a nice argument, however if this grid continue to get improved and more features are added to it, the descriptive name become misleading. TMaskEdit it's a good example of a component with a specific purpose not meant to be improved but used as it is. But this is also the topic of this thread, to allow a component to grow in features (in this case a better, more general name could used) or let it as it is (and in this case your argument fits very well). Jesus Reyes A. It0s __ Correo Yahoo! Espacio para todos tus mensajes, antivirus y antispam �gratis! Reg�strate ya - http://correo.yahoo.com.mx/ _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives = = = = = = = = = = = = = = = = = = = = = = Lee Jingbo [EMAIL PROTECTED] 2006-02-23
Re: Re: [lazarus] Enhanced versions of TStringGrid
Documents and demos can reduce complexity. Gird is very important for apps such as MIS Application. I think that TcxGrid , which is a production of DevExpress Comp. , is a good exmaple. Jesus Reyes wrote: > It's a nice argument, however if this grid continue to get improved and more features are added to it, the descriptive name become misleading. TMaskEdit it's a good example of a component with a specific purpose not meant to be improved but used as it is. > > But this is also the topic of this thread, to allow a component to grow in features (in this case a better, more general name could used) or let it as it is (and in this case your argument fits very well). Try to prevent designing components that are "bloated". Use as much as possible events and component connections (aka plugins), to expand features, otherwise you get a component no one can use because it's simply too complex. What kind of features are you thinking to add, and how ? Just my 2c, Micha _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives = = = = = = = = = = = = = = = = = = = = = = Lee Jingbo 2006-02-23
Re: [lazarus] Enhanced versions of TStringGrid
Jesus Reyes wrote: It's a nice argument, however if this grid continue to get improved and more features are added to it, the descriptive name become misleading. TMaskEdit it's a good example of a component with a specific purpose not meant to be improved but used as it is. But this is also the topic of this thread, to allow a component to grow in features (in this case a better, more general name could used) or let it as it is (and in this case your argument fits very well). Try to prevent designing components that are "bloated". Use as much as possible events and component connections (aka plugins), to expand features, otherwise you get a component no one can use because it's simply too complex. What kind of features are you thinking to add, and how ? Just my 2c, Micha _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: [lazarus] Enhanced versions of TStringGrid
- Original Message - From: "Micha Nelissen" <[EMAIL PROTECTED]> To: Sent: Thursday, February 23, 2006 1:54 AM Subject: Re: [lazarus] Enhanced versions of TStringGrid > Jesus Reyes wrote: > >> TStringGridPlus is a much better name :-) > >> > > > > I don't really know why the field "to:" is set to your personal address > > but anyway as I intended to send this to ml I'm doing again. > > > > I Like the proposed name :). Component name change is now scheduled. > > Maybe it's nice but not very descriptive IMHO. TAttrStringGrid at least > has some description in it... Otherwise every addition in a descendant > to TStringGrid can be called TStringGridPlus. TMaskEdit is also not > called TEditPlus ... > > Micha > It's a nice argument, however if this grid continue to get improved and more features are added to it, the descriptive name become misleading. TMaskEdit it's a good example of a component with a specific purpose not meant to be improved but used as it is. But this is also the topic of this thread, to allow a component to grow in features (in this case a better, more general name could used) or let it as it is (and in this case your argument fits very well). Jesus Reyes A. It0s __ Correo Yahoo! Espacio para todos tus mensajes, antivirus y antispam ¡gratis! Regístrate ya - http://correo.yahoo.com.mx/ _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives