AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Dynamisch Erzeugte Frames finden

Ein Thema von jacky213 · begonnen am 28. Jun 2019 · letzter Beitrag vom 29. Jun 2019
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#11

AW: Dynamisch Erzeugte Frames finden

  Alt 29. Jun 2019, 10:44
Einfache Antwort: Gib dem Frame einen eindeutigen Namen, dann funktioniert FindComponent auch damit.
Das funktioniert auch nur dann, wenn die Form auch der Owner ist.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Dynamisch Erzeugte Frames finden

  Alt 29. Jun 2019, 11:34
Allerdings kann ich schon sagen, dass ich den dynamischen Frame schon einen Namen zugewiesen habe und dieser nach dem erzeugen auf Form 1 immer noch nicht über FindComponent Schleife zu finden ist.
FindComponennt ist ja auch eine Funktion und kein Schleifenzähler. Alles, was die tut: sie durchsucht einen angegebenen Container nach einer bestimmten Komponente. ZB. so:
Delphi-Quellcode:
function TFormFoo.Searchcomponent(Value: TObject):TObject;
var i: integer; Finded: TComponent;
begin
  For i := 0 to Self.ComponentCount -1 do
  begin
    if Self.Components[i].Name = Value.Name then
      Result := Self.Compoents[i];
  end;
end;
Kurze Zusatzfrage. Ich habe eine kleine Funktion welche den Namen des Frames zurückgeben sollte wenn ein Button (befindet sich auf dem frame) gedrückt wird. Leider gibt dieser nichts zurück.

Delphi-Quellcode:
function GetFrameName : String:
Begin
Result := TFrame(self).Name;
end;
Kann ja auch nicht. Erst muss TFrame(self).Name auch etwas zugewiesen werden.
Du solltest dies aber so erreichen können:
Delphi-Quellcode:
function TFormFoo.Searchcomponent(Value: TObject):TObject;
var i: integer; [s]Finded: TComponent[/s];
begin
  For i := 0 to Self.ComponentCount -1 do
  begin
    if Self.Components is TFrame then
    begin
    if Self.Components[i].Name = Value.Name then
      Result := Self.Compoents[i];
    end;
  end;
end;

function TFormFoo.GetFrameName((Value: String) : String:
  var Value: TFrame;
Begin
ComponentName := Searchcomponent(Value)
Result := TFrame(self).Name;
end;
Statt in Searchcomponent alle Components zu durchlaufen, könntest du da auch Findkomponent aufrufen und dessen Rückgabewert auswerten. Allerdings hättest du mit Searchcomponent viel mehr Möglichkeiten. Du könntest in einem weiteren Parameter den Container angeben, der durchsucht werden soll oder in einer Liste alle Komponenten eines bestimmten Tips zurückgeben oder ...

Gruss
Delbor

PS: Da ich selbst FindComponent nie verwende, ist mir ein wesentlicher Schitzer unterlaufen: FindComponent ist keine eigenständige Funktion, sondern ein Methode von TPanel und Co. und damit ist der Container, der durchsucht werden soll, schon angegeben.
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (29. Jun 2019 um 11:55 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Dynamisch Erzeugte Frames finden

  Alt 29. Jun 2019, 11:38
Hi Uwe Raabe

Einfache Antwort: Gib dem Frame einen eindeutigen Namen, dann funktioniert FindComponent auch damit.
Das funktioniert auch nur dann, wenn die Form auch der Owner ist.
Seit wann denn das? ich dachte immer, FindComponent findet Komponenten in einem angegeben Container...

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (29. Jun 2019 um 11:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#14

AW: Dynamisch Erzeugte Frames finden

  Alt 29. Jun 2019, 14:43
Seit wann denn das? ich dachte immer, FindComponent findet Komponenten in einem angegeben Container...
Das ist richtig! FindComponent ist ja eine Funktion dieses Containers.

Aus dem Eingangspost ist aber zu erkennen, daß FindComponent eben auf die Form angewendet wird. Somit können auch nur Komponenten gefunden werden, bei denen die Form der Owner ist.

wie findet man Dynamisch erzeugte Frames auf einer Form?

im Normalfall mache ich das mit for i := 0 to FindComponent... und sofern ich den Frame über Delphi auf die Form lege funktioniert das auch.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:06 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