Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Funktion ableiten innerhalb einer abgeleiteten ActiveX-Komp. (https://www.delphipraxis.net/21542-funktion-ableiten-innerhalb-einer-abgeleiteten-activex-komp.html)

Alexander 4. Mai 2004 16:35


Funktion ableiten innerhalb einer abgeleiteten ActiveX-Komp.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich beschäftige mich jetzt zum ersten Mal richtig mit der Erstellung von Komponenten.
Und zwar habe ich ein SQL-Tool als ActiveX-Komponente vorliegen, mit dem man recht einfach ohne SQL-Kenntnisse das SQL-Statement zusammen basteln kann.
Jetzt soll diese Komponente einfach um die Eigenschaft "Text" erweitert werden, soweit kein Problem ;-)
Aber der String von FText soll gefüllt werden, wenn die Funktion SetSQLText aufgerufen wird. Text und GetSQLText sollen also immer gleich sein ;-)
SetSQLText muss also abgeleitet werden.
Ich habe das so versucht:
Delphi-Quellcode:
unit FUP_ELS_QB1;

interface

uses
  SysUtils, Classes, Controls, OleCtrls, ELS_QBLib_TLB;

type
  TFUP_ELS_QB1 = class(TELS_QB)
  protected
    { Protected-Deklarationen }
    function SetSQLText(const sSQLText: WideString): WordBool; override;
  private
    { Private-Deklarationen }
    FText: String;
  public
    { Public-Deklarationen }
  published
    { Published-Deklarationen }
    property Text: String read FText;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('ActiveX', [TFUP_ELS_QB1]);
end;

{ TFUP_ELS_QB1 }

function TFUP_ELS_QB1.SetSQLText(const sSQLText: WideString): WordBool;
begin
  inherited SetSQLText(sSQLText);
  FText := sSQLText;
end;

end.
Doch Delphi meldet: "Eine statische Methode kann nciht überschrieben werden"
Mache ich etwas falsch?
Im Anhang habe ich noch mal die TLB von der original Komponente, die von Delphi erzeugt worden ist.
Ich hoffe ihr könnt mir helfen ;-)
PS: Die Sourcen der Komponente habe ich natürlich nicht...

SirThornberry 4. Mai 2004 16:47

Re: Funktion ableiten innerhalb einer abgeleiteten ActiveX-K
 
ich tippe mal die Statiche Methode ist
Code:
function SetSQLText(const sSQLText: WideString): WordBool; override;
Du könntest das Problem lösen in dem du im Orginalquelltext die Methode so änderst das sie nicht mehr statich ist. Wäre es nicht in SetSQLText die Variable setzt sondern eine eine Setmethode für Text schreibst welche dann SetSQLText aufruft

Alexander 4. Mai 2004 16:51

Re: Funktion ableiten innerhalb einer abgeleiteten ActiveX-K
 
Jupp. Es handelt sich um die Funktion.
Das Problem ist mir liegen die Sourcen nicht vor, ich werde sie wohl auch nicht bekommen, da es sich um eine kommerzielle Komponente handelt.
Und in der TLB, die von Delphi erzeugt wurde, bringt es ja nichts.
Ich kann eigentlich nur was in meiner abgeleiteten Version ändern.
Oder habe ich dich missstanden?

Edit: Achso ja das mit der SetMethode könnte man machen.
Doch würde es mich interessieren, ob und wenn ja wie man das doch mit dem Ableiten hinbekommen könnte?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz