Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Eigene Klasse: Panel mit Edit drauf (https://www.delphipraxis.net/75007-eigene-klasse-panel-mit-edit-drauf.html)

glunzl 12. Aug 2006 13:26


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 Komponente TSwitch wird schön erklärt, wie man ein Panel als Switch "umbaut". Hier wird die Panelfäche "niedergedrückt" gehalten. Leider wird nicht gezeigt, wie man eine andere Komponente auf das Panel einbindet udndarauf zugreift.

Weiß jemand ein paar hilfreiche Links zu dem Thema?

Gruß und Dank
glunzl

DGL-luke 12. Aug 2006 15:47

Re: Eigene Klasse: Panel mit Edit drauf
 
Links? Nein.

Delphi-Quellcode:
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;
aber dieses Schnipsel sollte dir helfen.

glunzl 12. Aug 2006 16:19

Re: Eigene Klasse: Panel mit Edit drauf
 
Wunderbar, Danke!

glunzl

glunzl 12. Aug 2006 22:34

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:
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.
Asterix lief zwar gerade, aber ich bin mit meinem Latein mal wieder am Ende ...

Gruß
glunzl

mkinzler 12. Aug 2006 22:38

Re: Eigene Klasse: Panel mit Edit drauf
 
Muß .Create (AOwner: TComponent); heißen.

glunzl 12. Aug 2006 22:47

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;

mkinzler 12. Aug 2006 22:55

Re: Eigene Klasse: Panel mit Edit drauf
 
In der definition der Klasse, den der Konstruktor einer Komponentenklasse hat diese Signatur.

glunzl 12. Aug 2006 23:06

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;

mkinzler 12. Aug 2006 23:12

Re: Eigene Klasse: Panel mit Edit drauf
 
Hast du die Definition im Interface auch angepasst?

glunzl 12. Aug 2006 23:17

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 Uhr.
Seite 1 von 2  1 2      

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