![]() |
Function ComponentByName
Hallo Wissende,
ich kann mich leider nicht mehr so recht an die Sprache erinnern, weiss aber, dass ich schon mal ne Programmiersprache benutzt habe, in der es eine fertige Funktion ala ComponentByName gab. Ich habe mich mal daran versucht und möchte eigentlich nur wissen, ob das so in Ordnung ist:
Delphi-Quellcode:
function ComponentByName(str_Name:String):TControl;
var i:integer; begin Result:=nil; with form2 do for i:= 0 to ComponentCount-1 do begin if Components[i].Name = str_Name then begin Result := (Components[i] as TControl); break; end; end; end; |
Re: Function ComponentByName
Die TForm-Klasse hat die Methode .FindComponent .bzw. .FindControl, die das selbe macht.
|
Re: Function ComponentByName
Ich Blindfuss! Danke für den Hinweis. Wenn ich könnte, würde ich den Thread gleich löschen, oh wie peinlich... :oops:
Auf der anderen Seite: Ich erhalte ja TComponent als Ergebnis, möchte aber checken, ob das Control Visible ist...muss ich da erst noch as TControl draus machen??? |
Re: Function ComponentByName
Moin torud,
es gibt zwar die Funktion FindComponent, aber wenn Du das unbedingt selber lösen möchtest, dann ist so in Ordnung. Ich würde allerdings entweder TComponent zurückgeben, also
Delphi-Quellcode:
oder vor der Rückgabe prüfen, ob es sich (mindestens) um ein TControl handelt, also
function ComponentByName(str_Name: String) : TComponent;
Delphi-Quellcode:
Zusätzlich würde ich persönlich das ganze noch CaseInSensivitve machen z.B. mit (Ansi)UpperCase:
if (Components[i] is TControl)
and (...) then
Delphi-Quellcode:
if AnsiUpperCase(Components[i].Name) = AnsiUpperCase(str_Name) then
Grüsse ...Doc |
Re: Function ComponentByName
Zitat:
|
Re: Function ComponentByName
FindControl finde ich etwas zu kompliziert, da es ein Handle als Parameter erwartet. Den von FindComponent zurückgegebenen Wert mußt Du (mindestens) als TControl() ansprechen, da es "vorher" (also in TComponent) die Eigenschaft "Visible" noch nicht gibt.
Grüsse ...Doc |
Re: Function ComponentByName
Vielen Dank für die Infos. Ich nutze nun meine Funktion, mit den erwähnten Verbesserungsvorschlägen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 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