![]() |
Eigene Klasse: Panel mit Edit drauf
Hallo!
Ich versuche mich gerade an eigenen Klassen, komme aber nicht so recht weiter. Ich möchte ein Panel mit einem Edit drauf erzeugen. Dazu habe ich eine eigene Unit angefangen, TDatPanel. In dem Tutorial ![]() Weiß jemand ein paar hilfreiche Links zu dem Thema? Gruß und Dank glunzl |
Re: Eigene Klasse: Panel mit Edit drauf
Links? Nein.
Delphi-Quellcode:
aber dieses Schnipsel sollte dir helfen.
type
TDatPanel = class(TPanel) private fEdit: TEdit; public constructor Create; override; end; implementation procedure TDatPanel.Create; begin inherited; fEdit := TEdit.Create(self); fEdit.Parent := self; //zuweisung des parent extrem wichtig! fEdit.Align := alTop; //damit erspar ich mit die ganze left,top,width,height tipperei... is ja nur ein beispiel end; |
Re: Eigene Klasse: Panel mit Edit drauf
Wunderbar, Danke!
glunzl |
Re: Eigene Klasse: Panel mit Edit drauf
Ich nochmal ...
Ich habe das ganze versuchweise mal in einer Unit zusammengeschrieben, aber bekomme immer Fehlermeldungen. Die habe ich als Kommentar in den Quelltext geschrieben.
Delphi-Quellcode:
Asterix lief zwar gerade, aber ich bin mit meinem Latein mal wieder am Ende ...
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; type TDatPanel = class(TPanel) private fEdit: TEdit; public constructor Create; override; // Deklaration von 'Create' unterscheidet sich von vorheriger Deklaration // Ungenügende Forward- oder External-Deklaration: 'TDatPanel.Create' end; var Form1: TForm1; implementation {$R *.dfm} procedure TDatPanel.Create; // Deklaration von 'Create' unterscheidet sich von vorheriger Deklaration begin inherited; // Diese Form des Methodenaufrufs ist nur in Methoden von abgeleiteten Typen erlaubt fEdit := TEdit.Create(self); // Undefinierter Bezeichner: 'fEdit' fEdit.Parent := self; // Operator oder Semikolon fehlt fEdit.Align := alTop; // Operator oder Semikolon fehlt end; procedure TForm1.Button1Click(Sender: TObject); var MyPanel : TDatPanel ; begin MyPanel := TDatPanel.Create ; MyPanel.Parent := Form1 ; end; end. Gruß glunzl |
Re: Eigene Klasse: Panel mit Edit drauf
Muß .Create (AOwner: TComponent); heißen.
|
Re: Eigene Klasse: Panel mit Edit drauf
Hallo!
Wo muß es so heißen? Im OnClick Event des Buttons?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var MyPanel : TDatPanel ; begin MyPanel := TDatPanel.Create(Form1) ; // Hier geändert, brachte keine Änderung der Fehlermeldungen MyPanel.Parent := Form1 ; end; |
Re: Eigene Klasse: Panel mit Edit drauf
In der definition der Klasse, den der Konstruktor einer Komponentenklasse hat diese Signatur.
|
Re: Eigene Klasse: Panel mit Edit drauf
Axo. Jetzt ist schonmal ein Fehler weg ...
Delphi-Quellcode:
type
TDatPanel = class(TPanel) private fEdit: TEdit; public constructor Create(AOwner: TComponent); override; // hier geändert, kein Fehler mehr. end;
Delphi-Quellcode:
procedure TDatPanel.Create(AOwner: TComponent); // hier noch Fehler "Deklaration von 'Create' unterscheidet sich von
// vorheriger Deklaration". Sowohl mit und ohne (AOwner: TComponent) begin inherited; // Hier auch noch Fehler fEdit := TEdit.Create(self); // fEdit.Parent := self; //zuweisung des parent extrem wichtig! fEdit.Align := alTop; //damit erspar ich mit die ganze left,top,width,height tipperei... is ja nur ein beispiel end; |
Re: Eigene Klasse: Panel mit Edit drauf
Hast du die Definition im Interface auch angepasst?
|
Re: Eigene Klasse: Panel mit Edit drauf
Der obere Code ist aus dem Interface, der unter aus dem Implementation Abschnitt.
Hier nochmal ganz:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; type TDatPanel = class(TPanel) private fEdit: TEdit; public constructor Create(AOwner: TComponent); override; end; var Form1: TForm1; implementation {$R *.dfm} procedure TDatPanel.Create(AOwner: TComponent); // hier noch Fehler "Deklaration von 'Create' unterscheidet sich von // vorheriger Deklaration". Sowohl mit und ohne (AOwner: TComponent) begin inherited; // Hier auch noch Fehler fEdit := TEdit.Create(self); // fEdit.Parent := self; //zuweisung des parent extrem wichtig! fEdit.Align := alTop; //damit erspar ich mit die ganze left,top,width,height tipperei... is ja nur ein beispiel end; procedure TForm1.Button1Click(Sender: TObject); var MyPanel : TDatPanel ; begin MyPanel := TDatPanel.Create(TForm1) ; MyPanel.Parent := Form1 ; end; end. |
Re: Eigene Klasse: Panel mit Edit drauf
Zitat:
|
Re: Eigene Klasse: Panel mit Edit drauf
It works :-)
Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 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-2025 by Thomas Breitkreuz