Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#36

AW: PageControl - Tabs um Schließen-Symbol erweitern

  Alt 17. Feb 2023, 18:54
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 Delphi-Referenz durchsuchenSameStr versus Delphi-Referenz durchsuchenSameText

"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 fehlerunanfä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;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (17. Feb 2023 um 19:01 Uhr)
  Mit Zitat antworten Zitat