Einzelnen Beitrag anzeigen

Benutzerbild von Tyler
Tyler

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

Re: FindComponent funktioniert nicht mehr

  Alt 1. Nov 2005, 13: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