AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Proceduren von untergeordneten Objekten

Ein Thema von Ginko · begonnen am 24. Okt 2009 · letzter Beitrag vom 24. Okt 2009
Antwort Antwort
Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#1

Proceduren von untergeordneten Objekten

  Alt 24. Okt 2009, 11:46
Hallo ich versuche gerade von einem Objekt, welches ein Stringgrid Objekt beinhaltet, welches wiederum ein TEdit Objekt beinhaltet auf das OnChange Ereignis des Objektes mit dem Editfeld zuzugreifen, also das innerste Objekt.
Kann ich im obersten Objekt die "procedure Change" des TEdit Objektes neu definieren? Und welche Parameter muss ich dann angeben?
Ich hoffe es ist einigermaßen klar geworden was ich will.

Also quasi so wie das automatisch passiert wenn, auf ein erstelltes Edit feld doppelklickt:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
  privatt
müsste dass dann bei meinem obersten Objekt in etwa so aussehen?:

Delphi-Quellcode:
type
  ToberstesObjekt = class
  public
    ObjektStrGridEdit : TObjekt1;
    procedure Change(Sender: TObjekt1);
  end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Proceduren von untergeordneten Objekten

  Alt 24. Okt 2009, 11:57
Da TObjekt1 ja wohl von TObject abgeleitet ist, müsste das eigentlich so funktionieren. Aber was spricht gegen Ausprobieren?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Proceduren von untergeordneten Objekten

  Alt 24. Okt 2009, 12:27
Ja klappt aber leider nicht

Hier mal die Typ Definitionen:

Delphi-Quellcode:
type
  TObjektMit2Objekten = class
  public
    Objekt1 : TObjekt1;
    constructor Create(ZuBenutzendesFormular : TWinControl);
    destructor Destroy; override;
    procedure Change(Sender: TObject1);
  end;

type
  TObjekt2 = class(TEdit)
  public
    constructor Create(AOwner: TComponent); override;
    procedure Change(); override;
  end;

type
  TObjekt1 = class(TStringGrid)
  public
    Objekt2 : TObjekt2;
    constructor Create(AOwner: TComponent; Anders : byte); reintroduce;
    destructor destroy; override;
    procedure Change(Sender : TObjekt2);
  end;
  Mit Zitat antworten Zitat
Tryer

Registriert seit: 16. Aug 2003
200 Beiträge
 
#4

Re: Proceduren von untergeordneten Objekten

  Alt 24. Okt 2009, 12:35
Klappe kaputt

Du must die Ereignisbehandlungsroutine zuweisen MyStringgrid.MyEdit.OnChange := Change;
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Proceduren von untergeordneten Objekten

  Alt 24. Okt 2009, 13:15
Ich würde dir raten, keine Objekte die zur Benutzeroberfläche gehören zu grösseren Objekten zusammenzubauen.
Das endet regelmässig in der Sackgasse, weil das entstehende Objekt sehr unflexibel wird.

Mal angenommen du hast einen "Geburtstag-Geschenke-Planer".
In einem Edit-Feld gibt man den Namen eines Freundes ein und im Stringgrid darunter werden die potentiellen Geschenke mit Preis aufgelistet.
Man kann die Geschenke editieren und sie nach der "Wunschpriorität" ordnen.

Man könnte jetzt auf die Idee kommen, das TEdit und das Stringgrid zu einer Einheit zusammenzufassen.
Das ist aber wie gesagt unflexibel und schwer zu testen.
Stattdessen sollte man lieber die ganze Logik (Laden und Speichern der Geschenkeliste,...)
in eine TGeschenkePlaner-Klasse bringen und die Schicht zwischen Benutzeroberfläche und dieser Klasse
möglichst dünn machen.
D.h. wenig Code im Formular und möglicht viel Logik in der TGeschenkePlaner-Klasse.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Proceduren von untergeordneten Objekten

  Alt 24. Okt 2009, 13:24
Wenn es um Komponenten geht, kann das noch sinnvoll sein (Composite Controls), aber das ist ja hier nicht gegeben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Proceduren von untergeordneten Objekten

  Alt 24. Okt 2009, 14:11
Ich habe das ganze jetzt mal vereinfacht aber es klappt auch so nicht.
Wo genau muss ich die Ereignisbehandlungsroutine hinzufügen?

Hier der Quelltext:

Delphi-Quellcode:
unit Unit2;

interface

uses
  Classes, SysUtils, Variants, Math, Grids, Forms, Dialogs, Controls,
  StdCtrls, Windows, Messages, Graphics;

type
  TMyObjekt2 = class(TEdit)
  public
    constructor Create(AOwner: TComponent); override;
  end;


type
  TMyOberObjekt = class
  public
    MyEdit : TMyObjekt2;
    constructor Create(ZuBenutzendesFormular : TWinControl);
    destructor Destroy; override;
    procedure Change(Sender: TObject);
  end;


implementation


//MyEdit Methoden
constructor TMyObjekt2.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Parent := AOwner as TWinControl;
  Left := 400;
  Width := 50;
  AutoSize := false;
  Height := 32;
  Font.Size := 16;
  Text := 'MyObjekt2';
end;



//OberObjekt Metoden:
constructor TMyOberObjekt.Create(ZuBenutzendesFormular : TWinControl);
begin
  inherited Create;
  MyEdit := TMyObjekt2.Create(ZuBenutzendesFormular);
  MyEdit.Width := 100;
  MyEdit.OnChange := Change; ////////////////////////////////????
end;

destructor TMyOberObjekt.destroy;
begin
  MyEdit.Free;
  Inherited destroy;
end;

procedure TMyOberObjekt.Change(Sender: TObject);
begin
   ShowMessage('klappt');
end;

end.

EDIT:
Ah hat sich erledigt ich musste die Change Methode von MyObjekt2 rausholen damit hatte ich mir scheinbar alles überschrieben.
So wie es oben steht klappt es jetzt.
Ist das mit der Ereignisbehandlungsroutine dann so richtig ? Danke euch!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Proceduren von untergeordneten Objekten

  Alt 24. Okt 2009, 19:10
Die zuzuweisende Methode muss exakt dieselbe Signatur wie die Property aufweisen. Mir scheint, Du hast da diese Property mit einer protected-Methode namens Change verwechselt (ich kann aber gerade nicht nachsehen).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:33 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