Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Wert innerhalb Komponente übergeben (https://www.delphipraxis.net/188812-wert-innerhalb-komponente-uebergeben.html)

Sam Spade 8. Apr 2016 18:01

Wert innerhalb Komponente übergeben
 
Hoi zusammen,
ich möchte eine Komponente erstellen, soweit so gut.
Delphi-Quellcode:
type
  // Display
  TDisplay = class(TEdit)
  protected
    procedure KeyPress( var Key:Char); override;
  end;
  TSimpleSlide = class(TPanel)
  private   { Private-Deklarationen }
    //
    fDisplay  : TDisplay;
    //
   end;

//
procedure TDisplay.KeyPress( var Key:Char );
var i :integer; s :string; d :double;
begin
  if key=#13 then
  begin
    s := text;
    val(s,d,i);
    // wie bekomme ich den wert von "text" bzw d
    // nach TSimpleSlide..?
  end;
  inherited KeyPress(Key);
end;
nun möchte ich das Ergebnis (d:double) aus Keypressed der Klasse TSimpleSlide übergeben, damit ich damit weiterarbeiten kann.
Wie geht das?
Sam

DeddyH 8. Apr 2016 18:33

AW: Wert innerhalb Komponente übergeben
 
Wie wäre es mit einem Event?

[edit] Beispiel:
Delphi-Quellcode:
type
  TOnWuppdiChanged = procedure(Sender: TObject; Value: double) of object;

  TChild = class
  private
    FOnWuppdiChanged: TOnWuppdiChanged;
  public
    procedure Test;
    property OnWuppdiChanged: TOnWuppdiChanged read FOnWuppdiChanged
      write FOnWuppdiChanged;
  end;

  TParent = class
  private
    FChild: TChild;
    procedure DoOnWuppdiChanged(Sender: TObject; Value: double);
  public
    constructor Create;
    destructor Destroy; override;  
  end;

...

{ TParent }

constructor TParent.Create;
begin
  FChild := TChild.Create;
  FChild.OnWuppdiChanged := DoOnWuppdiChanged;
end;

destructor TParent.Destroy;
begin
  FChild.Free;
  inherited;
end;

procedure TParent.DoOnWuppdiChanged(Sender: TObject; Value: double);
begin
  ShowMessage(Format('Wert von Wuppdi: %f', [Value]));
end;

{ TChild }

procedure TChild.Test;
begin
  //Das hier gehört dann dorthin, wo der Wert tatsächlich weitergegeben werden soll
  if Assigned(FOnWuppdiChanged) then
    FOnWuppdiChanged(self, 3.1415);
end;
[/edit]

Sam Spade 9. Apr 2016 07:07

AW: Wert innerhalb Komponente übergeben
 
Klasse - Es funktioniert!

Vielen Dank DeddyH.

Die Mechanik die dahinter steckt muss ich erst noch verstehen!
Sam


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