AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Eigene Classen

Ein Thema von smart · begonnen am 21. Okt 2006 · letzter Beitrag vom 21. Okt 2006
Antwort Antwort
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#1

Eigene Classen

  Alt 21. Okt 2006, 15:59
Hallo Alle!

Ich bin einwenig mit eigenen Classe am spielen. Ich möchte das lernen. Jetzt habe ich auf einer Form ein TEdit und ein TButton. Wenn ich auf dem Button klicke, soll der Text im TEdit erscheinen. Hier der Code. Das man das ganze einfacher machen kann, ist mit bekannt. Das soll nur eine Übung sein. Der Code klappt nicht.
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

Type
    TEingabe = Class(TEdit)
    private
    Ein: String;
    Public
    procedure Eingeben(Ein: String);
end;

procedure TEingabe.Eingeben(Ein: String);
begin
Text := Ein;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TEingabe.Eingeben(Button1.Caption);
end;

end.
Was mache ich da falsch?

Grüße
Heike
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Eigene Classen

  Alt 21. Okt 2006, 16:06
Fehlermeldung wäre nicht schlecht
Aber du musst auch deiner TEingabe-Klasse Konstruktor verwenden (bla := TEingabe.Create(...)).
Julian J. Pracht
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: Eigene Classen

  Alt 21. Okt 2006, 16:11
Hallo Heike!

Zitat von smart:
Jetzt habe ich auf einer Form ein TEdit und ein TButton. Wenn ich auf dem Button klicke, soll der Text im TEdit erscheinen. Hier der Code. Das man das ganze einfacher machen kann, ist mit bekannt. Das soll nur eine Übung sein. Der Code klappt nicht.
Du hast auf der Form ein Edit und hast eine Klasse (TEingabe) von TEdit abgeleitet. In welchem Edit soll den nun der Text erscheinen? In dem TEdit auf der Form oder in TEingabe (welches bisher noch nirgendwo angezeigt wird)?

Du hast erfolgreich eine Klasse abgeleitet. Diese musst du nun auch noch instanziieren. Bei der Form wird dies automatisch von der VCL in der Projektdatei erledigt, bei deinem eigenem müsstest du dies selber machen. Andere Möglichkeit für dich wäre es dein neues TEingabe-Edit-Feld als Komponente zu installieren, dann könntest du dein TEingabe von oben aus der Palette auf die Form ziehen und dann würde das mit erstellt werden, wenn die Form erstellt wird.

Welchen Weg willst du gehen?
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Eigene Classen

  Alt 21. Okt 2006, 16:17
Zitat von Muetze1:
Du hast erfolgreich eine Klasse abgeleitet. Diese musst du nun auch noch instanziieren. Bei der Form wird dies automatisch von der VCL in der Projektdatei erledigt, bei deinem eigenem müsstest du dies selber machen. Andere Möglichkeit für dich wäre es dein neues TEingabe-Edit-Feld als Komponente zu installieren, dann könntest du dein TEingabe von oben aus der Palette auf die Form ziehen und dann würde das mit erstellt werden, wenn die Form erstellt wird.
Hi Thomas.

Ich möchte alles selber machen, ohne VCL. Aber was ist instanziieren?

Gruß
Heike
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Eigene Classen

  Alt 21. Okt 2006, 16:32
Zitat von smart:
Aber was ist instanziieren?
Eine Instanz einer Klasse anlegen. Dies geschieht im Normalfall durch Aufruf des Constructors, welcher dir eine neue Instanz zurück liefert. Bei deinem Beispiel wäre dies so:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var
  lEingabe: TEingabe; // diese Variable hält dann die Instanz. So wie Edit1 dies für die Instanz von TEdit macht.
begin
  lEingabe := TEingabe.Create(Self);
  lEingabe.Parent := Self;
  lEingabe.Top := 20; // auf der Form positioniere
  lEingabe.Left := 20;

  lEingabe.Eingeben(Button1.Caption);
end;
Durch den Code sollte dein neues TEingabe auf der Form erscheinen (die Instanz). Wenn du den Button1 öfters klickst, erstellt er jedesmal eine Instanz. Nachher liegen halt so viele Instanzen übereinander auf der Position wie du geklickt hast.

Deine Klasse legt ja im allgemeinen alles nötige über Aussehen, Verhalten und Eigenschaften fest. Und die Instanzen sind dann die einzelnen Elemente an sich mit ihren eigenen Eigenschaftswerten, Einstellungen, etc.

Blödes Beispiel, aber ich habe hier gerade soviele rumliegen: Die Klasse TÜberaschungsEi würde die Ü-Eier allgemein beschreiben (rund, Alupapier drumerhum, Schokolade und im inneren ein Plastikei). So, die einzelnen Eier die auf der Stiege im Supermarkt stehen sind Instanzen von TÜberaschunsEi. Jedes Ei hat aber einen unterschiedlichen Inhalt, bei manchen ist mehr oder weniger Schokolade, etc. (ok, der Vergleich ist mies, aber vllt. hilft es...)
  Mit Zitat antworten Zitat
Antwort Antwort

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 07:06 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