1. The generic type is constrained, but cannot be used for class references?
TBase = class
constructor Create; virtual;
TGenericWrapper = class
TBaseClass = class of TB; <– [dcc32 Error]: E2021 Class type required
Is there any logical reason for why this should not be possible?
2. Constructing an instance from a generic type does not flag construction of a class with unimplemented virtual abstract methods. This one I can understand, but it still is annoying. I guess I could factory functions to work around it.
It’s not always easy to pick a good color that will show well on displays with limited color depths.
If anyone knows if this exists – or have some time on their hands, it would be good to have a simple application that could render the System.UITypes TColors constants for lines/text/brushes on different color depths (8 bit, 16-bit, 32-bit). Showing the name of the color (or atleast the hex value) would be good and being able to copy it to the clipboard as a string would be great.
“We’ve got 3 jam-packed days of engaging content—for developers like you. Please note that Day 3 is by invitation only to Update subscribers. We’re offering a wide variety of topics that center around Embarcadero products, related technologies, Object Pascal, and C++.”
The code below shows something that is a bit of a mystery to me.
TQuerySetToGrid = class(TQuerySet); // simplified
TQuerySetXML = class(TQuerySetToGrid)
constructor Create; override;
Apart from “it works that way” – is there a reasonable explanation of why I have to qualify the TFieldxxxx types which all are public types declared inside TQuerySet, when referring the types inside a descendant class? I wonder!
FYI, this is actual code and part of a log viewer in our monitoring and maintenance tool, and to give you an idea of what I am trying to achieve…
This is the scaffolding code needed for link a grid and a query to display the results from a TDataSet.
Initialize and set up the look of the grid:
XMLQueryLog := TQuerySetXML.Create;
XMLQueryLog.Grid := sgLog;
sgLog is a TAdvStringGrid dropped on a frame, and there is some grid specific code to get the desired look, and ofcourse code to handle grid operations – but for the content, this is the only scaffolding needed.
Execute the query and fill the grid:
The “real” scaffolding happens in that Create you saw in the initial class.
Id := Add(‘Id’, 64);
TimeStamp := Add(‘TimeStamp’, ‘Dato og tid’, 120);