AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi verschiedene Komponenten einer Form ansprechen klappt nicht
Thema durchsuchen
Ansicht
Themen-Optionen

verschiedene Komponenten einer Form ansprechen klappt nicht

Ein Thema von fabiO · begonnen am 9. Feb 2006 · letzter Beitrag vom 9. Feb 2006
Antwort Antwort
fabiO

Registriert seit: 5. Dez 2004
Ort: Jena
41 Beiträge
 
Delphi 6 Personal
 
#1

verschiedene Komponenten einer Form ansprechen klappt nicht

  Alt 9. Feb 2006, 20:45
Hallo,

Bei meinem Programm gibts ein Problem mit der FindComponent Funktion.
Ich habe eine MainForm ( Form1 ) in welche ich mit { $INCLUDE AndereDatei.inc } ausgelagerten Code einfüge.

So nun habe ich eine Datei, in welcher in einige Komponenten, um genau zu sein 7 TImages, ansprechen will. Dies hab ich mit einer for-schleife und einem variablen String gemacht, wobei ich eine Variable xComponent ( : TComponent ) benutze, um nen EAccessVio. abzufangen...

Delphi-Quellcode:
    for i := 1 to 7 do
    begin
      name1 := ('Image'+IntToStr(i));
      xComponent := Application.FindComponent(name1);

      if not Assigned(xComponent) then Exit;
      if ((xComponent as TImage).Hint = 'Nix') then
      begin
        (xComponent as TImage).Picture.LoadFromFile('Bild.bmp');
        (xComponent as TImage).Hint := 'Voll';
      end;
   end;
So das Problem ist nun, dass ich ja, wenn ich in dieser ausgelagerten Datei auf Komponenten des MainForms zugreifen will, immer zuerst z.B. Form1.Label1 verwenden muss.
Und hier liegt mein Problem. Ich hab schonmal probiert, TForm1.Classname vor die FindComponent Funktion zu setzen, sprich ...

xComponent := Application.FindComponent(TForm1.ClassName + '.' + name1) ... aber das hat auch nich geklappt, genauso wenig wie 'with Form1 do' davor zu setzen
kann mir da ma jemand helfen... dankeschön

Gruß fabiO
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: verschiedene Komponenten einer Form ansprechen klappt ni

  Alt 9. Feb 2006, 20:52
TForm1.ClassName geht logicher Weise nicht da TForm1 eine Klasse ist, und eine Klasse hat logicher weise auch keine childinstanzen, es kann nur eine instanz childinstanzen haben. Denn die Klasse representiert nur eine Struktur aber nicht den angeforderten Speicher.

Funktioniert eigentlich Application.FindComponent? Ich hätte getippt das es fehl schlägt weil du vermutlich bei keinem Create einer Komponente die ApplicationInstanz als Owner übergibst.

Wenn du per Designer dinge auf ein Form gepackt hast kannst du innerhalb der Klasse mit
"[Self].FindComponent" auf diese drauf gepackten Komponenten zugreifen, und außerhalb der Klasse mit "FormInstanz.FindComponent" auf die drauf gepackten Komponenten zugreifen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
fabiO

Registriert seit: 5. Dez 2004
Ort: Jena
41 Beiträge
 
Delphi 6 Personal
 
#3

Re: verschiedene Komponenten einer Form ansprechen klappt ni

  Alt 9. Feb 2006, 20:56
hast recht, wenn ich nochma drüber nachdenk...
bin grade zufällig auch auf ne andere möglichkeit gestoßen...

(xComponent := (Form1.FindComponent(name1)); Naja danke dafür, hat sich ja schnell erledigt
  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:55 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