Erstmal: benennt man natürlich seine Komponenten so, dass sie einem sagen, was sie machen.
.Name ist direkt
ein Komponentenname.
Bei .GetNamePath muß man aufpassen, denn es können mehrere Namen sein.
Nochmal: Warum Strings, wenn du schon ein Objekt hast?
Bei Namen mußt du nunmal auf Groß-/Kleinschreibung achten,
ODER man vergleicht case-insensitiv.
->
=
aka
SameStr versus
SameText
"TabSheet1" gibt es bestimmt als Variable/Feld in der Form-Klasse.
Im QuellCode (z.B. bei Variablen) ist Groß-/Kleinschreibung egal.
Außerdem werden Objektinstanzen optimaler, schneller und vorallem fehler
unanfälliger verglichen, als irgendwelche komische Strings.
Dann knallt auch der Compiler wunderschön, wenn es diese Variable garnicht
mehr gibt, z.B. weil jemand diese Komponente entlich mal ordentlich benannt hat.
Und zusätzlich kann man mit einem Objektzeiger soooooooooo schön viele coole Dinge anfangen, was mit einem dummen String nicht so geht.
Delphi-Quellcode:
//var clickedTab: TComponent;
clickedTab := TComponent(msg.LParam).Owner;
if clickedTab = TabSheet1 then TabSheet1.TabVisible := False;
if clickedTab = TabSheet2 then TabSheet2.TabVisible := False;
if clickedTab = TabSheet3 then TabSheet3.TabVisible := False;
//if clickedTab = TabSheet1 then VERSUS if clickedTab.Name = 'TabSheet1' then
Delphi-Quellcode:
clickedTab := TComponent(msg.LParam).Owner;
if (clickedTab = TabSheet1) or (clickedTab = TabSheet2) or (clickedTab = TabSheet3) then
TTabSheet(clickedTab).TabVisible := False;
Delphi-Quellcode:
clickedTab := TComponent(msg.LParam).Owner;
if clickedTab is TTabSheet then
TTabSheet(clickedTab).TabVisible := False;