![]() |
Eigene Classen
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:
Was mache ich da falsch?
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. Grüße Heike |
Re: Eigene Classen
Fehlermeldung wäre nicht schlecht ;)
Aber du musst auch deiner TEingabe-Klasse Konstruktor verwenden (bla := TEingabe.Create(...)). |
Re: Eigene Classen
Hallo Heike!
Zitat:
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? |
Re: Eigene Classen
Zitat:
Ich möchte alles selber machen, ohne VCL. Aber was ist instanziieren? Gruß Heike |
Re: Eigene Classen
Zitat:
Delphi-Quellcode:
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.
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; 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...) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 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