Das mal ein echter Millimeter******!

@FCKW & nic:
Ihr verpeilt es immer noch.

Das Argument von FCKW war das er den Tab-Namen vorher in die Variable 'Tabname' zwischenspeichert um nicht ständig UCase() aufrufen zu müssen. Es dann aber trotzdem in der FOR/NEXT Schleife kontinuierlich mit GetGadgetItemText() verwendet. Entweder beide zwischenspeichern oder nicht, sonst ist es (wie ich bereits sagte) jack in die Hose.
Wenn man sich aber schon groß auf Optimierung beruft müssten GetGadgetItemText() und CountGadgetItems() ebenfalls ausgelagert werden:
Code: Alles auswählen
Procedure GetPanelTabIndexByName(Gadget,TabName.s)
Protected i, Result = -1, ItemsNum, ItemName
If IsGadget(Gadget) And GadgetType(Gadget) = #PB_GadgetType_Panel
ItemsNum = CountGadgetItems(Gadget) - 1
TabName = UCase(TabName)
ItemName = UCase(GetGadgetItemText(Gadget,i))
For i = 0 To ItemsNum
If ItemName = TabName : Result = i : Break : EndIf
Next
EndIf
ProcedureReturn Result
EndProcedure
