[BlitzPlus] Easy Tabber

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Xaymar

ehemals "Cgamer"

Betreff: [BlitzPlus] Easy Tabber

BeitragFr, Dez 11, 2009 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Easy Tabber ist eine Funnktionssammlung, um sich das arbeiten mit Tabbern zu erleichtern.

Funktionen:
Zitat:
ETab = ET_Add( Tabber ) - Erstellt einen neuen ETabber Eintrag.
Suc = ET_AddGadget( ETab, Gadget, TabID ) - Fügt ein neues Gadget zu [ETab] hinzu.
Suc = ET_Remove( Tabber ) - Entfernt alle ETabs die [Tabber] benutzen.
Suc = ET_RemoveGadget( ETab, Gadget ) - Entfernt alle einträge in [ETab] die das Gadget [Gadget] betreffen.
ET_UpdateTabber( Optimize ) - Aktualisiert die Tabber. Mit [Optimize] könnt ihr angeben, ob die Type sortiert werden soll.
ET_Sort( ) - Sortiert die Tabber-Gadget Liste.


Variablen:
Zitat:
ET_FreeRemovedTabber - Wenn ETabber gelöscht werden, sollen die angehörigen Objekte gelöscht werden(Tabber, Gadgets)?
ET_FreeRemoved - Wenn Gadgets aus ETabbern entfernt werden, sollen die Gadgets gelöscht werden?
ET_LastOptimize - Letzte Sortierung der Type
ET_WaitOptimize - Wartezeit zwischen Sortierungen


Code:
BlitzBasic: [AUSKLAPPEN]
;Variables
Type ET_Tabber
Field hTabber
Field MaxshowID
End Type

Type EG_Gadget
Field hGadget
Field showID
Field ET.ET_Tabber
End Type

Type EG_Sort_Gadget
Field hGadget
Field showID
Field ET.ET_Tabber
End Type

Global ET_FreeRemovedTabber = True ;Wenn ETabber gelöscht werden, sollen die angehörigen Objekte gelöscht werden(Tabber, Gadgets)?
Global ET_FreeRemoved = True ;Wenn Gadgets aus ETabbern entfernt werden, sollen die Gadgets gelöscht werden?
Global ET_LastOptimize = MilliSecs() ;Letzte Sortierung der Type
Global ET_WaitOptimize = 5*1000 ;Wartezeit zwischen Sortierungen

;Functions
Function ET_Add(hTabber)
If hTabber <> 0
ET.ET_Tabber = New ET_Tabber
ET\hTabber = hTabber
Return Handle(ET.ET_Tabber)
EndIf
Return False
End Function

Function ET_AddGadget(ETI, hGadget, showID)
Local ET.ET_Tabber = Object.ET_Tabber(ETI)
If ET <> Null And hGadget <> 0
If showID > ET\MaxshowID Then ET\MaxshowID = showID

EG.EG_Gadget = New EG_Gadget
EG\hGadget = hGadget
EG\showID = showID
EG\ET = ET
Return True
EndIf
ET_UpdateTabber()
Return False
End Function

Function ET_Remove(hTabber)
Local ET.ET_Tabber, EG.EG_Gadget
For EG = Each EG_Gadget
If EG\ET\hTabber = hTabber
If ET_FreeRemovedTabber = True Then FreeGadget EG\hGadget
Delete EG.EG_Gadget
EndIf
Next
For ET = Each ET_Tabber
If ET\hTabber = hTabber
Delete ET.ET_Tabber
EndIf
Next
If ET_FreeRemovedTabber = True Then FreeGadget hTabber
End Function

Function ET_RemoveGadget(ETI, hGadget)
Local ET.ET_Tabber = Object.ET_Tabber(ETI),EG.EG_Gadget = Null,ET_GG_Count = 0
For EG = Each EG_Gadget
If EG\ET = ET
If EG\hGadget = hGadget
If ET_FreeRemoved = True Then FreeGadget EG\hGadget
Delete EG
ET_GG_Count = ET_GG_Count + 1
EndIf
EndIf
Next
Return ET_GG_Count
End Function

Function ET_UpdateTabber(Optimize = False)
Local ET.ET_Tabber = Null,EG.EG_Gadget = Null
If Optimize = True And MilliSecs()-ET_LastOptimize > ET_WaitOptimize
ET_Sort()
EndIf

For ET = Each ET_Tabber
ET_Selected = SelectedGadgetItem(ET\hTabber)
For EG = Each EG_Gadget
If ET = EG\ET And EG\showID = ET_Selected
ShowGadget EG\hGadget
EnableGadget EG\hGadget
ElseIf ET = EG\ET And EG\showID <> ET_Selected
HideGadget EG\hGadget
DisableGadget EG\hGadget
EndIf
Next
Next
End Function

Function ET_Sort()
Local ET.ET_Tabber,EG.EG_Gadget,ESG.EG_Sort_Gadget
For ET = Each ET_Tabber
For showID = 0 To ET\MaxshowID
For EG = Each EG_Gadget
If EG\ET = ET And EG\showID = showID
ESG = New EG_Sort_Gadget
ESG\ET = EG\ET
ESG\hGadget = EG\hGadget
ESG\showID = EG\showID
EndIf
Next
Next
Next
Delete Each EG_Gadget
For ESG = Each EG_Sort_Gadget
EG = New EG_Gadget
EG\ET = ESG\ET
EG\hGadget = ESG\hGadget
EG\showID = ESG\showID
Next
ET_LastOptimize = MilliSecs()
End Function


Beispiel:
BlitzBasic: [AUSKLAPPEN]
;Variables
Type ET_Tabber
Field hTabber
Field MaxshowID
End Type

Type EG_Gadget
Field hGadget
Field showID
Field ET.ET_Tabber
End Type

Type EG_Sort_Gadget
Field hGadget
Field showID
Field ET.ET_Tabber
End Type

Global ET_FreeRemovedTabber = True ;Wenn ETabber gelöscht werden, sollen die angehörigen Objekte gelöscht werden(Tabber, Gadgets)?
Global ET_FreeRemoved = True ;Wenn Gadgets aus ETabbern entfernt werden, sollen die Gadgets gelöscht werden?
Global ET_LastOptimize = MilliSecs() ;Letzte Sortierung der Type
Global ET_WaitOptimize = 5*1000 ;Wartezeit zwischen Sortierungen

;Functions
Function ET_Add(hTabber)
If hTabber <> 0
ET.ET_Tabber = New ET_Tabber
ET\hTabber = hTabber
Return Handle(ET.ET_Tabber)
EndIf
Return False
End Function

Function ET_AddGadget(ETI, hGadget, showID)
Local ET.ET_Tabber = Object.ET_Tabber(ETI)
If ET <> Null And hGadget <> 0
If showID > ET\MaxshowID Then ET\MaxshowID = showID

EG.EG_Gadget = New EG_Gadget
EG\hGadget = hGadget
EG\showID = showID
EG\ET = ET
Return True
EndIf
ET_UpdateTabber()
Return False
End Function

Function ET_Remove(hTabber)
Local ET.ET_Tabber, EG.EG_Gadget
For EG = Each EG_Gadget
If EG\ET\hTabber = hTabber
If ET_FreeRemovedTabber = True Then FreeGadget EG\hGadget
Delete EG.EG_Gadget
EndIf
Next
For ET = Each ET_Tabber
If ET\hTabber = hTabber
Delete ET.ET_Tabber
EndIf
Next
If ET_FreeRemovedTabber = True Then FreeGadget hTabber
End Function

Function ET_RemoveGadget(ETI, hGadget)
Local ET.ET_Tabber = Object.ET_Tabber(ETI),EG.EG_Gadget = Null,ET_GG_Count = 0
For EG = Each EG_Gadget
If EG\ET = ET
If EG\hGadget = hGadget
If ET_FreeRemoved = True Then FreeGadget EG\hGadget
Delete EG
ET_GG_Count = ET_GG_Count + 1
EndIf
EndIf
Next
Return ET_GG_Count
End Function

Function ET_UpdateTabber(Optimize = False)
Local ET.ET_Tabber = Null,EG.EG_Gadget = Null
If Optimize = True And MilliSecs()-ET_LastOptimize > ET_WaitOptimize
ET_Sort()
EndIf

For ET = Each ET_Tabber
ET_Selected = SelectedGadgetItem(ET\hTabber)
For EG = Each EG_Gadget
If ET = EG\ET And EG\showID = ET_Selected
ShowGadget EG\hGadget
EnableGadget EG\hGadget
ElseIf ET = EG\ET And EG\showID <> ET_Selected
HideGadget EG\hGadget
DisableGadget EG\hGadget
EndIf
Next
Next
End Function

Function ET_Sort()
Local ET.ET_Tabber,EG.EG_Gadget,ESG.EG_Sort_Gadget
For ET = Each ET_Tabber
For showID = 0 To ET\MaxshowID
For EG = Each EG_Gadget
If EG\ET = ET And EG\showID = showID
ESG = New EG_Sort_Gadget
ESG\ET = EG\ET
ESG\hGadget = EG\hGadget
ESG\showID = EG\showID
EndIf
Next
Next
Next
Delete Each EG_Gadget
For ESG = Each EG_Sort_Gadget
EG = New EG_Gadget
EG\ET = ESG\ET
EG\hGadget = ESG\hGadget
EG\showID = ESG\showID
Next
ET_LastOptimize = MilliSecs()
End Function

;Sample
Win = CreateWindow("Easy Tabber Testing", 100, 100, 400,400, Desktop(), 32+1+2)
Tab = CreateTabber(0,0,400,400,Win)

TabI = ET_Add(Tab)

For A = 0 To 15
AddGadgetItem(Tab, "Tab "+A)
For B = 0 To 4
hBut = CreateButton("Button "+(B+A*5), B*80, A*20, 80,20,Tab)
ET_AddGadget(TabI, hBut, A)
Next
Next

Repeat
windowevent = WaitEvent()
Select windowevent
Case $803
End
Case $401
If EventSource() = Tab
ET_UpdateTabber(True)
Else
ET_RemoveGadget(TabI, EventSource())
EndIf
End Select
Forever
Warbseite

ozzi789

BeitragFr, Dez 11, 2009 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht schlecht!
Werd ich sicher mal brauchen können, thnx
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group