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, 12:41
Na ja, viel spannendes gibt es da nicht zu sehen.

Delphi-Quellcode:
unit frmneuerEintrag;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, Buttons, ExtCtrls, jpeg;

type
  Tneuer_Eintrag = class(TForm)
    imgLogo: TImage;
    lblUberschrift: TLabel;
    lbl1: TLabel;
    lbledtPNr: TLabeledEdit;
    mmoBetreff: TMemo;
    lbl4: TLabel;
    dtp1: TDateTimePicker;
    lbl_Datum: TLabel;
    grp1: TGroupBox;
    btn3: TBitBtn;
    btn4: TBitBtn;
    grp2: TGroupBox;
    btn1: TBitBtn;
    btn2: TBitBtn;
    lbledtZuarbeit: TLabeledEdit;
    lbledtAblage: TLabeledEdit;
    dtpSchreiben: TDateTimePicker;
    lbl2: TLabel;
    dtpPost: TDateTimePicker;
    lbl3: TLabel;
    btnHinzu: TBitBtn;
    btnAbbrech: TBitBtn;
    procedure AddNewLabeledEdit(aLeft, aTop, aWidth: Integer; const aCaption, aName, aParent: string);
    procedure FormShow(Sender: TObject);
    procedure btnAbbrechClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    Postart: Integer;
  end;

var
  neuer_Eintrag: Tneuer_Eintrag;


implementation

{$R *.dfm}

procedure TneuerEintrag.AddNewLabeledEdit(aLeft, aTop, aWidth: Integer; const aCaption, aName, aParent: string);
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;

procedure Tneuer_Eintrag.btnAbbrechClick(Sender: TObject);
begin
  Close;
end;


procedure Tneuer_Eintrag.FormShow(Sender: TObject);
begin
  if (Postart=1) then
    begin
      lbl_Datum.Caption:='Datum Posteingang:*';
      AddNewLabeledEdit(16,86,121,'Anrede:','ABS_Anrede',grp1);
    end;
end;
Danach kommt nix mehr. Ist ja noch alles im Aufbau.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Eigenschaften von erzeugten Komponenten

  Alt 10. Aug 2011, 12:42
TneuerEintrag <> Tneuer_Eintrag Ich hatte das erst für einen Tippfehler gehalten.
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 Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Eigenschaften von erzeugten Komponenten

  Alt 10. Aug 2011, 12:48
Hallo,

Zitat:
procedure AddNewLabeledEdit(aLeft, aTop, aWidth: Integer; const aCaption, aName, aParent: string);
der Parameter aParent sollte besser nicht von Typ String sein.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Eigenschaften von erzeugten Komponenten

  Alt 10. Aug 2011, 12:49
Stimmt, TWinControl wäre passender (evtl. mit Defaultwert auf self) (geht nicht).
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

Geändert von DeddyH (10. Aug 2011 um 12:52 Uhr)
  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, 12:53
*Head meets Desk*

Selber schon bemerkt und korrigiert.
Danke für eure Hilfe.

So, hoffentlich letzte Frage: Wie bekomme ich die ganzen Komponenten am Ende am elegantesten freigegeben?
Wenn ich in das OnClose-Ereignis z.B. "lbledtABS_VName.Free" eingebe, kommt ja 'ne Fehlermeldung á la "undeklarierter Bezeichner", was ja klar ist. (Versuchen kann man es ja trotzdem mal. )

Geändert von Maya (10. Aug 2011 um 13:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Eigenschaften von erzeugten Komponenten

  Alt 10. Aug 2011, 13:44
Du hast ja beim Erzeugen einen Owner angegeben, daher musst Du die Komponenten nicht selbst freigeben, das übernimmt der Owner, das ist nämlich seine Aufgabe.
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, 13:47
Also müsste ich die Groupboxen freigeben?
Problem an der Sache ist aber, dass auch wenn ich die Form schließe und sie wieder öffne mit 'ner anderen Auswahl, motzt Delphi-Lein 'rum, weil einige Komponenten schon unter gewisse Namen vorhanden sind. D.h. sie sind nicht freigegeben wurden.

So und um mal meinen Gedankengang zu Ende zu führen: ich müsste die Groupboxen freigeben (sind zweie), wo die LabeledEdits drinne sind und beim neuen OnShow-Ereignis des Fensters neu erzeugen, ja?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Eigenschaften von erzeugten Komponenten

  Alt 10. Aug 2011, 13:51
Der Owner ist das Formular, der Parent dürfte die jeweilige GroupBox sein. Während der Owner sich um den Speicher kümmert ist der Parent für die Darstellung zuständig. Aber das nur am Rande. Willst Du wirklich bei jedem OnShow-Eventaufruf die Komponenten neu erzeugen? Vielleicht wäre es dann einfacher, das Formular dynamisch anzulegen und freizugeben.
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
 
#9

AW: Eigenschaften von erzeugten Komponenten

  Alt 10. Aug 2011, 13:58
Das Formular komplett dynamisch anlegen möchte ich eigentlich nicht, weil es immer komplett gleich aussieht, bis auf die knapp 15 LabeledEdits und max. 6 Comboboxen (je nach Auswahl), welche dynamisch erzeugt werden. Das sind ja auch nicht die einzigen Komponenten auf den Formularen.

Gibt es denn dann nicht eine Möglichkeit, das Formular richtig zu schließen und bei jeden Aufruf neu zu kreiieren, also nicht nur einfach anzuzeigen? Dann wären die Komponenten doch freigegeben und mein Problem eigentlich gelöst.
  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 15:05 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