AGB  ·  Datenschutz  ·  Impressum  







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

Relative Zuordnung

Ein Thema von Guenni_d · begonnen am 18. Jul 2002 · letzter Beitrag vom 18. Jul 2002
Antwort Antwort
Guenni_d

Registriert seit: 4. Jul 2002
5 Beiträge
 
#1

Relative Zuordnung

  Alt 18. Jul 2002, 15:24
Hallo Forum,

habe ein kleines Problem. Nenne es mal realtive Zuordnung.

Folgendes:

Hab in einem String eine Komponente mit Eigenschaft stehen und will diese ansprechen.
Zum Beispiel:
Code:
teststring:='label1.caption';
Nun will ich diesen String verwenden um der Eigenschaft wirklich was zuweisen. Also wie wenn ich label.caption:='test' machen würde. Nur eben dass die Komponente in nem String drin steht.
Wie kann ich damit umgehen?

Gruss Günter
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#2
  Alt 18. Jul 2002, 15:44
Hallo Guenni_d,

beim Stöbern in der Delphi-Hilfe ist mir dieser Eintrag aufgefallen:

Zitat von Delphi 6-Hilfe:
This example shows how to load and save an unpublished property whose value is a component that was created at runtime. It defines two methods, LoadCompProperty and StoreCompProperty that load or save the property value. The also defines an override for the DefineProperties method where these methods are passed to the streaming system. The DefineProperties method checks the filer's Ancestor property to avoid saving a property value in inherited forms.

Code:
procedure TSampleComponent.LoadCompProperty(Reader: TReader);
begin
  if Reader.ReadBoolean then
    MyCompProperty := Reader.ReadComponent(nil);
end;

procedure TSampleComponent.StoreCompProperty(Writer: TWriter);

begin
  Writer.WriteBoolean(MyCompProperty <> nil);
  if MyCompProperty <> nil then
    Writer.WriteComponent(MyCompProperty);
end;

procedure TSampleComponent.DefineProperties(Filer: TFiler);

  function DoWrite: Boolean;
  begin
    if Filer.Ancestor <> nil then { check Ancestor for an inherited value }
    begin
      if TSampleComponent(Filer.Ancestor).MyCompProperty = nil then
        Result := MyCompProperty <> nil
      else if MyCompProperty = nil or
         TSampleComponent(Filer.Ancestor).MyCompProperty.Name <> MyCompProperty.Name then
        Result := True

      else Result := False;
    end
    else { no inherited value -- check for default (nil) value }
      Result := MyCompProperty <> nil;
  end;
begin
  inherited; { allow base classes to define properties }
  Filer.DefineProperty('MyCompProperty', LoadCompProperty, StoreCompProperty, DoWrite);
end;
Wenn du deine Anwendungen auf diese Weise übersetzen wilst (etwas anderes kann ich mir bei deiner Frage schlecht vorstellen), könnte das das richtige für dich sein. Übrigens gibt es für diese Aufgabenstellung Komponenten, wenn du welche benutzen willst, kannst du dich ja mal bei den Links umschauen.

MfG,
d3g
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#3
  Alt 18. Jul 2002, 15:49
Ich hätte jetzt "FindComponent" genutzt... Wenn wenigstens die zu ändernde Eigenschaft vorher schon bekannt ist, dann reicht es, lediglich den Namen der gesuchten Komponente in einem String zu hinterlegen.

Code:
testString:= 'Label1';
TLabel( Form1.FindComponent(testString) ).Caption:= 'aber hallo';
Grüße,
Daniel
Daniel R. Wolf
  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 21:15 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