![]() |
Datenbank: MSSQL • Version: 12 • Zugriff über: ADO
TFDCommand : Überschreiben von Properties der Elternklasse
unsere Anwendung wurde unter Windows und dem DB Framework ADO entwickelt, wir benötigen jetzt auch Support der Plattform UNIX, und dem DB Interface FireDAC.
Wir wollen deshalb beide DB Interfaces über Compiler Switches unterstützen aber nur eine Code Variante bereitstellen/pflegen/weiterentwickeln ..... Wir haben deshalb eine "Vermittler Klasse " eingeführt, die entweder von TAdoCommand oder TFDCommand erbt. unit FireDAC.Comp.Client;
Delphi-Quellcode:
CommandText ist bei ADO ein String bei Firedac eine Stringliste. TFlexCommand = class(TFDCommand) private procedure SetCommandText(const Value: string); public property CommandText : string write SetCommandText; end; procedure TFlexCommand.SetCommandText(const Value: string); var tempLst : TStringList; begin tempLst := TStringList.Create; try tempLst.CommaText := Value; // Self.SetCommandTextStrs (tempLst); (1) // FCommandText.SetStrings(tempLst) (2) finally tempLst.Free end; end; Ich will jetzt die Property CommandText ind meiner neuen Klasse als als String haben und dann als Stringliste an die Eltern-Klasse TFDCommand übergeben, meine beiden Versuche (1) und (2) lassen sich aber leider nicht compilieren, welchen Fehler mache ich ? |
AW: TFDCommand : Überschreiben von Properties der Elternklasse
Da der Setter private ist greife auf das geerbte property zu:
Delphi-Quellcode:
procedure TFlexCommand.SetCommandText(const Value: string);
var tempLst: TStringList; begin tempLst := TStringList.Create; try tempLst.CommaText := Value; // Self.SetCommandTextStrs (tempLst); (1) inherited CommandText := tempLst; //(1) // FCommandText.SetStrings(tempLst) (2) finally tempLst.Free end; end; Ich würde auch die Verebung von TFDCustomCommand machen also:
Delphi-Quellcode:
So kannst Du besser festlegen was als published deklariert wird
TFlexCommand = class(TFDCustomCommand)
private procedure SetCommandText(const Value: string); public property CommandText: string write SetCommandText; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz