 |
 | Mauro Venturini
Companies News:
| FastReport FMX released |  |
Report generator FastReport FMX is the first multiplatform solution for including Business Intelligence into software based on Embarcadero FireMonkey IDE (Delphi for MS Windows and Apple Mac OS X).
Compatible with Embarcadero RAD Studio XE2 (FireMonkey) and XE3 (FireMonkey 2).
Visual report designer is available now on both MS Windows and on MAC OS X!
Full sources.
Get more info here
|
| | Want to know more ? | | Author ProductsTotal 24 products
| .NET > Miscellaneous > Other | | |
Aspects in .NET and Delphi v.1.3 | FWS |
166 k |
19 Apr 2005 |
By Mauro Venturini. There are a new buzzword in software: Aspects. It seems Aspects will be the next big thing after objects. Therefore, papers flocks, see for examples:
The Sarathy paper was stimulating but the sample used C#. As whatever you can do in C# you can do in Delphi, only better, author rewrite the sample. Then he added something to pre method join-points and class sinks: post method join-points, object sinks, some configurability, all in a small assembly. Fully functional Source: Included Exe-Demo Included
| | Download: D2005 |
|
|
| .NET > System > Threads | | |
BackgroundWorker V1.1 | FWS |
39 k |
20 Jun 2005 |
| By Mauro Venturini. Windows Forms applications often require some sort of asynchronous invocation option. .NET 2.0 provides the BackgroundWorker component to facilitate easy asynchronous invocation with Windows Forms.
Waiting for it this is a Delphi.NET BackgroundWorker component implementation based on .NET 1.1. Fully functional Source: Included Exe-Demo Included
| | Download: D2005 |
|
|
| Components > Forms > Effects | | |
BorderExtender v.1.1 | FWS |
57 k |
10 Dec 2004 |
| By Mauro Venturini. WinForms components normally only have FixedSingle, Fixed3D and none border styles. The results are very out of fashion forms, expecially with Win 2K.
The funny thing is that .NET WinForms provides a class (ControlPaint) that can draw nice looking borders. Why they did not used it for the components is a mistery. Anyway, using an extender provider something can be done (see demo project and form image).
Unfortunately, different components behave differently (combo boxes do not even have border style property!) so some experimenting is required to obtain better looking forms. Fully functional Source: Included Exe-Demo Included
| | Download: D2005 |
|
|
| Developer Tools > Developer Tools > Other | | |
Clearer v.1.10 | FWS |
376 k |
28 Jan 2005 |
By Mauro Venturini. History is a great new feature of Delphi 2005. There is only a little drawback: after project completion getting rid of all the history files is a bit annoying. Clear makes this more easy. It also takes care of .NET local storage accumulation due to version changes.
Warning: this is a mass deletion program, use with care and under your responsibility. Fully functional Source: Included
| | Download: D2005 |
|
|
| Developer Tools > Other Tools > IDE Enhancements | | |
DCodeInsight v.2.0 | FWS |
139 k |
11 Dec 2005 |
| By Mauro Venturini. Code Insight is a nice feature indeed. Unfortunately, it sometimes becomes a bit too intrusive: a tooltip flash when you stop just to think, that little red wiggles that keeps flashing when you type, etc.
DCodeInsight add menu items and shortcuts to enable and disable Code Insight features at will. Moreover it can also enable selected Code Insight features automatically on compilation errors. Fully functional Source: Included
| | Download: D2006 |
|
|
| Components > System > Instance | | |
Deriver v.1.0 | FWS |
15 k |
24 Feb 1997 |
By Mauro Venturini. Polymorphic Creation of Instances, that is a way to create an instance whose class type depends on run time parameters. Fully functional Source: Included
| | Download: D1 D2 |
|
|
| .NET Tools > Developer Tools > Other | | |
DILMerge v.4.1 | FWS |
1986 k |
17 Dec 2005 |
| By Mauro Venturini. Delphi tradition was to generate a single executable but when strong reasons requested separated run time packages.
With .NET things are different: a typical .NET application consists of an executable assembly, a bunch of assemblies in the program directory*, and a bunch of assemblies in the GAC.
Now, ok for the GAC, we have been used to system DLLs for a long time, but that DLLs around the executable look so VBish...
Really MS has a assembly linker, ILMerge. ILMerge is a command line tool and its use is a bit akward, so I made a Delphi oriented GUI for it: DILMerge.
DILMerge get a BDS Delphi or C# project, extract and show a list of assembly references and suggest which merge together. If necessary the list can be adjusted or manually constructed and the ILMerge options tweaked before merging the assemblies and generating a good old single file executable. Fully functional Source: Included
| | Download: D2005 D2006 |
|
|
| Developer Tools > Other Tools > IDE Enhancements | | |
Extended Add to Project dialog v.4.1 | FWS |
325 k |
17 Dec 2005 |
By Mauro Venturini. When a project has many files the IDE Project Manager dialogs may be quite cumbersome. AddMany introduces multiselection dialogs that make adding and opening units very fast and easy. Fully functional Source: Included
| | Download: D2006 |
|
|
| Applications in Delphi and BCB > Files and Drives > Other | | |
E_P | FW |
287 k |
20 Oct 1999 |
By Mauro Venturini. The old Windows 3.x File Manager was polite enough to ask if you really wanted to do that 1 GByte directory tree move you just happened to start with a mouse drag. Some genius (!?) at Microsoft decided that this was a useless function and removed it from the Windows Explorer of Windows 95 and NT 4.0, even on the folder tree view (left panel). This small utility sits on the task bar and optionally disable mouse drag on the folder tree view. Fully functional Source: None
| | Download: NT4 W95 W98 |
|
|
| .NET > System > Threads | | |
Multicast delegate asynchronous extensions v.1.2 | FWS |
52 k |
21 Jul 2005 |
By Mauro Venturini. Multicast delegates are a powerful idea but...
- with normal invocation all the targets are executed sequentially before returning control to the caller that is good only if they are short and fast;
- BeginInvoke provides asynchronous execution but supports unicast delegate only;
- no synchronisation of any kind is done on target execution;
- This delegate helper class greatly extends their asynchronous call capabilities.
Fully functional Source: Included Exe-Demo Included
| | Download: D2005 |
|
|
| Developer Tools > Other Tools > IDE Enhancements | | |
OptionsSets v.5.0 | FWS |
229 k |
11 Dec 2005 |
By Mauro Venturini. In Delphi 2006 it is possible to have different project options sets only for C# project and C++. This seems unfair so this OTA plugin introduce project options sets for Delphi proper (Pascal) projects. Fully functional Source: Included
| | Download: D2006 |
|
|
| .NET > Tools > Other | | |
OverRuler v.1.1 | FNCS |
115 k |
20 Aug 2005 |
By Mauro Venturini. There are many 'screen ruler' application around. Some of them support transparency. OverRuler is so transparent that the mouse can go through it and interact with the application under it, that is OverRuler window is not a filled rectangle but a spidery set of lines superimposed to the background. Moreover, OverRuler can use any number of cursors/guides and can autoadapt to the extents of any window on the screen. Fully functional Source: Included
| | Download: D2005 |
|
|
| Components > System > Threads | | |
ParamSync v.1.2 | FWS |
9 k |
24 Feb 2003 |
By Mauro Venturini. The TThread.Synchronize causes a method to be executed using the main thread, thereby avoiding multi-thread conflicts (expecially on the VCL). Unfortunately it only supports parameterless methods. This unit provides techniques to extend this to methods with parameters.
- Any method of a thread derived from TParamThread can be synchronized to the main thread using ParamSynchronize.
- Any method executed inside any thread can be synchronized to the main thread using the Execute method of TParamSynchronize. It can be accessed directly (it is a class method) or creating a TParamSynchronize object (a singleton).
- With some limitation about parameter types a thread derived from TParamThread can launch one of its method using ParamAsynchronize and go on without waiting for its completion.
- With some limitation about parameter types a any thread can launch any method using the Execute method of TParamAsynchronize and go on without waiting for its completion.
In the last two cases the method execution is delegated to a server thread and the execution can be synchronized or not to the main thread. Fully functional Source: Included
| | Download: D7 |
|
|
| Developer Tools > Code > Code Generators | | |
PrefixIt v.5.0 | FWS |
1261 k |
06 Feb 2005 |
| By Mauro Venturini. .NET framework is nice indeed. I like it, and I am a Delphi "integralist".
Unfortunately, someone in MS decided that interface name prefix 'I' is good but class name prefix ('T' or 'C') it is not. This has unpleasant consequences.
1 - It decreases code clarity, e.g. is that a class or an instance reference?
2 - It makes often necessary to use the full type name because of clashing with some property, e.g. every form has a DialogResult property so if you want to test for a DialogResult type value you end up writing "if AForm.DialogResult = System.Windows.Form.DialogResult.OK then"
3 - It makes instance naming a pain, e.g. as I can not call it Graphics should I call it AGraphics, MyGraphics, _Graphics, argh! C# chaps have a case-sensitive solution: they uncapitalize the instance names, e.g. Graphics graphics = new Graphics; Very readable indeed! Not to mention the problem if the instance is visible outside the assembly (.NET in general is NOT case-sensitive).
Delphi would have the solution: type equivalence, e.g.
type
TGraphics = System.Drawing.Graphics;
var
Graphics: TGraphics;
but manually rename all framework types is not an option.
Fortunately, using reflection it is quite easy to develop a tool that inspects one or more assemblies and generate units with all the required type definitions. These "prefix units" can be used directly or, better, included in one or more compile only "prefix packages".
These type definition bunches are also a nice place where to put some helper types, especially dynamic arrays of base types that are necessary for object casting due to a quirk of Delphi sintax: casting directly to a dynamic array does not compile. e.g.
type
TStringArray = array of string;
var
e: TDragEventArgs
Drops: TStringArray;
//This compiles
Drops := e.Data.GetData(TDataFormats.FileDrop) as TStringArray;
//This does not
Drops := e.Data.GetData(TDataFormats.FileDrop) as array of string; Fully functional Source: Included Exe-Demo Included
| | Download: D2005 |
|
|
| Developer Tools > Other Tools > IDE Enhancements | | |
PUses v.4.0 | FWS |
303 k |
11 Dec 2005 |
| By Mauro Venturini. PUses (now D2006 ready) implements orderly reformatting of uses clauses and search for namespaces that implement a given type.
The reformatting includes rewriting the unit/namespace names one per line and sorting them and optionally adding the prefix unit (generated using PrefiIt.) names.
This makes extremely easy the use of prefix units generate by PrefixIt. PrefixIt. can be found at Borland Code Central. Fully functional Source: Included
| | Download: D2006 |
|
|
| Developer Tools > Other Tools > IDE Enhancements | | |
Regionalize v.3.0 | FWS |
127 k |
11 Dec 2005 |
| By Mauro Venturini. Nick Hodges, self appealed "Delphi Bigot", complained time ago about ’Ten Annoyances in Delphi 2005’ at CodeFez.
I, probably, more a Delphi Bigot than he is, decided then that at least one of them (no ’Make Region of Selected code’ option) could be easily removed. Now Delphi 2006 has the new and nice templates that can surround code but Regionalize is still more flexible. Fully functional Source: Included Exe-Demo Included
| | Download: D2006 |
|
|
| .NET > Miscellaneous > Other | | |
SystemT v.1.0 | FW |
750 k |
09 Feb 2005 |
| By Mauro Venturini. .NET framework is nice indeed. I like it, and I am a Delphi "integralist".
Unfortunately, someone in MS decided that interface name prefix 'I' is good but class name prefix ('T' or 'C') it is not. This has unpleasant consequences.
- It decreases code clarity, e.g. is that a class or an instance reference?
- It makes often necessary to use the full type name because of clashing with some property, e.g. every form has a DialogResult property so if you want to test for a DialogResult type value you end up writing "if AForm.DialogResult = System.Windows.Form.DialogResult.OK then"
- It makes instance naming a pain, e.g. as I can not call it Graphics should I call it AGraphics, MyGraphics, _Graphics, argh! C# chaps have a case-sensitive solution: they uncapitalize the instance names, e.g. Graphics graphics = new Graphics; Very readable indeed! Not to mention the problem if the instance is visible outside the assembly (.NET in general is NOT case-sensitive).
Delphi has the solution: type equivalence, e.g.
type
TGraphics = System.Drawing.Graphics;
var
Graphics: TGraphics;
The type equivalence definitions for the .NET framework can be generated automatically using a tool as PrefixIt! and a package built from them: SystemT.dll.
Now to use inside your application or package these new names for the .NET framework types you have to:
- Add a reference to SystemT.dll package removing both the "Copy Local" and the "Link in Delphi Units" options;
- For every namespace "N" that you want to use inside a unit add "N" AND "N".T to the uses clause.
That's all. Fully functional Source: None
| | Download: D2005 |
|
|
| Components > Files and Drives > Log Files | | |
TEventLog v.1.1 | FWS |
162 k |
17 Aug 1999 |
By Mauro Venturini. Any decent Windows NT/2000 application should use event logging. As usual Windows API are a bit intimidating but after this component there are no excuses. Just drop it and use Add method. Fully functional Source: Included
| | Download: D4 |
|
|
| Components > System > Apps Communications | | |
TMessage Socket v.1.1 | FWS |
201 k |
05 Jan 1998 |
By Mauro Venturini. This component wrap the wm_CopyData message usage. So sending and posting messages between processes becames much more easier. Fully functional Source: Included Exe-Demo Included
| | Download: D2 |
|
|
| Applications in Delphi and BCB > Desktop > Enhancements | | |
TrayAreaInjector v.1.3 | FWS |
557 k |
24 May 2005 |
By Mauro Venturini. Using TrayAreaInjector a client application can inject into the Windows Task Bar a panel similar to the tray area and then dynamically add, remove and modify subpanels inside it. Every subpanel contains a text caption and an image from a list. TrayAreaInjector was developed to offer an immediate status feedback from some Open Tools plugins but can be used for any similar purpose. Fully functional Source: Included
| | Download: NT4 W2K W2K3 XP |
|
|
| Components > Labels > Enhanced Labels | | |
TTrimmingLabel v.1.0 | FWS |
2 k |
02 Jan 2005 |
By Mauro Venturini. TTrimmingLabel is a Windows Forms label that can trim the Text string to adapt it to the available Width. The trimming is controlled by the Trimming property (of type System.Windows.Forms.StringTrimming). Fully functional Source: Included
| | Download: D2005 |
|
|
| .NET > System > Other | | |
UnhandledExceptionManager for .NET v.2.3 | FWS |
262 k |
02 Jun 2006 |
| By Mauro Venturini. When a .NET application hits an unhandled exception the default behaviour is to show a very poor dialog. Therefore, it is (or should be) common practice to hook UnhandledException event of the current AppDomain and ThreadException event of Application.
Unfortunately, there are security restrictions on these hookings that prevent their direct use inside application that will be run without full trust (and even Local Intranet group does NOT have full trust).
A solution is to delegate the hookings to a full trusted assembly inside the GAC and reference it. UnhandledExceptionManager is an assembly that implements the technique. Version 2 supports also delayed binding usage that reverts to reduced functionality when UnhandledExceptionManager assembly is missing (and in doing so evidences the problem). Fully functional Source: Included
| | Download: D2006 |
|
|
| .NET Tools > Code > Code Generators | | |
XSGen v.1.0 | FNC |
260 k |
23 Sep 2005 |
By Mauro Venturini. .NET XmlSerializer is a nice class: it can serialize and deserialize almost anything almost anyway, and the serialization is quite fast too. Unfortunately, no lunch is free: during the first constructor invocation for a target type XmlSerializer create and compiles a C# assembly with the serialization code tailored to the target type. That's a lot of overhead, both in memory and execution time, that happens every time your application runs. Microsoft recognised the problem and .NET 2.0 includes an utility (SGen) that executes offline steps 1, 2 and 3 and produces the serialization / deserialization assembly. But .NET 2.0 is not here yet and SGen is a not very friendly command line utility. Here comes XSGen that produces offline the serialization / deserialization assembly required for a given target type, works now with .NET 1.1 and integrates with the Delphi 2005 IDE to make the process as easy as possible. Fully functional Source: None
| | Download: D2005 |
|
|
| News from our Sponsors |
Problem Solving with Delphi This title includes a book and a CD. The purpose of the book is to use Delphi as a vehicle to introduce some fundamental algorithms and to illustrate several mathematical and problem-solving techniques. This book is therefore intended to be more of a reference for problem-solving, with the solution expressed in Delphi. It introduces a somewhat eclectic collection of material, much of which will not be found in a typical book on Pascal or Delphi. Many of the topics have been used by the author over a period of about ten years at Bond University, Australia in various subjects from 1993 to 2003. Much of the work was connected with a data structures subject (second programming course) conducted variously in MODULA-2, Oberon and Delphi, at Bond University, however there is considerable other, more recent material, e.g., a chapter on Sudoku. more...
Easy data compression solution! Easy Compression Library is a very easy-to-use replacement of TFileStream, TMemoryStream and other TStream descendants to their analogues with compression/decompression and encryption. Compression is transparent, all the methods, properties and behavior of TFileStream and TMemoryStream are supported, so it is very simple to replace them in the application code. Save up to $500 by ordering at Torry's Showcase! more... |
| |
Advertising on Torry's Delphi Pages
|
 |
 |
 |
|
 |