Der Konstruktor mit dem Parameter 'vorgaenger' ist kein Copy-Konstruktor, sondern dient zum Aufbau der Baumstruktur während der Bearbeitung. Bei einem Copy-Konstruktor hieße der Parameter 'source'.
Günstiger wäre es die Erzeugung eines Objekts dieser Klasse an anderer Stelle vorzunehmen:
Delphi-Quellcode:
function TDatenModul.CreateXYobjekt(ID: Integer):TKlasse;
begin
Query1.parameters.ParamValues['ID'] := ID;
Query1.Open;
Result := TKlasse.Create(Query1['...'], ...);
Query1.Close;
end;
Das halte ich nun wieder für überhaupt nicht zielführend, denn ausschließlich meine Klasse weiß, welche Variablen sie enthält und welche sie damit aus einer Datenbankabfrage (deren Semantik auch nur sie selbst kennen kann) gewinnen kann.
Das Argument, dass bei der Abfrage etwas schiefgehen kann, zieht natürlich, also werde ich die Static-Function-Variante wählen.