![]() |
AW: Variablenname mehrere Typen
TComponent als gemeinsamer Vorfahre funktioniert, prima. Danke!
Dabei find ich es merkwürdig, dass TControl oder TWinControl beide nicht funktionieren. So aus Neugier, weiß einer warum? Das mit dem Overload probiere ich gleich mal aus, klingt interessant. Zitat:
Ich Probier die Overload Direktive mal aus (nachdem ich herausfinde, wie sie funktioniert), vielleicht ist sie nützlich. |
AW: Variablenname mehrere Typen
Zitat:
|
AW: Variablenname mehrere Typen
Zitat:
Wenn es sich dagegen darum handelt, aus einer Basis-Klasse weitere spezialisierte Klassen abzuleiten (was ich angesichts deines Outings als Amateur eher nicht annehme), muß man das anders lösen, wie oben bereits von anderen Usern aufgezeigt. Nachtrag: Wenn du deine Methoden im Interface-Teil deklarierst, genügt es, dort die Direktive overload anzugeben. In diesem Falle kannst du sie im Implementation-Abschnitt weglassen:
Delphi-Quellcode:
Mit diesen beiden Proceduren kann ich entweder ein TjvRichEdit oder ein TjvDBRichEdit als Parameter angeben. Delphi wählt anhand der übereinstimmenden Parameter die richtige Procedure aus. Stimmen die übergebenen Parameter mit keiner der Overload-Versionen überein, gibt's eine Fehlermeldung beim Compilieren.
Interface
... Procedure SetMargin(Const RE: TjvDBRichEdit; Const L,R,T,B : Integer); overload; Procedure SetMargin(Const RE: TjvRichEdit; Const L,R,T,B : Integer); overload; ... Implementation // ----- Ränder bei DB-RichEdits setzen (DBRichEdit)-------- Procedure SetMargin(Const RE: TjvDBRichEdit; Const L,R,T,B : Integer); Var Rect : TRect; begin Rect := RE.ClientRect; Rect.Left := Rect.Left + L; Rect.Right := Rect.Right - R; Rect.Top := Rect.Top + T; Rect.Bottom := Rect.Bottom - B; SendMessage(RE.Handle,EM_SETRECT,0,LongInt(@Rect)); end; // ----- Ränder bei RichEdits setzen (RichEdit)------------- Procedure SetMargin(Const RE: TjvRichEdit; const L, R, T, B: Integer); Var Rect : TRect; begin Rect := RE.ClientRect; Rect.Left := Rect.Left + L; Rect.Right := Rect.Right - R; Rect.Top := Rect.Top + T; Rect.Bottom := Rect.Bottom - B; SendMessage(RE.Handle,EM_SETRECT,0,LongInt(@Rect)); end; |
AW: Variablenname mehrere Typen
Zitat:
|
AW: Variablenname mehrere Typen
Zitat:
TWinControl kann nicht funktionieren, da es kein gemeinsamer Vorfahre von TLabel und TPanel ist. Ob die Ableitung in Turbo Delphi anderst ist, dass kann ich leider nicht sagen. |
AW: Variablenname mehrere Typen
Zitat:
![]() Ich finde überladene Funktionen besonders für 2 verschiedene Sachen nützlich:
|
AW: Variablenname mehrere Typen
TJvCustomRichEdit :stupid:
Ein Vorfahre für beide Typen, der bestimmt alles Nötige enthält. Im Notfall kann man intern, für noch nicht sichtbare Property, welche in TJvRichEdit nur auf Published gesetzt werden, auch Beides hart nach TJvRichEdit casten, auch wenn es mal ein TJvDBRichEdit ist. (hier muß man halt nur bissl genauher drauf achten) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 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