AGB  ·  Datenschutz  ·  Impressum  







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

VCL-Komponenten aufeinander aufbauen

Ein Thema von Ookami · begonnen am 30. Mär 2014 · letzter Beitrag vom 31. Mär 2014
Antwort Antwort
Benutzerbild von Ookami
Ookami

Registriert seit: 20. Nov 2009
Ort: Baden Württemberg
77 Beiträge
 
Delphi 2009 Architect
 
#1

AW: VCL-Komponenten aufeinander aufbauen

  Alt 30. Mär 2014, 20:04
Hallo Stahli,

ich hab das mal so gemacht. Hat aber nichts bewirkt.

Trotzdem Danke
Wolfgang
Grüße und Danke
Wolfgang
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.212 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: VCL-Komponenten aufeinander aufbauen

  Alt 31. Mär 2014, 09:24
Dumme Frage, aber müsste man für die Properties die auch in die DFM nicht noch eine stored -Direktive anhängen oder ist das irgendwie schon automatisch?
  Mit Zitat antworten Zitat
Benutzerbild von Ookami
Ookami

Registriert seit: 20. Nov 2009
Ort: Baden Württemberg
77 Beiträge
 
Delphi 2009 Architect
 
#3

AW: VCL-Komponenten aufeinander aufbauen

  Alt 31. Mär 2014, 10:12
Hallo Günther,

ich steh noch auf dem Schlauch. Umstellung Sommerzeit und so weiter...
aber Scherz beiseite, ich versteh dich gerade wirklich nicht.

Könntest du da bitte ein bisschen genauer werden?

Danke mal
Wolfgang
Grüße und Danke
Wolfgang
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.212 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: VCL-Komponenten aufeinander aufbauen

  Alt 31. Mär 2014, 10:29
Delphi-Quellcode:
type TMyComponent = class(...)
   protected
      procedure setMyProperty(const Value: String);
      function getMyProperty(): String;
   
   published
      property name: String
         read getMyProperty
         write setMyProperty
         stored True;

end;
Ich dachte "Stored" gibt bei einer Property noch an, ob die Werte in der DFM gespeichert werden oder nicht. Allerdings merke ich grade, dass ja garkeine eigene DFM für die Komponente im Spiel ist. Deshalb Quatsch
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: VCL-Komponenten aufeinander aufbauen

  Alt 31. Mär 2014, 11:17
Ich habe das schon so verstanden, dass es um die Speicherung im Formular geht.

Stored ist schon wichtig, aber standardmäßig True.
Aus dem Wiki:
Zitat:
Speicherbezeichner

Die optionalen Direktiven stored, default und nodefault sind Speicherbezeichner. Sie haben keinerlei Auswirkungen auf die Funktionsweise des Programms, sondern bestimmen, ob die Werte der published-Eigenschaften in Formulardateien gespeichert werden.

Nach der Angabe stored muss der Wert True oder False, der Name eines booleschen Feldes oder der Name einer parameterlosen Methode folgen, die einen booleschen Wert zurückgibt. Beispiel:
property Name : TComponentName read FName write SetName stored False;

Wird eine Eigenschaft ohne die Angabe von stored deklariert, entspricht dies der Definition stored True.
@Ookami
Dein Quelltext ist vielleicht etwas komplex um das trocken nachzuvollziehen.
Mach doch mal einen kleinen Test mit einer Unterkomponente, in der Du nur einen Text oder so speicherst.
Es geht doch darum, dass Du zur Designtime die Untereigenschaften deklarierst und nach dem Projektstart oder nach dem Delphi-Neustart sind Deine Einstellungen weg - oder?
Dann musst Du dafür sorgen, dass die Unterkomponenteneigenschaften mit in der DFM gespeichert werden.
Dazu muss eigentlich Deine Komponente Owner der Unterkomponente sein und SetSubComponent(True) sein.

Mein Tipp: Versuche mal einen kleinen, übersichtlich Test mit sehr einfachen Komponenten.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Ookami
Ookami

Registriert seit: 20. Nov 2009
Ort: Baden Württemberg
77 Beiträge
 
Delphi 2009 Architect
 
#6

AW: VCL-Komponenten aufeinander aufbauen

  Alt 31. Mär 2014, 11:43
Hallo Stahli,

Danke noch für die Antwort.

Zitat:
@Ookami
Dein Quelltext ist vielleicht etwas komplex um das trocken nachzuvollziehen.
Mach doch mal einen kleinen Test mit einer Unterkomponente, in der Du nur einen Text oder so speicherst.
Es geht doch darum, dass Du zur Designtime die Untereigenschaften deklarierst und nach dem Projektstart oder nach dem Delphi-Neustart sind Deine Einstellungen weg - oder?
Dann musst Du dafür sorgen, dass die Unterkomponenteneigenschaften mit in der DFM gespeichert werden.
Dazu muss eigentlich Deine Komponente Owner der Unterkomponente sein und SetSubComponent(True) sein.

Mein Tipp: Versuche mal einen kleinen, übersichtlich Test mit sehr einfachen Komponenten
.
Den Test werd ich so mal machen, wie du es vorschlägst. Bleibt mir wohl auch nichts anderes übrig.

Um ehrlich zu sein, hab ich das mit den DFM so noch nie händisch gemacht.
Ist das so zu verstehen, wie das Günther vorgeschlagen hat?

siehe
Delphi-Quellcode:
type TMyComponent = class(...)
   protected
      procedure setMyProperty(const Value: String);
      function getMyProperty(): String;
   
   published
      property name: String
         read getMyProperty
         write setMyProperty
         stored True;

end;
Falls ja, dann versuch ich das so. Falls nein, wäre ich auf ein kleines Snippet angewiesen, gesucht hab ich schon, bin aber nicht besonders fündig geworden. Hab zumindest nichts gefunden, was mich weiterbringt.
Und –
Zitat:
Es geht doch darum, dass Du zur Designtime die Untereigenschaften deklarierst und nach dem Projektstart oder nach dem Delphi-Neustart sind Deine Einstellungen weg - oder?
Die Frage ist mit JA zu beantworten. Das ist alles weg.
Wolfgang
Grüße und Danke
Wolfgang
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: VCL-Komponenten aufeinander aufbauen

  Alt 31. Mär 2014, 11:58
Hier mal ein Auszug aus einem alten Projekt:

Delphi-Quellcode:
unit odEdit;

interface

uses
  StdCtrls,
{$INCLUDE 'inc\uses.inc'};

type

  TodEdit = class(TEdit)
  private
{$INCLUDE 'inc\privat_var.inc'}
{$INCLUDE 'inc\privat_meth.inc'}
  protected
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
{$INCLUDE 'inc\public_prop.inc'}
    procedure WndProc(var Message: TMessage); override;
  published
{$INCLUDE 'inc\published_prop.inc'}
// Die inc sieht so aus: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// property DataSet: TodDataSet read FDataSet;
// property OnAfterGetData: TNotifyEvent read FOnAfterGetData write FOnAfterGetData;
// property OnBeforeGetData: TNotifyEvent read FOnBeforeGetData write FOnBeforeGetData;

  end;

procedure Register;

implementation

uses
  Graphics, Controls, Themes, Windows, SysUtils;

procedure Register;
begin
  RegisterComponents('odControls', [TodEdit]);
end;

{ TodEdit }

function TodEdit{$INCLUDE 'inc\get_od.inc'}
procedure TodEdit{$INCLUDE 'inc\set_od.inc'}
function TodEdit{$INCLUDE 'inc\get_PropName.inc'}
procedure TodEdit{$INCLUDE 'inc\set_PropName.inc'}
function TodEdit{$INCLUDE 'inc\get_PropText.inc'}
procedure TodEdit{$INCLUDE 'inc\set_PropText.inc'}

constructor TodEdit.Create(AOwner: TComponent);
begin
  inherited;
{$INCLUDE 'inc\create.inc'}
// Die inc sieht so aus: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// FDataSet := TodDataSet.Create(Self);
// DataSet.SetSubComponent(True);

end;

destructor TodEdit.Destroy;
begin
  inherited;
end;

procedure TodEdit.WndProc(var Message: TMessage);
begin
...
  inherited;
end;

end.
TodDataSet war von TComponent abgeleitet:

Delphi-Quellcode:
  TodDataSet = class(TComponent)
  private
...
  protected
...
  public
...
  published
    property PropName: String read get_PropName write set_PropName;
  end;
Das hat so wunderbar funktioniert.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  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 01:31 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