AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Event Zuweisung und Modifikation in eigenen Komponenten
Thema durchsuchen
Ansicht
Themen-Optionen

Event Zuweisung und Modifikation in eigenen Komponenten

Ein Thema von Coder1990 · begonnen am 22. Jul 2008 · letzter Beitrag vom 23. Jul 2008
Antwort Antwort
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#1

Re: Event Zuweisung und Modifikation in eigenen Komponenten

  Alt 23. Jul 2008, 01:01
Zitat von Coder1990:
1. Alle drei Procedures in der Protected section werden mit "Deklaration unterscheidet sich von vorheriger Deklaration" bemängelt. Was ist hier falsch?
Das steht doch in der Fehlermeldung. Die Deklarationen sind unterschiedlich.

zu 2: ich habe hier leider gerade keinen Rechner mit Mausrad und kann das leider nicht testen.

Zitat von Coder1990:
3. Verständnisfrage: ...
Wenn ich jetzt noch zusätzlich in der Form drin eine Eventhandler procedure deklariere, wie sieht dann der Abarbeitungsblock aus?
Das kommt darauf an, wo du deinen Eventhandler aufrufst.

So und jetzt nochmal zum 1. Punkt:

Das ist gar nicht so leicht zu beantworten, weil ich keine Gedanken lesen kann.

Wenn die überschriebenen Methoden wirklich so sein sollen wie du sie in deinem ersten Post deklariert hat, dann musst du sie hart überschreiben.
Delphi-Quellcode:
  TMp3Grid = class(TStringGrid)
  private
    FBeforeEdit:string;
  protected
    procedure DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); reintroduce;
    procedure SetEditText(Sender: TObject; ACol, ARow: Integer;const Value: string); reintroduce;
    procedure SelectCell(Sender: TObject; ACol, ARow: Integer;var CanSelect: Boolean); reintroduce;
und in den Methoden kannst du dann immer noch ein inherited verwenden, aber eben nur mit den Parametern der übergeordneten Methode...
Delphi-Quellcode:
procedure TMp3Grid.DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
  inherited DragOver(Source, X, Y, State, Accept);

end;

procedure TMp3Grid.SelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
  if inherited SelectCell(ACol, ARow) then
  begin

  end;
end;

procedure TMp3Grid.SetEditText(Sender: TObject; ACol, ARow: Integer;
  const Value: string);
begin
  inherited SetEditText(ACol, ARow, Value);

end;
Oder aber du willst die Methoden nur überschreiben und ihren Aufbau unverändert lassen, dann musst du sie mit override überschreiben. Aber auch gefälligst den gleichen Aufbau beibehalten.
Delphi-Quellcode:
  TMp3Grid = class(TStringGrid)
  private
    FBeforeEdit:string;
  protected
    procedure DragOver(Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); override;
    procedure SetEditText(ACol, ARow: Integer;const Value: string); override;
    function SelectCell(ACol, ARow: Longint): Boolean; override;
und in den Methoden kannst du dann einfach inherited verwenden, um die übergeordneten Methode aufzurufen...
Delphi-Quellcode:
procedure TMp3Grid.DragOver(Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  inherited;

end;

function TMp3Grid.SelectCell(ACol, ARow: Integer): Boolean;
begin
  Result:=inherited SelectCell(ACol, ARow);
end;

procedure TMp3Grid.SetEditText(ACol, ARow: Integer; const Value: string);
begin
  inherited;
end;
Und noch ein paar Gedanken...
Um in einem Projekt eine Komponente mehrfach einzusetzen ist es nicht unbedingt nötig eine eigene, abgeleitete Klasse zu erstellen. Dies würde auch problemlos über einen Frame gehen. Dort die Komponente drauf und schon sind alle Methoden in eine eigene Unit ausgelagert und man kann visuell seine speziellen Erweiterungen einmal schreiben und kann diese in seinem Projekt auch mehrfach einsetzen. Dann gibt es auch keine Probleme mit neukompilieren, installieren und in anderen Delphi-Varianten, die keine eigenen Komponenten in die IDE integrieren können.
  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 12:24 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