AGB  ·  Datenschutz  ·  Impressum  







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

Eigenschaften von erzeugten Komponenten

Ein Thema von Maya · begonnen am 10. Aug 2011 · letzter Beitrag vom 10. Aug 2011
Antwort Antwort
Benutzerbild von Maya
Maya

Registriert seit: 15. Jun 2011
Ort: Potsdam-Mittelmark
107 Beiträge
 
Delphi 2010 Enterprise
 
#1

AW: Eigenschaften von erzeugten Komponenten

  Alt 10. Aug 2011, 10:35
Willst du jetzt sowas wie Defaultwerte haben, welche beim nächsten Erstellen genommen werden?
Jupp.

Entweder du machst das über eine externe Funktion/Ersteller-Klasse oder du fügst es direkt in die Komponenten ein.

- von TLabeledEdit ableiten
- als class var / class property die Defaultwerte hinzufügen
- den Constructor überschreiben und dort die (eventuell vorher gesetzten) Defaultwerte den entsprechenden Property zuweisen
- dann nur noch die fehlenden Werte zuweisen

Den Constructor kann man dann noch um die Parameter erweitern, für diejenigen Eigenschaften, welche sich immer ändern, wie z.B. die Position.
Ehrlich gesagt, das mit dem Ableiten hab ich bisher nie wirklich 100%ig hinbekommen. Gibt's ein gutes Tut, wo ich mir das noch mal anschauen kann?

Das mit einer externen Funktion, so in der Art hatte ich auch schon eine Idee, aber war mir nicht sicher, wie ich das effektiv hinbekomme. Dachte schon an eine Schleife, aber wirklich weitergekommen bin ich auf dem Weg auch nicht, da ich mir überlegte, dass über die Namen zu machen, aber die sind jedes Mal recht verschieden. Auch brauche ich halt nicht jedes Mal immer die gleichen LabeledEdits, mal brauche ich das für die Faxnummer, mal nicht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.314 Beiträge
 
Delphi 12 Athens
 
#2

AW: Eigenschaften von erzeugten Komponenten

  Alt 10. Aug 2011, 10:43
So schwer ist das eigentlich nicht.
Delphi-Quellcode:
try
  TSimpleLabeledEdit = class(TLabeledEdit)
  private
    class var
      FDefaultFontName: String;
      FDefaultFontSize: Integer;
  public
    class property DefaultFontName: String read FDefaultFontName write FDefaultFontName;
    class property DefaultFontSize: Integer read FDefaultFontSize write FDefaultFontSize;

    constructor Create(AOwnerAndParent: TWinControl; ALeft, ATop, AWidth: Integer; ACaption: String; AVisible: Boolean = True);
  end;

constructor TSimpleLabeledEdit.Create(AOwnerAndParent: TWinControl; ALeft, ATop, AWidth: Integer; ACaption: String; AVisible: Boolean = True);
begin
  inherited Create(AOwnerAndParent); //den originalen Constructor aufrufen
  Parent:=AOwnerAndParent;
  Left:=ALeft;
  Top:=ATop;
  Width:=AWidth;
  EditLabel.Caption:=ACaption;
  Font.Name:=FDefaultFontName;
  EditLabel.Font.Name:=FDefaultFontName;
  Font.Size:=FDefaultFontSize;
  EditLabel.Font.Size:=FDefaultFontSize;
  Visible := AVisible; //Show bzw. Hide
end;
Und nun einfach TSimpleLabeledEdit verwenden.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (10. Aug 2011 um 11:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Maya
Maya

Registriert seit: 15. Jun 2011
Ort: Potsdam-Mittelmark
107 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Eigenschaften von erzeugten Komponenten

  Alt 10. Aug 2011, 10:53
So schwer ist das eigentlich nicht.
Sagst du.

Trotzdem hab ich zu dem Quelltext noch 'n paar Fragen.

Delphi-Quellcode:
inherited Create(AOwnerAndParent); //Hier nix ändern, ja? Später bei der Anwendung der Komponente einfach dann grp1 und grp2 einsetzen.
  Parent:=AOwnerAndParent;
  Left:=ALeft;
  Top:=ATop;
  Width:=AWidth;
  EditLabel.Caption:=ACaption;
  Font.Name:=FDefaultFontName;
  EditLabel.Font.Name:=FDefaultFontName;
  Font.Size:=FDefaultFontSize; //Diese Eigenschaft soll sich ja nicht ändern. Ich bin mir jetzt nicht sicher, wo ich dann eingebe, dass die Schriftgröße 9 sein soll.
  EditLabel.Font.Size:=FDefaultFontSize;
  Visible := AVisible; //Show bzw. Hide
end;
Ich weiß, ich stell mich sicherlich gerade brodeldoof an.

Dann noch eine Frage. Ich kann ganz normal dann Free verwenden, um die Komponenten wieder freizugeben, ja?
Wie gesagt, das Ableiten ist nicht meine Stärke.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.655 Beiträge
 
Delphi 12 Athens
 
#4

AW: Eigenschaften von erzeugten Komponenten

  Alt 10. Aug 2011, 10:55
Nur blöd, wenn der übergebene Owner kein TWinControl ist

[edit] Da der rote Kasten mal wieder versagt hat: das galt dem letzten Post von himitsu [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Maya
Maya

Registriert seit: 15. Jun 2011
Ort: Potsdam-Mittelmark
107 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Eigenschaften von erzeugten Komponenten

  Alt 10. Aug 2011, 10:58
@Deddy: Konnte ich mir schon denken. Bloß trotzdem verwirrst du mich jetzt noch ein Stückchen mehr.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.655 Beiträge
 
Delphi 12 Athens
 
#6

AW: Eigenschaften von erzeugten Komponenten

  Alt 10. Aug 2011, 11:40
Ich würde das wie gesagt einfacher machen:
Delphi-Quellcode:
procedure TDeinForm.AddNewLabeledEdit(aLeft, aTop: integer; const aCaption: string);
var
  le: TLabeledEdit;
begin
  le := TLabeledEdit.Create(self);
  le.Left := Left;
  le.Top := aTop;
  le.EditLabel.Caption := aCaption;
  (* hier nun die gemeinsamen Eigenschaften definieren *)
  le.Parent := self; //oder ein Panel oder wo es sonst hinsoll
  (* usw. *)
end;
Um nun ein neues EditLabel anzulegen, rufst Du diese Methode auf und übergibst Left, Top und Caption in den Parametern.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Maya
Maya

Registriert seit: 15. Jun 2011
Ort: Potsdam-Mittelmark
107 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: Eigenschaften von erzeugten Komponenten

  Alt 10. Aug 2011, 11:58
AH!! Deddy, jetzt ist der Groschen gefallen. Ging leider heute etwas centweise, für mich ist ja auch schon Freitag.

Ich probier's gleich nach der Mittagspause aus.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.314 Beiträge
 
Delphi 12 Athens
 
#8

AW: Eigenschaften von erzeugten Komponenten

  Alt 10. Aug 2011, 12:28
Wobei das was in AddNewLabeledEdit oder im Constructor gemacht wird, im Grunde das Selbe ist ... nur eben an unterschiedlichen Stellen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Maya
Maya

Registriert seit: 15. Jun 2011
Ort: Potsdam-Mittelmark
107 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: Eigenschaften von erzeugten Komponenten

  Alt 10. Aug 2011, 13:22
Ich hab jetzt das ganze mal ausprobiert, aber leider noch zu keinen effektiven Ergebnis gekommen.
Den Quelltext habe ich ein klein wenig an meine Bedürfnisse angepasst.

Delphi-Quellcode:
procedure AddNewLabeledEdit(aLeft, aTop, aWidth: Integer; const aCaption, aName, aParent: string);
[...]
implementation
[...]

procedure TneuerEintrag.AddNewLabeledEdit(aLeft, aTop, aWidth: Integer; const aCaption, aName, aParent: string); //Zeile 86
var
  lbledt: TLabeledEdit;
begin
  lbledt:=TLabeledEdit.Create(self);
  lbledt.Left:=aLeft;
  lbledt.Top:=aTop;
  lbledt.Width:=aWidth;
  lbledt.EditLabel.Caption:=aCaption;
  lbledt.Name:='lbledt'+aName;
  lbledt.Parent:=aParent;

  lbledt.Font.Name:='Arial';
  lbledt.EditLabel.Font.Name:='Arial';
  lbledt.Font.Size:=9;
  lbledt.EditLabel.Font.Size:=9;
  lbledt.Show;
end;

[...]
Fehlermeldung: 'frmneuerEintrag' enthält kein Element namens 'AddNewLabeledEdit' in Zeile 86.
Für die Zeile kommt auch der Fehler, dass bei dem Punkt ein ; erwartet wurde und solche ähnlichen Späße.

Bin mir jetzt recht unsicher, wo mein Fehler liegt.
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:58 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