AGB  ·  Datenschutz  ·  Impressum  







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

Text eines zur Laufzeit erstellten Editfeldes

Offene Frage von "Delphi-Narr"
Ein Thema von Delphi-Narr · begonnen am 28. Jan 2010 · letzter Beitrag vom 29. Jan 2010
Antwort Antwort
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#1

Text eines zur Laufzeit erstellten Editfeldes

  Alt 28. Jan 2010, 20:43
Hallo, ich habe folgendes Problem:

Ich habe mehrere Editfelder, die zur Laufzeit erstellt werden. Diesen möchte ich sowohl ein OnChange zuweisen, in dem ich die Texte auswerten kann und in andere zur Laufzeit erstellten Objekten den Text ändern kann.


Delphi-Quellcode:

var Eingabe:TEdit;

procedure TForm1.Erstellen;
begin
     Eingabe:=Tedit.create(Self);
     Eingabe.parent:=TForm1;
     Eingabe.OnChange:=EditsChange;
end;


procedure TForm1.EditsChange(Sender:TObject);
var text, neu:string;
begin
     //Ich komme zwar hier an, doch ich kann nichts auslesen, da es sich um ein TObject handelt.
     text:=Sender.text;

     neu:=text+'asd';
     
     //Hier möchte ich den Text der anderen Objekte ändern (Namen, Typ, Position etc. habe ich alles und lässt sich
     //aus den Werten von Sender errechnen

     AnderesEdit.text:=neu;
     AnderesEdit2.text:=neu+text;
     
     //usw.
end;

Wie kann ich es verwirklichen, ein TObject in ein TEdit "umzuwandeln" und ein Objekt nur über einen in einer Variable gespeicherten Namen anzusprechen?

Liebe Grüße!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Text eines zur Laufzeit erstellten Editfeldes

  Alt 28. Jan 2010, 20:46
text:=(Sender as TEdit).text;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Text eines zur Laufzeit erstellten Editfeldes

  Alt 29. Jan 2010, 10:16
Ok, vielen Dank.
Wenn ich jetzt noch bei zur Laufzeit erstellten Objekten des Text auslesen will, kann ich das dann auch auf diese Weise machen?

Delphi-Quellcode:

//Setzt den Inhalt der Prozedur oben vorraus
procedure TForm1.EditChange(Sender:TObject);
var nr,name, anderername:string;
begin
     //Name der Edits setzt sich wie folgt zusammen: 'Name'+IntToStr(Nummer), wobei es 4 verschiedene Namen gibt
     //Also Nummer des Senders auslesen
     nr:=name;
     delete(Nr,0,Length(NR)-1);

     //Und jetzt das Edit mit dem Namen 'XYZ'+nr
     
     anderername:='Feld'+nr;
     
    //Das gewünschte Feld wieder in die TEdit Variable Feld laden???
    Feld:=(Anderername as TEdit);
end;

Liebe Grüße!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Text eines zur Laufzeit erstellten Editfeldes

  Alt 29. Jan 2010, 10:24
Nein. Ich sehe aber auch keinen Sinn darin. Was hast du genau vor?

Vielleicht
Feld:=(FindComponent( Anderername) as TEdit);
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Text eines zur Laufzeit erstellten Editfeldes

  Alt 29. Jan 2010, 10:31
Ich möchte den Namen von Sender ermitteln (Kein Problem) und dann je nachdem welcher Name es ist, in einem anderen Feld eine Ausgabe machen. Da aber alle diese Felder noch nicht beim Programmstart vorhanden sind, hab ich halt so meine Probleme damit.

Wenn ich bei deiner Methode dann schreibe

showmessage(Feld.name);

dann kommt eine Fehlermeldung, eine Zugriffsverletzung. Ohne diese Zeile scheint es aber soweit zuklappen...

Edit:
Wenn ich schreibe Feld.text dann klappt es... Doch ich kann diesen Wert nicht verändern. Ich habe eingegeben

Feld.text:='Hallo';

doch es geschieht nichts...
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
650 Beiträge
 
Delphi 12 Athens
 
#6

Re: Text eines zur Laufzeit erstellten Editfeldes

  Alt 29. Jan 2010, 10:33
Dass du wahrscheinlich mit "FindComponent" weiterkommst, hat dir ja mkinzler schon geschrieben. Aber dein Codeschnipsel ist ansonsten auch sehr komisch:

Delphi-Quellcode:
var nr,name, anderername:string;
begin
     nr:=name;
Du fängst damit an, dass du der lokalen Variable "nr" den Wert der lokalen Variable "name" zuweist, die übrigens nicht initialisiert ist. Also erzeugst du eigentlich ziemliches Chaos...?

Danach löschst du, glaube ich, alles bis auf das letzte Zeichen...

Meinst du vielleicht eigentlich sowas hier:
nr:=(sender as TEdit).name[length((sender as TEdit).name)]; Das sollte dir das letzte Zeichen des Namens der Edit-Komponente in die Variable "nr" schreiben.

Bis denn
Bommel
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Text eines zur Laufzeit erstellten Editfeldes

  Alt 29. Jan 2010, 10:33
Was für einen Typ hat Feld?
Markus Kinzler
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
650 Beiträge
 
Delphi 12 Athens
 
#8

Re: Text eines zur Laufzeit erstellten Editfeldes

  Alt 29. Jan 2010, 10:36
Zitat von Delphi-Narr:
Wenn ich bei deiner Methode dann schreibe
showmessage(Feld.name);
dann kommt eine Fehlermeldung, eine Zugriffsverletzung. Ohne diese Zeile scheint es aber soweit zuklappen...
Die Zugriffsverletzung wirst du wahrscheinlich bekommen, weil FindComponent die Komponente nicht finden kann und deswegen "nil" zurcükliefert. Und das wird - wahrscheinlich! - der Fall sein, weil du den Namen der Edit-Komponente etwas eigenwillig ermittelst. Siehe mein voriger Beitrag.

Bis denn
Bommel
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Text eines zur Laufzeit erstellten Editfeldes

  Alt 29. Jan 2010, 10:44
Oh: Feld=Eingabe

Ich möchte sowohl den Teil "Name" haben, als auch den Teil 'Nummer'. Die ermittel ich dann, indem ich den Namen des Edits zweimal speicher und dann den nicht erwünschten Teil lösche. Ich kann auch versuchen, den Namen einmal festzulegen, sodass das Feld zu 100% existiert.
Die Ermittlung des Namens habe ich auch noch nicht fertig (Zweistellige Zahlen werden z.B. nicht berücksichtigt...)
Wenn ich den Namen richtig ermitteln kann, klappt es auch.

Ich denke damit wäre das Problem gelöst,
danke!
  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:25 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