As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
What is the best GRID and TREE control for DELPHI win32. It should also be DB-Aware.
I have use the DBGrid but it is very limited and lakes a lot of new features
DevExpress as an impressive collection of tools and features, but a very high price.
What is your GRID/TREE of choice its pros and cons, and of course its price tag.
Your are asking for the best and rulling out the #1 ;).
For the tree the "best" is http://www.soft-gems.net/index.php?option=com_content&task=view&id=12&Itemid=33, because is virtual, is very flexible and very fast. But is harder to use (ie. in comparation with a regular tree control).
With that is possible emulate a grid. Also is free & have source. As far I know, is the best tree control across any language & plataform in this universe.
Well, I have the DevExpress VCL subscription, and although the initial price seems high it is good value and the renewal is sensible. The grid will do all you ever want (and more) though you do have to spend some time learning it so you can understand where the features are controlled. The advantage of the subscription is that you get pre-release betas, and you get everything which means that I've been able to use controls I'd never justify individually but they are in my toolkit so I can use them.
TMS Component Pack have a good Grid Components and a lot of other, it's the main competitor to DevExpress components
also if you want a nice,light and fast grid have a look at NextGrid
VirtualTreeView has been mentioned here already. While it is quite flexible and I am currently using it, there are a few things I don't like about it:
It is no longer actively maintained by its original author Mike Lischke and it is not clear whether there is somebody else in charge now.
It has quite a steep learning curve. Be prepared to study the provided example applications closely, otherwise you will not be able to use it.
It comes with online help but that help is even worse than that of Delphi 2005. Yes, it does cover most of the properties, methods and classes, but mostly the help is not very "helpful". (I am aware that I have no right to demand good online help for a free tool, but it is a factor nonetheless.)
I don't like the way the virtualization is actually done. I would have done it differently. (I don't know whether my way would have been better, though. Your mileage may vary.)
It feels stuffed with too many features. I would have liked something more lightweight.
I have used in my application ElTree by LMD Innovative for almost 10 years. It is part of their excellent ElPack suite of tools. They recently included a version called ElXTree which has some extras. They are both DB-aware.
I was considering switching to Virtual Treeview a while back. I compared the two, and could not find anything I needed that Virtual Treeview did that ElTree didn't. ElTree has a Virtual mode as well if you want it.
ElTree does things a bit differently and than Virtual Treeview. Compare the two before you decide, or even try them both first. You may find you like the way one works better than the other.
Advantages of ElTree over Virtual Treeview:
It is still being actively maintained and they have good support on their Newsgroups. Whereas Virtual Treeview is now Open Source and the original author Mike Lischke is no longer actively working on it.
ElPack already has their Delphi 2009 compatible version out. In fact, they've had it out for several months already. Virtual Treeview does not have a version out for Delphi 2009 yet.
Disadvantage of ElTree:
It is not free, but it is less expensive than DBGrid. And you may find the other ElPack VCL Components (all Unicode enabled) to be useful for your product as well.
Version 7.0 (for Delphi 2009) of LMD ElPack is 159 Euros. If you decide to buy it, pay in Euros because ShareIt charges exorbitant exchange rates.
Also see my answer to: Delphi Active Commercial Components.
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I am a final year Computer Science Student and as part of my Bachelors degree I am doing a project on Data Mining of Microarray DNA expression data. I will have to develop a few algorithms such as Bayesian Networks to run on my datasets to find out how each variable(genes) affect each other.
As part of my Project Proposal I have to talk about which methodology I will use to develop my software. From what I have learnt in school and from extra reading I find that the Incremental Development model seems a good idea. I would run 2- 3 iterations of Plan, Design, Implement until I get the full functionality of the software. Could somebody with more knowledge than me please tell me it this sounds like a good idea.
The reason why I am not 100% sure which methodology I would use is because I don't have a team to work on the software, I don't have a client with requirements and I am very limited in terms of the amount of time to work on the project as I have 3 other modules. All the methodologies which I have read about seem to be for big software projects with teams of developers. What do you do if you are just 1 person and focusing mainly on getting 3-4 algorithms to work rather than focusing on getting broad range of functionality.
I was also thinking of using UML to get a better idea what I want the software to do and using like a stripped down version of an Object Oriented Methodology.
My guess would be I would have to use parts of more than 1 methodology at a very basic level but I just can't pick.
I am very confused and lost on the subject so any help is greatly appreciated.
Thank You,
For these types of work, I would suggest not to pay much of attention to methodologies, because after all, what matters is the algorithm. But, for the sake of having a response for your dilemma, I would suggest using XP (eXtreme Programming). Why?
Is light
It doesn't require filling many papers as RUP & others
Is more suited for changing evironments, such as yours
Just take a fast search at Google for XP methodology and you'll get a bunch of useful results. ARUP (Agile RUP) might be worth looking also.
I hope I can help you.
XP/TDD is harmonious with the scientific method; each iteration is a theory, the tests are experiments
It takes a lot of discipline to follow a methodology while working solo, make sure you pick one that isn't labour intensive or you'll never live up to it.
If I was back at school in your situation with what I know now I'd probably go for Test Driven Development. Unit tests are ideal for testing algorithms and will leave you with a body of tests that you can use to demonstrate that you did follow a methodology.
Your idea to do the project in several iterations of plan, design, code and test is fine however with small projects it's sometimes difficult to resist the urge to do it all at once.
In case you do get carried away and finish the project in just one or two iterations, keep notes about the order in which you did things (ideally use a version control system) so that you'll at least be able to fudge your documentation to make it look like you used several iterations. Not that I'd endorse such an approach of course ;-)
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Delphi developers has several tools (several alternatives to ASP.NET) for building web applications.
While No.1 framework is Intraweb, there is a lot of interest around ExtJS, that has 2 incarnations:
1) the opensource ExtPascal
2) the closedsource Raudus
Now the products are different, Raudus never supports the latest ExtJS version (while ExtPascal does because as far as I read it "almost automatically updates itself to the latest ExJS version"), Raudus "seems" much RAD (much similar to Intraweb from the RAD point of view).
Anyway why chose one or the other?
Why Raudus (since it is free) cannot become Open Source? Or does Raudus use ExtPascal behind the scenes?
Comment: uniGUI seems at first sight to combine the good part of Raudus (the RAD part) and ExtPascal (being based on extPascal).
Talking about Raudus, I'd be careful! You can download it for free, indeed. I was about to start using it when I realized there's no single word on its usage license. There's no license in fact, or I was unable to find it under "standard" locations (website? no. installer? no. README / LICENSE file? no.)
Thus I'd be careful with using library which doesn't specify it's license. Especially if you're about to start some project which will use it intensely - just imagine what happens when it comes out that you need to pay big amount of money for using it ...
Why use any of them? RAD in the form of Intraweb and tools like it, is not appropriate for web programing. It doens't separate the GUI from bussines logic well. In other words there is no true MVC approach there. Maybe ExtPascal is different here, but the point is elsewhere.
ExtJS is a very well written RAI JS library. It feels almost like putting blocks of code together in a very object oriented way. You can easily build whole GUI with ExtJS without any backend support. This way your whole GUI is in javascript files and no backend is needed. Backend only processes the ajax call and provides data / processes data. This way you have a clear separation of concerns.
This can be easily done without any frameworks. Yes framework would come in handy but it would have to be done in a ASP.NET MVC or Ruby on Rails way. No RAD and no visual designers. New web developers often make those mistakes. But if you program for the web long enough you come to appreciate the separation of GUI and logic and the simplicity of HTML. Web programming is different from desktop programming at least to a degree.
To answer your question. From what I have seen, I like ExtPascal better. It seems a purer web development tool than Raudus. But I admit I have only seen both from the surface and from demo videos, so I cannot judge, only speculate :)
The Raudus developer put up a new blog post in late October and claims, well I'll let you read the snippet for yourself:
"Raudus license is freeware as written in license.txt. You CAN use Raudus in commercial projects. Raudus sources are not available yet."
Edit: There is a license statement at the bottom of the http://www.raudus.com/ page.
"License
Raudus is freeware. You can freely use Raudus for commercial purposes."
As to contacting the author, try this from the same page: E-mail: igor#klopov.com
After using Raudus for a few months I decided to post my own answer.
The framework is improving, Sencha touch support now it is not complete but sufficient to create usable web applications optimized for mobile devices.
RFE, a new front end, not based on Sencha Touch is under developement and in next Raudus release (that should be out soon) there will be a usable preview of the new controls set.
So while ExtPascal seems frozen, Raudus is in progress and promising.
Update: I stopped using Raudus, it dropped ExtJs support and now it ships with own controls, that will never match the beauty and richness of extjs components. I am now going for IW + cgdevtools components that are Jquery UI for IW.
user193655 --> Depending on what you do be carefull with both approaches. I am really a big fan on Delphi or Freepascal/Lazarus - I am not very certain if the approach of bringing 3GL bindings to the Javascript stuff is wise.
MVC - depending on what you do - in PHP you have the Yii Framwork or Prado. Maybe the second has some ideas from .net built in which are very easy to understand by Delphi developers. PRADO is an event driven approach while YII Framework is absolutely cool and unix like.
After using Raudus it seems that it is not practical for large scale of applications.
According to their documentation and I have also sampled, it serializes all client request into single main thread. However it process client request and response generation part in multi-threaded enviornment.
But main thread issue is quite important as it directly impact the response time if one action is taking more time in the main thread, others will keep waiting.
Any suggestions to resolve this issue?
Raudus:
Relies upon Delphi, in which:
Is verbose;
Relies upon Microsoft Windows;
High-cost to adapt to or to maintain;
Quote from raudus.com: "Raudus is freeware. You can freely use Raudus for commercial purposes. Raudus sources are not available yet." — This, to me, will be never a license. On the homepage, simply there is no documentation about Terms of Service or something like that. Hence I won't deal with their services.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I've been trying to choose between the three accounting software. However, I can't decide which one should I use. In terms of user interface, I would go for PeachTree and QuickBooks. MYOB seems too old IMHO. In terms of using for software development, I would go for QuickBooks because I think there are many developers using it and the SDK can be easily downloaded. Also, do these software support currencies aside from dollar? What SDK is easy to use for .NET development? TIA.
QuickBooks is very mature and much, much more popular than either other system. It's also much easier to find an accountant familiar with QuickBooks than it is to find an accountant familiar with either of the two others.
As far as development goes, QuickBooks has a reasonably strong developer community behind it, and integration/the SDK is pretty flexible. There is an official QuickBooks SDK that's pretty easy to use and is downloadable from Intuit's site. The forums are also a good resource:
https://idnforums.intuit.com/
To answer the question about SDK's (selecting an accounting package for everyday use is beyond the scope of this site), I've used both Quickbooks and Peachtree; I don't know anything about MYOB. Here we go.
Quickbooks:
A lot of stuff is hidden by the COM interfaces, so you end up having to do tricky type casts that you have to look up in the documentation. And since you'll be doing this every time you unwind a results list, it happens quite frequently.
It's confusing at first because the framework is actually quite powerful in terms of result filtering. This, coupled with the previous point, makes getting started a little difficult.
The documentation is not the greatest, but is more or less complete. Some of the examples are convoluted and unhelpful, but most of the time you can get what you need from them.
Actually connecting to Quickbooks is quite slow. The API lets you aggregate requests (i.e., on one call, you can query customers and items at the same time) which helps out a little bit.
There are a lot of little quirks in the API
The API is interface-centric
There are some features in Quickbooks that are implemented much differently than in other accounting packages. These things show through in the API, which in turn makes it more difficult to write code. Sometimes it makes sense, sometimes it doesn't.
Peachtree:
Connecting and querying is very fast, but involved queries (such as invoices) are very very slow, even when only a single field is returned.
Results come back in XML, so it's not as automatic as having things come back in .NET objects, but at least it's easy to process. Some of the XML structures are a bit bonkers (attributes attached to the wrong element), but processing that isn't a huge deal.
The documentation (a single Word document) is pretty bad, and the developer community is essentially under lock and key (you have to be a partner with Sage, i.e., $$$, to get access to their online forums). Googling "Peachtree SDK"-anything returns zero useful results.
The API is enum-centric, and the enums aren't documented very well. API classes and interfaces are named poorly (no I-prefixed interfaces) such that name collisions are likely... so you'll have to alias the API namespace in most cases. The enum names themselves are unbelievably long. Sometimes it takes 2 lines to specify a single enum value, which is unbelievably messy and annoying (example, without namespace alias: PeachwIEObjCustomerListFilter.peachwIEObjCustomerListFilter_CustomerName).
Result filtering isn't as powerful as Quickbooks, and in fact I'm struggling to get it to work at all (with an example lifted directly from the docs) is essentially useless.
From what I've read, API support is less than stellar (it seems like Sage aren't really developing it any more, and they may possibly be phasing out Peachtree altogether)
The implementation is less complete than Quickbooks
Both APIs have their strengths and weaknesses... I couldn't really give any kind of recommendation for either without knowing what type of application you're targeting, and how extensive your needs are.
I use MYOB as the main accounting package for a law firm employing 10 people. The program integrates with another package we have to use for statutory Trust accounting. Of the two programs, MYOB is noticeably superior. It is easier to use and is extremely robust and reliable. I have not used Peachtree or Quickbooks but rate MYOB as 9/10 and would be reluctant to change.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
As I'm riding the wave of resurgence of Smalltalk (especially because many Ruby-on-Rails people are rediscovering Smalltalk and seeing Seaside as their next upgraded web framework), I get questions like "yeah, but how do I use my favorite editor to edit Smalltalk code?" or "Does Smalltalk still insist on living in a world of its own?".
Now, having first experienced Smalltalk back in 1981, I don't understand these questions very well. It seems rather natural that I'd want the editor and debugger to be savvy of my current code state, and integrate with the change control system that is Smalltalk-aware. Using an external editor or debugger or change control manager would seem very awkward.
So what is it that scares you the most about not being able to edit the five-line methods in Smalltalk with your favorite editor, or use your favorite non-Smalltalk-aware change control system?
Everything's different. Want to go to the end of the line? It's not Ctrl-E. Want to jump a few words over, by word? It's not Meta-F....
Text editing is a fundamental programming activity. Messing with those inputs is messing with something deep in my mind.
Edit: and here is someone asking for emacs key bindings on comp.lang.smalltalk in 1987.
The only Smalltalk I've spent any time with is Squeak, so my views may not apply to other Smalltalk environments.
What concerns me about the image-based approach is that, while you have wonderful things in the Smalltalk environment, it is a walled garden that makes it difficult to interoperate with anything outside that environment. For example, what if I want to use external tools like Yacc and Lex? What if I want to use some C or Python programs to generate Smalltalk code? What if I want to mix Smalltalk in with a bunch of code written in other languages, editing code in all those languages in one editor and keeping it all stored in the same source-code tree?
I'm sure it's possible to deal with all these issues by having your Smalltalk environment invoke system functions to control external tools. But how easy is it to let external tools control your Smalltalk environment? In other words, what if I want Smalltalk to be just another component, rather than the master of everything?
Nothing scares me in particular, but I found working out the API's in VW a bit of a chore, even when I had used other smalltalks. The effect of the browsers is that you tend to see the API's a little bit at a time and quite often it's not immediately obvious where you should look for particular functionality.
Smalltalk also suffers a bit from the paradigm shift to understand how it works. When I was doing my bachelor's degree at university (some time after I had first encountered Smalltalk) I got to enjoy a bit of Schadenfraude watching everyone else in the class getting over the initial paradigm hump as they learned the system (Squeak) for the first time.
I think the combination of the paradigm shift and functionality being somewhat buried in the class libraries makes for a bit of a steep learning curve. ST had a reputation for a fairly steep learning curve to really come up to speed - most of this is due to the large class libraries and the fact that most of the language functionality is buried somewhere in the libraries.
Also (and sadly), Java came along in the mid 1990s and grabbed all of the mindshare. The major Smalltalks have either died completely or been sold off to niche players. It's quite Ironic (in a happy way) that Ruby has served to re-awaken interest in Smalltalk but the lingering perception of 'also-ran' obsolescence doesn't help.
See This post of mine for some pontification about the merits (as I see them) of getting heavily involved in Smalltalk in this day and age.
I would be quite happy to go back into Smalltalk if the opportunity were to arise.
The one big show-stopper for me is that code I write one Smalltalk VM is STILL, after all these years, not compatible with other Smalltalk VMs.
I understand why that is: the core of Smalltalk is an extremely small set of axioms and keywords. This means that after 30 minutes of learning Smalltalk, you're already learning the API library rather than the language itself. I like that approach to language design.
What it all boils down to however, in the Smalltalk world, is that unless a consensus is reached between all VM vendors to have a common base Standard API, my Smalltalk code written for one VM is almost certain not to run on other VMs when I decide to switch.
This also has the corollary of obsoleting part of my knowledge of the space when I switch VMs.
Note that I have barely tried Smalltalk in my life. I'm far from being an expert. This understanding comes from speaking with James Robertson about a month ago.
Another point I'd like to make is that Seaside does in fact run on most popular Smalltalk VMs. I wonder how much of (what should have been) a Standard API they had to build for themselves to achieve that feat.
With all that said, I always have an ear out to hear more about the state of Smalltalk. I do want to try out Smalltalk's very powerful development environment (and its other goodies).
I know it's late but the biggest annoyance for me is that there is not really good editor in none of the smalltalks. It's a thing I can not understand. Working with text is so essential and that less "supported"....
It's always this just staring at one method and then you need to have some method finder or another browser around just to check another method. This is what I really dislike....
While the restricted Smalltalk environment made things like relying on a database driven source control system possible at times where other languages still struggled with having a proper editor, it makes integration very hard in todays times.
With tools like Eclipse or Team Foundation Server you get so used to having all tools integrate with each other. E.g. if a requirement is created, it is automatically linked to the change sets that the programmer commits to implement that requirement. This "boundary breaking" between formerly different tools is nearly impossible in the Smalltalk world, but with bigger projects, bigger teams, higher levels of abstraction and so on you need tools which are more than a fancy editor and help you throughout a full software development life cycle.
No useful support for navigating with the keyboard, or supporting platform UI behavior.
While it's true you don't really need an incredible text editor for (well-written) Smalltalk, being able to move around the environment while keeping your hands on the keyboard is quite useful (and in my case, essential to reducing RSI). I just was trying VisualWorks' inspector and the arrow keys didn't even work properly to move up and down a list. When I hit the space bar, I got a walkback. Sigh.
For the Windows world, there is nothing like Dolphin Smalltalk. The IDE is fantastic. Another quality product if you want to try is Visualworks, it works well, has a very fast VM and the documentation is pretty good.
I've used both in the past, there is nothing to fear.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
What Delphi coding standards document(s) do you follow?
Our company is looking at putting some better coding standards in place, to improve our code’s readability, reviewability, and maintainability. We’ve come across CodeGear’s “Object Pascal Style Guide”, but it hasn’t been touched in quite a while and I imagine a number of people have made some local improvements or additions. I’ve come across some published variations and other documents, which I will list, below.
NB: I do not want to start a style war. I just want to know what standards you follow, and why.
Thanks.
UPDATE: Well, the "JCL Delphi Language Style Guide" seems to be the clear winner! Thanks!
Project JEDI Delphi Language Style Guide With JCL Additions
(An extension of CodeGear’s “Object Pascal Style Guide”)
https://wiki.delphi-jedi.org/wiki/Project_JEDI_Delphi_Language_Style_Guide
(Thanks to Jeroen Pluimers and AmigoJack for reporting that the old links had died.
And in case this latest link also dies, here's its Internet Archive link, for good measure.)
CodeGear’s “Object Pascal Style Guide”
http://edn.embarcadero.com/article/10280
Econos – Coding Standard Document
(Subtitled “Delphi 4 Developer's Guide Coding Standards Document”.)
http://www.econos.de/delphi/cs.html
About.com’s “Delphi Identifier Naming Conventions”
http://delphi.about.com/od/standards/l/bldnc.htm (via Wayback Machine)
It really doesn't matter as long as you pick one and stick to it. A coding standard is like a dialect, and as long as everyone on the team speaks the same dialect, you're fine.
That said, why not pick the same standard as your runtime library (VCL) and documentation use? Then you will all be speaking the same dialect and you will have an easier time reading the runtime library code. And there are plenty of code examples to illustrate coding conventions.
There can be a tendency to over-engineer coding standards to the point where they get in the way of writing code.
I agree with Jozz’s comment. You can look at all the recommended standards, pick one and force it upon your coders or you can get your team involved in the process.
In my experience, the best way to get a team engaged is to have the team come up with the idea and the benefits of adoption. Your existing talent is your best resource. Likewise, they can be your ultimate enemy if you force them down a path they don’t buy into.
So, take a look at your existing coding variants and get the team together for some vibrant discussions on:
The reasons for adopting a coding standard.
Essential considerations in standardization.
Surfacing any insecurities in the team surrounding this issue.
Finding a point of agreement. What's important and what's not.
Establishing some corporate objectives so everyone feels like they are working towards a common goal.
Get the team to sell the benefits of standardization to themselves.
The most important objective must be to establish a ‘standard’ that best serves your team and your company.
For some inane historical reason, the coding standard at my work is to have all keywords in uppercase, in both delphi and sql. Thank god for caps lock.
CodeGear’s “Hungarian peanut butter”, for naming identifiers
http://dn.codegear.com/article/27983