AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Objekt+Properties über Strings ansprechen
Thema durchsuchen
Ansicht
Themen-Optionen

Objekt+Properties über Strings ansprechen

Offene Frage von "LingNeu"
Ein Thema von LingNeu · begonnen am 5. Apr 2010 · letzter Beitrag vom 5. Apr 2010
Antwort Antwort
LingNeu

Registriert seit: 18. Dez 2006
164 Beiträge
 
Delphi 7 Enterprise
 
#1

Objekt+Properties über Strings ansprechen

  Alt 5. Apr 2010, 08:47
Hallo Delphifreunde,
mit der Funktion FindComponent kann man ja Objekte fast wie in einem Array ansprechen, wenn man die Objekte durchnummeriert und anschließend in einer Schleife abarbeitet.
Ich hätte gerne in Datenbankfeldern(string) den Namen, die Eigenschaft und den Typ gespeichert und in einem weiteren Feld den Eigenschaftswert eingetragen.
Anschließend möchte ich das Objekt im Programm ansprechen können. Irgendwie hänge ich jetzt und komme nicht weiter.
Vielleicht kann mir jemand von euch weiterhelfen.

Delphi-Quellcode:
// in der Tabelle TDB stehen die Felder zur Verfügung
cmp := TDB['cmpName']; // im Feld cmpName steht 'Edit1' (string)
pro := TDB['cmpProperty']; // im Feld cmpProperty steht 'Text' (string)
typ := TDB['cmpTyp']; // im Feld cmpTyp steht 'TEdit' (string) als Typ
txt := TDB['cmpTxt']; // im Feld cmpTxt steht 'eins' (string) als Eigenschaftswert

// soweit bin ich gekommen
(FindComponent(cmp) as TEdit).text := txt; // Ergebnis Edit1.text := 'eins'
Wie müsste ich die Strings "zusammensetzen" damit ich diese dann als Objekt ansprechen kann.
Geht den sowas überhaupt, oder macht da der Compiler Schwierigkeiten?
Danke für jede Hilfe
ciao
LingNeu
Wenn man denkt, dann denkt man nur, das man denkt!
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Objekt+Properties über Strings ansprechen

  Alt 5. Apr 2010, 09:20
Ganz so einfach geht das nicht. FindComponent durchsucht ja nur eine Liste von Kontrollelementen nach dem Element mit dem angegebenen Namen.

Um Ähnliches für Objekte zu realisieren, musst Du die Objekte, zusammen mit einem Namen in einer Liste speichern. Dafür eignet sich z.B. eine TStringList und deren Methode 'AddObject'.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
LingNeu

Registriert seit: 18. Dez 2006
164 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Objekt+Properties über Strings ansprechen

  Alt 5. Apr 2010, 14:07
Hallo alzaimar,
da hast Du Recht - das ist anscheinend nicht ohne Weiteres zu lösen.
Ich habe nun mal ein ganz einfache Beispiel kreiert
Sind nur 5 Edits. Die ersten 4 enthalten die Strings
Im Edit5 kommt das Ergebnis. Ich bräuchte lediglich noch den String von Edit2 und Edit3
Schade, das es da keine Möglichkeit gibt.
ciao
LingNeu

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var cmp,pro,typ,txt: string;
begin
cmp := Edit1.Text ; //'Edit5'
pro := Edit2.Text ; //'Text'
typ := Edit3.Text ; //'TEdit'
txt := Edit4.Text ; //'eins'
(FindComponent(cmp) as TEdit).Text := txt; //Ausgabe erfolgt in Edit5

// so wäre es ideal ...
//(FindComponent(cmp) as typ).pro := txt;

end;
Wenn man denkt, dann denkt man nur, das man denkt!
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#4

Re: Objekt+Properties über Strings ansprechen

  Alt 5. Apr 2010, 14:27
Kann man das dann nicht über größere Case Schleifen zuweisen?
Erkläre doch mal genauer, was du damit machen willst. Vielleicht gibt es einen anderen Lösungsansatz.
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Objekt+Properties über Strings ansprechen

  Alt 5. Apr 2010, 14:35
Das "as typ", bzw eigentlich das "is typ" kannst du über .ClassName lösen lösen.

Für den Rest, also das "pro", wirst du die RTTI bemühen müssen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
LingNeu

Registriert seit: 18. Dez 2006
164 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Objekt+Properties über Strings ansprechen

  Alt 5. Apr 2010, 14:47
hallo zusammen,
danke für eure Hinweise.
Ich wollte mir ein mehrsprachiges System aufbauen. Natürlich weiß ich, dass es da fertige Sachen gibt.
Da kenne ich z.B. die SiComponenten und dort bin ich auf die Idee gekommen, mir auch sowas anzulegen.
Bei den SiComponenten werden alle Komponenten mit den Eigenschaften - Text oder Caption in einer Tabelle mit ihrem Text abgelegt und man kann sich mehrere Spalten anlegen. Dabei repräsentiert jede Spalte eine eigene Sprache
und der Anwender kann in seiner Landessprache die entsprechenden Texte eingeben. Bei Applikationsstart werden die Objekte mit ihren hinterlegten Eigenschaften gefüttert.

In der 1.Spalte der Tabelle stehen also z.B.
Label1.Caption
Edit12.Text
copyright


In der 2.Spalte stehen die deutschen Texte
'Hauptname'
'Meier'
'Firma xy'


Wenn es mir gelänge meine Komponenten per Hand in eine Tabelle einzupflegen, könnte ich die passenden Texte jederzeit ändern und eben auch auf andere Sprachen umstellen.
Na, vielleicht hat von euch einer noch eine Idee
ciao
LingNeu
Wenn man denkt, dann denkt man nur, das man denkt!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Objekt+Properties über Strings ansprechen

  Alt 5. Apr 2010, 15:00
http://www.delphipraxis.net/internal...t.php?t=164238
Dort hab ich auch ein eigenes System verbaut, welches über die Komponentennamen geht.

Wenn ich mal mehr Zeit hab, dann will ich das auch mal erweitern und noch etwas umbauen.

Aktuell wird ja aus einem Konstanten-Array gelesen.
Und welche Property nun geändert wird, wird über den Typen der gefundenen Komponente bestimmt.

Man muß also eine .pas austauschen und neu kompileren, um die Sprache zu ändern.
(wo das Array herhommt ist aber egal ... man könnte es auch aus einer Datei auslesen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
LingNeu

Registriert seit: 18. Dez 2006
164 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Objekt+Properties über Strings ansprechen

  Alt 5. Apr 2010, 16:09
@himitsu,
danke für den Hinweis.
Uff - da muss ich noch viel lernen.
... Aber, ohne Fleiss ...
ciao
LingNeu
Wenn man denkt, dann denkt man nur, das man denkt!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Objekt+Properties über Strings ansprechen

  Alt 5. Apr 2010, 16:19
Zitat von LingNeu:
Uff - da muss ich noch viel lernen.
Muß ich auch noch.
Und ich will nicht behaupten daß dieses "System" supergut ist oder es mal werden wird, aber für meine Bedürfnisse ist es soweit ausreichend.

Und da du ja anscheinend in eine ähnliche Richtung gehn willst, kannst'e dir auch gern was abgucken.


Gut, den Namen des Property mitzugeben wäre wesentlich flexibler, aber nötig ist es oftmals garnicht, da viele Komponenten eine gemeinsame Basiskomponente haben, über welche man den Text dann zuweisen könnte.



In meinem alten FileSplitter steckt noch eine andere Methode drinnen, welche über die Resourcen (vorwigend für NonVCL-Programme geeignet) die Strings und sogar ganze Formulare/Dialoge in unterschiedlichen Sprachen laden kann.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 23:51 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