![]() |
Probleme mit Override bei Komponentenentwicklung
Hallo,
ich versuche mich gerade das erste Mal daran, eine eigene Komponente zu entwickeln. Und zwar möchte ich TStringGrid so weiterentwickeln, dass ich für den Text in den Zellen solche Eigenschaften wie TextAlignment oder Abstand des Textes innerhalb der Zelle (hab ich HorzCellMargin genannt) angeben kann. Ich habe bis jetzt folgenden Quelltext:
Delphi-Quellcode:
Die DrawCell-Prozedur aus TStringGrid möchte ich also mit einer eigenen Methode überschreiben, deshalb habe ich die Prozedur mit "override;" deklariert. Und genau hier liegt das Problem. Beim Compilieren bekomme ich die Fehlermeldung "Deklaration von 'DrawCell' unterscheidet sich von vorheriger Deklaration".
unit SDStringGrid;
interface uses SysUtils, Classes, Controls, Grids, types, Dialogs; type TSDGridDrawState = set of (gdSelected, gdFocused, gdFixed, gdRowSelected, gdHotTrack, gdPressed); TSDStringGrid = class(TStringGrid) private { Private-Deklarationen } FHorzCellMargin : integer; procedure SetHorzCellMargin(Value: integer); protected { Protected-Deklarationen } procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TSDGridDrawState); override; public { Public-Deklarationen } published { Published-Deklarationen } property HorzCellMargin : integer read FHorzCellMargin Write SetHorzCellMargin default 2; end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TSDStringGrid]); end; procedure TSDStringGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TSDGridDrawState); begin if DefaultDrawing then Canvas.TextRect(ARect, ARect.Left+HorzCellMargin, ARect.Top+2, Cells[ACol, ARow]); //inherited DrawCell(ACol, ARow, ARect, AState); end; procedure TSDStringGrid.SetHorzCellMargin(Value: Integer); begin if FHorzCellMargin <> Value then begin if Value < 2 then Value := 2; FHorzCellMargin := Value; end; end; end. Lasse ich override weg, kann ich die Komponente zwar kompilieren, aber natürlich wird dann DrawCell des TStringGrids nicht mit meiner eigenen Methode überschrieben. Wer kann helfen? Ich finde einfach den Syntaxfehler nicht. Danke Steffen Edit: Hab den Titel des Threads korrigiert. |
Re: Probleme bei Komponentenentwicklung
Du hast dir ein eigenen Parameter dazu geschrieben in DrawCell . Du musst die Parameter einhalten um die Methode zu überschreiben
|
Re: Probleme bei Komponentenentwicklung
Vielen Dank, genau das war das Problem.
Steffen |
Re: Probleme bei Komponentenentwicklung
Kannst du dem ganzen bitte noch einen Aussagekräftigen Titel geben? Das es um ein Problem handelt sagt bereits der gewählte Forum aus und somit ist das einzig verwertbare im Titel derzeit "Komponentenentwicklung". Aber das kann alles mögliche umfassen.
Ein aussagekräftiger Titel hat zum den Vorteil das später jemand mit dem gleichen Problem, über die Suche entsprechend diesen Beitrag finden kann und somit auch entsprechend schnell zu seiner Lösung kommt. :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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 by Thomas Breitkreuz