Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Komponente in anderer Form finden (https://www.delphipraxis.net/106645-komponente-anderer-form-finden.html)

el_filigrano 14. Jan 2008 14:01


Komponente in anderer Form finden
 
hi,

mein problem ist folgendes: ich versuche ein edit in form1 zu finden, um den inhalt auszulesen. die procedure findet in form2 statt. ich bekomme allerdings immer eine fehlermeldung. folgende varianten habe ich probiert:

Code:
with form1 do name:=TEdit(findcomponent('name'+inttostr(j))).text;

...

name:=form1.TEdit(findcomponent('name'+inttostr(j))).text;
name --> string
j --> laufvariable, hier 1
das editfenster heißt name1

da ich mehrere edits auslesen muss, die alle nameX heißen, wollte ich das mit einer schleife und findcomponent machen, aber es geht noch nicht. habt ihr eine idee?

danke im voraus

DeddyH 14. Jan 2008 14:03

Re: Komponente in anderer Form finden
 
Zitat:

Zitat von el_filigrano
ich bekomme allerdings immer eine fehlermeldung.

Und welche?

el_filigrano 14. Jan 2008 14:10

Re: Komponente in anderer Form finden
 
Bei der ersten Variante bekomme ich das:

Code:
Benachrichtigung über Debugger-Exception

Im Projekt Project1.exe ist eine Exception der Klasse EComponentError aufgetreten. Meldung: '"Chievo Verona" ist kein gültiger Komponentenname'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Anm.: "Chievo Verona" ist der Inhalt von form1.name1.text

Bei der zweiten Variante meckert der Compiler:

Code:
(Fehler) Unit2.pas(88): Undefinierter Bezeichner: 'TEdit'

DeddyH 14. Jan 2008 14:16

Re: Komponente in anderer Form finden
 
Du hast aber die Unit stdctrls in Form2 eingebunden?

semo 14. Jan 2008 14:22

Re: Komponente in anderer Form finden
 
zum zweiten problem:

Delphi-Quellcode:
name:=TEdit(form1.findcomponent('name'+inttostr(j))).text;
form1.TEdit würde bedeuten du würdest auf die komponente TEdit im form1 zugreifen, da dies nicht existiert meckert der compiler.

el_filigrano 14. Jan 2008 14:29

Re: Komponente in anderer Form finden
 
@DeddyH: mit dem header kenne ich mich nicht so aus. in form1 und form2 steht jeweils oben folgendes:

Code:
...
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Grids, Math;
...
die units sind auch miteinander verknüpft etc.
oder fehlt da noch was?

@M.Hassmann: habe ich mir gedacht. hast du vielleicht eine idee?

DeddyH 14. Jan 2008 14:31

Re: Komponente in anderer Form finden
 
Steht doch da: das Form1 vor das FindComponent setzen.

semo 14. Jan 2008 14:32

Re: Komponente in anderer Form finden
 
genau das sollte doch die lösung deines problems sein:

Delphi-Quellcode:
name:=TEdit(form1.findcomponent('name'+inttostr(j))).text;

Nuclear-Ping 14. Jan 2008 14:34

Re: Komponente in anderer Form finden
 
1.) "Name" gibts auch als Eigenschaften von Form. Ich würde daher keine Variable nehmen, die "Name" heisst und dann mit "with Form do ..." arbeiten. Woher weißt du, dass du durch "Name := ..." nicht den Namen der Form ansprichst? Deswegen meckert er auch, dass "Chievo Verona" kein gültiger Komponentenname ist.

2.) Eigentlich müßte ...
Delphi-Quellcode:
strName := TEdit (Form1.FindComponent ('Name' + inttostr (j))).Text;
... funzen. Darfst halt nur nicht "Name" verwenden. Nimm lieber "strName".

el_filigrano 14. Jan 2008 14:35

Re: Komponente in anderer Form finden
 
bin blind^^

habe die zeile gar nicht wahrgenommen^^

es klappt.

vielen dank :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 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