AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Probleme mit Override bei Komponentenentwicklung
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Override bei Komponentenentwicklung

Ein Thema von runningsoft · begonnen am 27. Mär 2010 · letzter Beitrag vom 27. Mär 2010
Antwort Antwort
Benutzerbild von runningsoft
runningsoft

Registriert seit: 8. Okt 2004
Ort: Bernau
108 Beiträge
 
Delphi 10.4 Sydney
 
#1

Probleme mit Override bei Komponentenentwicklung

  Alt 27. Mär 2010, 15:43
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:
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.
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".
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.
Steffen
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#2

Re: Probleme bei Komponentenentwicklung

  Alt 27. Mär 2010, 15:50
Du hast dir ein eigenen Parameter dazu geschrieben in DrawCell . Du musst die Parameter einhalten um die Methode zu überschreiben
Lars
  Mit Zitat antworten Zitat
Benutzerbild von runningsoft
runningsoft

Registriert seit: 8. Okt 2004
Ort: Bernau
108 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Probleme bei Komponentenentwicklung

  Alt 27. Mär 2010, 16:13
Vielen Dank, genau das war das Problem.

Steffen
Steffen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Probleme bei Komponentenentwicklung

  Alt 27. Mär 2010, 16:54
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 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