AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Methoden im constructor

Ein Thema von raptascha · begonnen am 28. Dez 2003 · letzter Beitrag vom 30. Dez 2003
Antwort Antwort
raptascha

Registriert seit: 28. Dez 2003
1 Beiträge
 
#1

Methoden im constructor

  Alt 28. Dez 2003, 12:23
Hallo!

Also ich habe folgendes Problem:
Ich habe in einer Klasse(geerbt von TImage) einen constructor erstellt. In ihm will ich jetzt das OnClick-Ereignis mit meiner procedure anzeigeText gleichsetzten.
Ih will also , dass immer wenn auf mein Objekt geklickt wird, die procedure anzeigeText ausgeführt wird.
Ich hab keine Plan und suche schon seid Stunden, allerdings ist die Delphi hilfe nicht sonderlich brauchbar.

Hier der Quelltext der Klasse:

Delphi-Quellcode:

unit uTGegenstaende;

interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ExtCtrls, StdCtrls, uTPerson;
type TGegenstand=class(TImage)
   constructor create(Owner: TWinControl; aktName: String; aktxPos,aktyPos:Integer);
   public
  Name: String;
  Bild: TPicture;
  xPos, yPos: Integer;
  Hilfsvar:TGegenstand;
  //procedure anzeigeText; override;
end;

implementation
 constructor TGegenstand.create(Owner: TWinControl; aktName: String; aktxPos,aktyPos:Integer);
  begin
  inherited create(Owner); //ruft TImage auf
  parent:=Owner;
  top:=aktyPos;
  left:=aktxPos;
  Bild:=Picture.Create;
  Bild.LoadFromFile(aktName);
  Picture:=Bild;
  Transparent:=true;
  AutoSize:= True;
  //Hilfsvar.create;
  OnMouseMove:=anzeigeText;

  end;


{
procedure TGegenstand.OnMouseMove;
begin

anzeigeText;
end;


procedure TGegenstand.anzeigeText(Sender:TObject);
begin
inherited anzeigeText;
begin
  //Owner.lblKuecheText.caption:='Ein Glas mit schwebenden Augen';
end;
end;
}


end.


ICH HOFFE, IHR KÖNNT MIR HELFEN!!!
DANKE
GRuß,Natascha
Auch der längste Weg beginnt mit einem Schritt!
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#2

Re: Methoden im constructor

  Alt 29. Dez 2003, 14:59
Bist du in der richtigen Sparte?

Ich hab jetzt schon länger kein Object Pascal programmiert, aber ich würde es so machen:

Delphi-Quellcode:
type
  TGegenstand = class(TImage)
  private
    FAnzeigeText: TNotifyEvent;
  protected
    property anzeigeText: TNotifyEvent read FAnzeigeText write FAnzeigeText;
  { ... }
end;

constructor TGegenstand.Create(Owner: TWinControl; aktName: String; aktxPos, aktyPos: Integer);
begin
  { ... }
  OnMouseMove := FAnzeigeText;
end;

{ ... }

procedure TGegenstand.anzeigeText(Sender: TObject);
begin
  inherited OnMouseMove;
  (Owner as TForm1).blKuecheText.caption:='Ein Glas mit schwebenden Augen';
end;
Der Zugriff auf das Formulat ist aber in meinen Augen alles andere als Objwektorientiert und ziemlich ekelig -- ich würde dir raten, es anders zu machen. Übrigens solltest du dir überlegen, welche Eigenschaften du von TImage schon erbst (Name zum Beispiel) und in der Delphi-Hilfe unter "property" nachlesen.
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Nightshade

Registriert seit: 7. Jan 2003
Ort: Menden
192 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Methoden im constructor

  Alt 29. Dez 2003, 15:14
Das könnte dir auch weiterhelfen :

[df]http://www.delphipraxis.net/internal_redirect.php?t=1698&highlight=sch%F6ne+bu ttons+mouseover[/df]
Christian
Killing for peace is like fucking for virginity

Nightshade
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Methoden im constructor

  Alt 30. Dez 2003, 08:42
Hai raptascha,

ersteinmal: Herzlich Willkommen in der Delphi-PRAXIS.

Ich verschiebe diesen Beitrag mal nach Object-Pascal.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
fenni

Registriert seit: 21. Nov 2003
Ort: 57648 Unnau
13 Beiträge
 
Delphi 6 Personal
 
#5

Re: Methoden im constructor

  Alt 30. Dez 2003, 10:28
Hallo raptascha,

die Delphi-Hilfe sagt, dass du eine Prozedur vom Typ TNotifyEvent brauchst. Solche Prozeduren haben immer nur einen sichtbaren Parameter (Sender vom Typ TObject). Du musst also direkt nach der Klassendeklaration die Prozedur anzeigeText deklarieren, die einem TNotifyEvent entsprechen muss:

Delphi-Quellcode:
type TGegenstand=class(TImage)
    procedure anzeigeText(Sender: TObject);
  private
    ...
  public
    constructor create(Owner: TWinControl; aktName: String; aktxPos,aktyPos:Integer);
  end;

  ...

constructor TGegenstand.Create;
begin
  ...
  OnClick := anzeigeText;
end:
Im Übrigen brauchst du in anzeigeText kein inherited anzeigeText aufrufen, da es keine übegeordnete Methode anzeigeText gibt.

Und der Befehl

Owner.lblKuecheText.caption:='Ein Glas mit schwebenden Augen'; wird dir wahrscheinlich auch nichts bringen, da du Owner ja nur als Parameter im Constructor hattest.

Ich hoffe, das hat dir ein bisschen geholfen!

MfG
fenni
  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 21:31 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