Delphi-PRAXiS

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/)
-   -   vordefinierte Eigenschafte in eigener Komponente ändern (https://www.delphipraxis.net/136603-vordefinierte-eigenschafte-eigener-komponente-aendern.html)

SimStar001 3. Jul 2009 15:35


vordefinierte Eigenschafte in eigener Komponente ändern
 
Hallo, ich arbeite gerade das Tutorial zu Componentenerstellung durch.

Nun stellt sich die Frage, wie ich z.b. die Standard Höhe eines Buttons verändern kann?

Meine Komponente ist vom Type TButton abgeleitet und nun wollte ich die Standarthöhe wenn man Ihn auf die Form zieht verändern. Wo muss ich dies machen?


Vielen Dank!

Andreas L. 3. Jul 2009 15:39

Re: Frage zu eigener komponente
 
Zitat:

Zitat von SimStar001
Hallo, ich arbeite gerade das Tutorial zu Componentenerstellung durch.

Nun stellt sich die Frage, wie ich z.b. die Standard Höhe eines Buttons verändern kann?

Meine Komponente ist vom Type TButton abgeleitet und nun wollte ich die Standarthöhe wenn man Ihn auf die Form zieht verändern. Wo muss ich dies machen?


Vielen Dank!

Im constructor einfach die Höhe setzen:

Delphi-Quellcode:
constructor TMyButton.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Height := 40;
end;

SimStar001 3. Jul 2009 15:43

Re: Frage zu eigener komponente
 
das hatte ich gerade probiert, klapp aber itrgendwie net?

Das hier geht leider so nicht:
Delphi-Quellcode:
unit HandoffButton;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, Buttons;

type
  THandoffButton = class(TBitBtn)
  private
    { Private-Deklarationen }
    FActive : Boolean;
    FFrequenz : string;
  protected
    { Protected-Deklarationen }
  public
    property Active : boolean read FActive write FActive;
    property Frequenz : string read FFrequenz write Ffrequenz;
    constructor create(AComponent : TComponent); override;
    { Public-Deklarationen }
  published
    { Published-Deklarationen }
   
  end;

procedure Register;

implementation


procedure Register;
begin
  RegisterComponents('Zusätzlich', [THandoffButton]);
end;


constructor THandoffButton.create;
begin

  inherited create(Acomponent);
  Height := 41;
end;

end.

Draos 3. Jul 2009 16:00

Re: vordefinierte Eigenschafte in eigener Komponente ändern
 
vllt statt:
Delphi-Quellcode:
constructor THandoffButton.create;
begin

  inherited create(Acomponent);
  Height := 41;
end;
mal diesen constructor bearbeiten
Delphi-Quellcode:
constructor THandoffButton.create(AComponent:TComponent);
begin

  inherited create(Acomponent);
  Height := 41;
end;

SimStar001 3. Jul 2009 16:03

Re: vordefinierte Eigenschafte in eigener Komponente ändern
 
Zitat:

Zitat von Draos
vllt statt:
Delphi-Quellcode:
constructor THandoffButton.create;
begin

  inherited create(Acomponent);
  Height := 41;
end;
mal diesen constructor bearbeiten
Delphi-Quellcode:
constructor THandoffButton.create(AComponent:TComponent);
begin

  inherited create(Acomponent);
  Height := 41;
end;


das sind doch beides dieselben constructoren, man muss im implementationteil nicht nochmal die parameter angeben.

Aber troetzdem Danke für den Tip

Teekeks 3. Jul 2009 16:42

Re: vordefinierte Eigenschafte in eigener Komponente ändern
 
Soweit ich weiß muss man das schon Tun. es existiert ja ein unterschied:
Wenn du z.b. das hier gegeben haben hast:
Delphi-Quellcode:
procedure ix;
procedure ix(a:integer);
Woher sollte er dann wissen welche der beiden du mit
Delphi-Quellcode:
procedure ix;
begin
  irgentwas;
end;
gemeint hattest?

Muetze1 3. Jul 2009 16:45

Re: vordefinierte Eigenschafte in eigener Komponente ändern
 
Zitat:

Zitat von Teekeks
Soweit ich weiß muss man das schon Tun.

Damit die Diskussion hier mal aufhört und das Problem weiter gesucht wird: Nein, er muss es in diesem Falle nicht. Bei überladenen Funktionen muss dies entsprechend gemacht werden, bei allen anderen nicht. Überladungen wurden später (afaik D5) eingeführt, das nicht angeben der Signatur in der Implementation stammt hingegen schon aus den ganz alten Delphi Tagen (D1) - vielleicht sogar schon Turbo Pascal (damals nie so gesehen/probiert/gemacht).

QuickAndDirty 3. Jul 2009 16:48

Re: vordefinierte Eigenschafte in eigener Komponente ändern
 
Ich würds machen.

Muetze1 3. Jul 2009 16:50

Re: vordefinierte Eigenschafte in eigener Komponente ändern
 
Zitat:

Zitat von QuickAndDirty
Ich würds machen.

Ja, ich auch. Ich mache es nur so - aber das ist nicht Thema der Sache. Ist nun bald Schluß? Die Frage und das Problem ist ein anderes also bitte Beiträge dazu!

himitsu 3. Jul 2009 17:14

Re: vordefinierte Eigenschafte in eigener Komponente ändern
 
eigentlich müßte es so funktionieren, denn der "original"-TButton bzw. TCustomButton setzt die Größe genau an gleicher Stelle
Delphi-Quellcode:
constructor TCustomButton.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := [csSetCaption, csDoubleClicks];
  Width := 75;
  Height := 25;
und wenn man dann in seinem Constructor nach Inherited Create einen anderen Wert setzt, dann wird dieser übernommen.

PS: das Gerede bezüglich THandoffButton.create(AComponent:TComponent); ... dort kann man im Implementation-Teil die Funktions-Signatur (also die Parameter weglassen) und Delphi nimmt die Definition aus der Forward-Definition in der Klasse.
Aber wenn die Funktion überladen wurde, muß man es angeben, da Delphi sonst nicht weiß welche Version es nun darstellen soll.



[add]
laß mal das override; weg.

möcht mal wissen, wie ich grad darauf kam :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:34 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