Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Method not found in base class (https://www.delphipraxis.net/35781-method-not-found-base-class.html)

fkerber 11. Dez 2004 18:46


Method not found in base class
 
Hi!

Ich versuche ein OpenSource-Projekt, das mit Delphi geschrieben wurde bei mir zum Laufen zu bekommen, damit ich die ein oder andere Veränderung vornehmen kann. Dieses Projekt verwendet Synedit und der Autor hat eigene Komponenten abgeleitet und mit weiteren Eigenschaft versehen. Dummerweise kommt jetzt beim Installieren dieser Fehler:

Zitat:

Method 'SetSelTextExternal' not found in base class
OBWOHL es die Method gibt. Ich poste hier mal die Auszüge:

Delphi-Quellcode:
// Synedit.pas - also original Synedit
  TCustomSynEdit = class(TCustomControl)
  private
{$IFDEF SYN_CLX}
{$ELSE}
    procedure WMCaptureChanged(var Msg: TMessage); message WM_CAPTURECHANGED;  //jr 2001-01-06
    [...]
    procedure WMVScroll(var Msg: TWMScroll); message WM_VSCROLL;
{$ENDIF}
  private
    fBlockBegin: TPoint;
    fBlockEnd: TPoint;
    [...]
    fChainUndoAdded: TNotifyEvent;
    fChainRedoAdded: TNotifyEvent;

    procedure BookMarkOptionsChanged(Sender: TObject);
    procedure ComputeCaret(X, Y: Integer);
    procedure ComputeScroll(X, Y: Integer);
    [...]
    procedure SetBorderStyle(Value: TSynBorderStyle);
    procedure SetCaretX(Value: Integer);
    procedure SetCaretY(Value: Integer);
    procedure SetActiveLineColor(Value: TColor); //GBN 05-11-2002, for CurremtLineColor property
    procedure SetExtraLineSpacing(const Value: integer);
    procedure SetFont(const Value: TFont);
    procedure SetGutter(const Value: TSynGutter);
    procedure SetGutterWidth(Value: Integer);
    procedure SetHideSelection(const Value: boolean);
    procedure SetHighlighter(const Value: TSynCustomHighlighter);
    procedure SetInsertCaret(const Value: TSynEditCaretType);
    procedure SetInsertMode(const Value: boolean);
    procedure SetKeystrokes(const Value: TSynEditKeyStrokes);
    procedure SetOnKeyDown(const Value : TKeyEvent);
    function GetOnKeyDown : TKeyEvent;
    procedure SetOnKeyPress(const Value : TKeyPressEvent);
    function GetOnKeyPress : TKeyPressEvent;
    procedure SetLeftChar(Value: Integer);
    procedure SetLines(Value: TStrings);
    procedure SetLineText(Value: string);
    procedure SetMaxLeftChar(Value: integer);
    procedure SetMaxUndo(const Value: Integer);
    procedure SetModified(Value: boolean);
    procedure SetOptions(Value: TSynEditorOptions);
    procedure SetOverwriteCaret(const Value: TSynEditCaretType);
    procedure SetRightEdge(Value: Integer);
    procedure SetRightEdgeColor(Value: TColor);
    procedure SetScrollBars(const Value: TScrollStyle);
    procedure SetSearchEngine(Value: TSynEditSearchCustom);
    procedure SetSelectionMode(const Value: TSynSelectionMode);
    procedure SetSelText(const Value: string);
--> procedure SetSelTextExternal(const Value: string); <----------------------------------
    procedure SetTabWidth(Value: integer);
Die Sachen in Privat sind doch für die abegleiteten sichtbar, oder?

Delphi-Quellcode:
//abgeleitete Klasse.
TSynTerm = class(TCustomSynEdit)
  private
    fDriver : TUSBPortDriver;
    [...]
    procedure SetBaudRate(const Value: TBaudRate);
    procedure SetCkLineStatus(const Value: boolean);
    [...]
    procedure SetWriteTimeout(const Value: Word);
  private
    procedure WMPaste(var Message: TMessage); message WM_PASTE;
  protected
--> procedure SetSelTextExternal(const Value: string); override;   <--------------------------
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
Bitte helft mir. Habe keine Ahnung, wo der Fehler sein könnte.


Ciao Frederic

jim_raynor 11. Dez 2004 18:52

Re: Method not found in base class
 
private ist nur die eigene Klasse und die gleiche Unit sichtbar. protected ist in abgeleiteten Klassen sichtbar. Zudem kannst du die Methode nicht überschreiben, da sie nicht als virtual deklariert ist.

Aber wenn du das Programm so runtergeladen hast, dann muss irgendwas faul sein. So funktioniert das definitiv nicht. Es könnte höchstens sein, dass der das progamm erstellt hat, die SynEdit.pas geändert hat oder auf eine andere Version aufbaut.

fkerber 11. Dez 2004 19:57

Re: Method not found in base class
 
Hi!

Danke für deine Erklärung.
Es hat funktioniert.
Keine Ahnung, wie der Typ das hinbekommen hat.

Ciao Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57 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