AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kompenente erweitern - eigene Property immer leer

Ein Thema von bwolf · begonnen am 16. Jun 2010 · letzter Beitrag vom 16. Jun 2010
Antwort Antwort
Seite 1 von 2  1 2      
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#1

Kompenente erweitern - eigene Property immer leer

  Alt 16. Jun 2010, 13:38
Hi Leute,

stehe irgendwie auf dem Schlauch. Ich will eine Komponente erweitern, aber schaffe es nicht mal eine weiter Property hinzuzufügen und in der Laufzeit auszugeben.
Habe den Code mal auf das Minium reduzierz, es muß irgendwas ganz dämliches meinerseits sein
Danke für eure Hilfe!


Delphi-Quellcode:
unit DBRichEditExt;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, ComCtrls, DBCtrls, Graphics, ExtCtrls,
  Dialogs, Forms, Windows;

type
  TDBRichEditExt = class(TDBRichEdit)
  private
    { Private-Deklarationen }
    FCaption : String;
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); override;
  published
    { Published-Deklarationen }
    property Caption: String read FCaption write FCaption;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TDBRichEditExt]);
end;

constructor TDBRichEditExt.Create(AOwner: TComponent);
begin
  inherited;
  showmessage(FCaption); // immer leer?
end;

end.

Geändert von mkinzler (16. Jun 2010 um 13:55 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Kompenente erweitern - eigene Property immer leer

  Alt 16. Jun 2010, 13:41
Hi Leute,

stehe irgendwie auf dem Schlauch. Ich will eine Komponente erweitern, aber schaffe es nicht mal eine weiter Property hinzuzufügen und in der Laufzeit auszugeben.
Habe den Code mal auf das Minium reduzierz, es muß irgendwas ganz dämliches meinerseits sein
Danke für eure Hilfe!

vieleicht sthe ich grad auch auf dem Schlauch
ich sehe nirgeds im Quelltext dass du der Variablen einen Wert zuweist.

Gruss KHH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Kompenente erweitern - eigene Property immer leer

  Alt 16. Jun 2010, 13:42
Wo soll der Inhalt im Contructor denn herkommen?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Kompenente erweitern - eigene Property immer leer

  Alt 16. Jun 2010, 13:51
Hi,
ich dachte das die setter / getter optional sind...zu anfangs hatte ich es so:

Delphi-Quellcode:
unit DBRichEditExt;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, ComCtrls, DBCtrls, Graphics, ExtCtrls,
  Dialogs, Forms, Windows;

type
  TDBRichEditExt = class(TDBRichEdit)
  private
    { Private-Deklarationen }
    FCaption : String;
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); override;
    procedure setCaption(value : string);
    function getCaption() : string;
  published
    { Published-Deklarationen }
    property Caption: String read getCaption write setCaption;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TDBRichEditExt]);
end;

constructor TDBRichEditExt.Create(AOwner: TComponent);
begin
  inherited;
  showmessage(FCaption); // immer leer?
end;

procedure TDBRichEditExt.setCaption(value : string);
begin
  if value <> FCaption then
    FCaption := value;
end;

function TDBRichEditExt.getCaption() : string;
begin
  result := FCaption;
end;

end.

Geändert von SirThornberry (16. Jun 2010 um 14:04 Uhr) Grund: Code-Tags durch Delphi-Tags ersetzt - nächstes mal bitte selbst machen.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: Kompenente erweitern - eigene Property immer leer

  Alt 16. Jun 2010, 13:58
Die Getter und Setter brauchst Du nur wenn dort zusätzlich etwas anders getan werden soll als FCaption zu lesen/schreiben, z.B. auf ein Canvas malen, etwas aktualiesiere etc.

Wenn Du unbedingt in Caption was sehen willst auch wenn Du im Code/Objektinspektor nichts einträgst dann schreib es im Contructor rein:

Delphi-Quellcode:
constructor TDBRichEditExt.Create(AOwner: TComponent);
begin
  inherited;
   Fcaption := 'Was auch immer Du sehen willst';
   showmessage(FCaption); // immer leer?
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von mkinzler (16. Jun 2010 um 15:00 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Kompenente erweitern - eigene Property immer leer

  Alt 16. Jun 2010, 14:01
Das Problem ist, dass der Konstruktor ausgeführt wird BEVOR die das Control die Werte aus der DFM zugewiesen bekommt. Von daher ist FCaption im Konstruktor natürlich noch leer
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#7

AW: Kompenente erweitern - eigene Property immer leer

  Alt 16. Jun 2010, 14:03
Ah, Danke michael.
Wo wäre denn der Richtige Zeitpunkt diesen Wert zuzuweisen?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Kompenente erweitern - eigene Property immer leer

  Alt 16. Jun 2010, 14:07
Das mit

read FCaption write FCaption; Ist ja so in Ordnung. Wenn du in deinem (Test-)Programm mal im FormCreate oder später DBRicheditExt1.Caption ausgeben lässt, dann bekommst du auch den im OI eingestellten Wert zu sehen.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#9

AW: Kompenente erweitern - eigene Property immer leer

  Alt 16. Jun 2010, 14:17
Jo, das hatte ich auch schon erfolgreich getestet.

Allerdings verstehe ich dann nicht wie ich da machen soll:
Ich will im momentan überhalb von einem richEdit ein Label anzeigen. Das klappst soweit auch.
Nun möchte in der ObjektInspektor den Text vergeben der in diesem Label zur Laufzeit anzeigt werden soll.

Wenn im OnCreate die FCaption aus der Designtime nicht zur verfügung steht - wann soll ich dann in meiner erweiterten Komponente dem Label den Text aus dem ObjektInspektor zuweisen? Ich finde da kein vernünftiges event.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Kompenente erweitern - eigene Property immer leer

  Alt 16. Jun 2010, 14:20
Delphi-Quellcode:
TDBRichEditExt = class(TDBRichEdit)
  private
    { Private-Deklarationen }
    FCaption : String;
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); override;
    procedure setCaption(value : string);
  published
    { Published-Deklarationen }
    property Caption: String read FCaption write setCaption;
  end;

implementation

// FCaption wäre überflüssig, wenn es noch einen Getter gäbe, der
// die Caption des Anzeige-Labels zurückgeben würde
procedure TDBRichEditExt.setCaption(value : string);
begin
  if value <> FCaption then
  begin
    FCaption := value;
    FAnzeigeLabel.Caption := FCaption; // := Value;
  end;
end;
Wobei ich in deiner Komponente bisher noch kein Label sehe...
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:46 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