AGB  ·  Datenschutz  ·  Impressum  







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

FindComponent funktioniert nicht mehr

Ein Thema von Tyler · begonnen am 31. Okt 2005 · letzter Beitrag vom 1. Nov 2005
Antwort Antwort
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#1

FindComponent funktioniert nicht mehr

  Alt 31. Okt 2005, 16:32
Seltsames Problem, hoffe ihr könnt mir auf die richtige Spur helfen:

In meiner Form gibts ein paar normale Editfelder. Z.B. ein Feld "ed_name1".
Dieses Feld spreche ich folgendermaßen an, um es zu füllen.
      (FindComponent('ed_name_' + IntToStr(i)) as TEdit).Text := Query.FieldByName('name_' + IntToStr(i) ).AsString; Das klappt wunderbar. Dann gibts ein Feld namens "ed_prgr1". Auch diesem versuche ich auf oben genannte Weise Text zuzuweisen.
      (FindComponent('ed_prgr' + IntToStr(j)) as TEdit).Text := Query.FieldByName( 'prgr' + IntToStr(j) ).AsString; Nur komisch: Das klappt nicht. Also erstell ich zum Testen ein neues Editfeld: "Edit1" und versuche diesem einmal direkt Text zuzuweisen:
(FindComponent('Edit1') as TEdit).Text := 'XgfhjhgjkX';
[delphi]

Klappt nicht. Und ich bin total verwirrt. Gibt es irgendeine Eigenschaft, die ich bei den Edit-Feldern aus Versehen geändert habe? Warum springen die erst genannten auf mein FindComponent an, die unteren aber nicht? Hilfe.

Danke im Voraus

Tyler
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#2

Re: FindComponent funktioniert nicht mehr

  Alt 31. Okt 2005, 16:44
Hi,

ich würde mit
Delphi-Quellcode:
if (FindComponent('Edit1') <> nil) then
  ShowMessage('Edit existiert')
else ShowMessage('Edit existiert nicht');
testen, ob das Control überhaupt existiert. Falls das der Fall ist, sollte eine einfache Zuweisung auf jeden Fall funktionieren.

cu
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: FindComponent funktioniert nicht mehr

  Alt 31. Okt 2005, 16:59
Hallo Tyler,

vielleicht hilft dir der Code aus diesem thread ein wenig weiter: klick

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: FindComponent funktioniert nicht mehr

  Alt 31. Okt 2005, 17:45
Du schreibst "es klappt nicht", wie du dir sicher denken kannst wissen wir damit auch nicht mehr. Es wäre also sinnvoll wenn du noch sagen kannst woran du erkennst das etwas nicht klappt. Kommt eine Fehlermeldung? Wenn FindComponent die Komponente nicht findet müsste eine AV kommen. Wenn dem nicht so ist funktioniert FindComponent und der Fehler liegt auf jeden fall wo anders.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#5

Re: FindComponent funktioniert nicht mehr

  Alt 1. Nov 2005, 14:49
Danke für eure Antworten:

@secure:
Hab mal eine IF-Abfrage eingebaut. Delphi scheint die Komponente ganz offensichtlich nicht zu finden.

@marabu:
Vielen Dank. Bin da mal rüber geflogen - hilft aber erstmal nicht viel weiter

@SirThonberry:
Sorry, ich hab mich tatsächlich etwas missverständlich ausgedrückt. Das Problem ist: Die gesuchte Komponente (das Editfeld) nimmt den Text nicht an. Nochmal zur Verdeutlichung:


Delphi-Quellcode:
    
    // HIER MAL EIN PAAR ZEILEN ÜBERHALB MEINER PROBLEM-ZEILEN GANZ UNTEN
    // HIER IST DIE WELT NOCH IN ORDNUNG, DIE EDIT-FELDER WERDEN
    // ORDNUNGSGEMÄß GEFÜLLT
    for i := 2 to 6 do
    begin
      (FindComponent('ed_name_ktk' + IntToStr(i)) as TEdit).Text := qFirmendt.FieldByName('name_ktk' + IntToStr(i) ).AsString;
      (FindComponent('ed_vorname_k' + IntToStr(i)) as TEdit).Text := qFirmendt.FieldByName('vorname_k' + IntToStr(i) ).AsString;
      (FindComponent('ed_telefon' + IntToStr(i)) as TEdit).Text := qFirmendt.FieldByName('telefon' + IntToStr(i) ).AsString;
      (FindComponent('ed_fax' + IntToStr(i)) as TEdit).Text := qFirmendt.FieldByName('fax' + IntToStr(i) ).AsString;
      (FindComponent('ed_bereich' + IntToStr(i)) as TEdit).Text := qFirmendt.FieldByName('bereich' + IntToStr(i) ).AsString;
      (FindComponent('ed_geburtdat' + IntToStr(i)) as TEdit).Text := qFirmendt.FieldByName('geburtdat' + IntToStr(i) ).AsString;
      (FindComponent('ed_funk' + IntToStr(i)) as TEdit).Text := qFirmendt.FieldByName('funk' + IntToStr(i) ).AsString;
      (FindComponent('ed_email' + IntToStr(i)) as TEdit).Text := qFirmendt.FieldByName('email' + IntToStr(i) ).AsString;
    end; // FOR TO


    // ZUM TESTEN MAL NE IF-ABFRAGE - KEIN ERFOLG, KEINE MESSAGE.
    // ES GIBT ABER EIN FELD "EDIT2" -
    // ICH MACH GERNE N SCREENER VON DER FORM; WERS NICHT GLAUBT :D
    if (FindComponent('Edit2')) <> nil then ShowMessage('DA IS SIE');
    // NOCH N TEST MIT DER BESAGTEN KOMPONENTE, AUCH HIER BLEIBT
    // DAS EDIT-FELD LEER
    (FindComponent('Edit2') as TEdit).Text := ' TEST TEST ';
    // HIER DIE EIGENTLICH SCHLEIFE, SIE SOLL 30-EDITFELDER FÜLLEN
    // WAS SIE ABER WIE GESAGT NICHT TUT. FEHLERMELDUNGEN GIBTS AUCH NICHT
    for j := 1 to 30 do
    begin
      (FindComponent('ed_prgr' + IntToStr(j)) as TEdit).Text := 'XX'; //qFirmendt.FieldByName( 'prgr' + IntToStr(j) ).AsString;
    end; // FOR TO
Ihr versteht? Exakt die gleichen Bedingungen, genau die gleiche Schleifen, der gleiche Algo - aber es funktioniert einfahc nicht: Die Edit-Felder, die in der letzten, unteren FOR-TO-Schleife angesprochen werden bleiben hartnäckig leer. Und ich raufe mir hier die Haare und zweifel schon an meiner Zurechnungsfähigkeit.

tyler

//EDIT

Ich glaub ich habs, bin aber noch ungläubig.
Die o.g. FOR-TO-Schleifen laufen selber in einm übergeordneten WITH FORM2 DO BEGIN ... END, da die Query "qFirmendt" auf der FORM2 liegt. Ich hab nun einfach den WITH-DO-Bereich vorher beendet, und das FORM2 direkt vor QFIRMENDT geschrieben. Das klappt. KOmisch bleibt trotzdem und weiterhin, dass die Felder davor, die ja auch in dem Bereich lagen, angesprochen wurden! Naja. Um eine Erfahrung reicher.
  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 19:28 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