[B+] Tabstopps

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Xenon

Betreff: [B+] Tabstopps

BeitragDo, Sep 23, 2004 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, viel Spaß damit =)

Ist vllt. noch etwas erweiterbar oder an persönliche Wünsche anpassbar, aber das macht ihr schön selbst

[syntax="bb":1:bd59d39e8e]Const buttonsize = 25

; Type für die Gadgets, bei denen ein Tabstopp gemacht wird
Type tab_gadget
Field ghandle, hwnd
End Type

; Fenster und Buttons erstellen
window = CreateWindow("Test", 200, 200, 200, 200, Desktop(), 1)

xcount = ClientWidth(window)/buttonsize-1
ycount = ClientWidth(window)/buttonsize-1

Dim buttons(xcount, ycount)

For j=0 To ycount
For i=0 To xcount
buttons(i, j) = CreateButton(j*xcount+i+1, i*buttonsize, j*buttonsize, buttonsize, buttonsize, window)
; Button zu den Tabstopps geben
CreateTabGadget(buttons(i, j))
Next
Next

; Tab Key als HotKeyEvent
HotKeyEvent 15, 0, $110

Repeat
Select WaitEvent()
Case $110
; Jetzt wird ein Tab gedrückt
TabPressed()
Case $401
; Buttonnummer ausgeben
For i = 0 To xcount
For j = 0 To ycount
If EventSource() = buttons(i, j) Then Notify j*xcount+i+1
Next
Next
Case $803
End
End Select
Forever

; Gadget hinzufügen zu der Tabstopliste, der Parameter bef ist zum einfügen vor einem anderen Gadget
Function CreateTabGadget(ghandle, bef = 0)
Local t.tab_gadget, f.tab_gadget

; Tab erstellen
t.tab_gadget = New tab_gadget
t\ghandle = ghandle
t\hwnd = QueryObject(ghandle, 1)

; Wenn Parameter bef übergeben wurde
If bef Then
; Suche Gadget und Füge davor ein
For f.tab_gadget = Each tab_gadget
If f\ghandle = ghandle Then
Insert t Before f.tab_gadget
Return 0
End If
Next
End If
End Function

; Gadget aus der Tabstoppliste entfernen
Function FreeTabGadget(ghandle)
Local t.tab_gadget

For t.tab_gadget = Each tab_gadget
If t\ghandle = ghandle Then
Delete t
End If
Next
End Function

; Tab wurde gedrückt
Function TabPressed()
Local hwnd, i, n
Local t.tab_gadget, f.tab_gadget

; Gadget finden das den Focus hat
hwnd = GetFocus()
t = Null

n = 0
i = 0

; Wenn der aktuelle Tabgadget in der Liste ist, den nächsten auswählen
For f.tab_gadget = Each tab_gadget
i = i + 1
If f\hwnd = hwnd Then
t.tab_gadget = After f.tab_gadget
n = i
End If
Next

; Aktiver Gadget wurde nicht gefunden --> Erster Gadget in der Tabliste wird ausgewählt
If i > 0 Then
If (n = i) Or (t = Null) Then
t = First tab_gadget
End If

; Fokus setzen
SetFocus t\hwnd
End If
End Function[/syntax:1:bd59d39e8e]
  • Zuletzt bearbeitet von Xenon am Fr, Sep 24, 2004 18:54, insgesamt einmal bearbeitet
 

morszeck

BeitragFr, Sep 24, 2004 7:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst du mal den Quelltext dokumentieren? Sonst ist der Quellcode sinnlos...
WinXpProf&SP2, B3D V1.88, B+ V1.40, BMax101Beta, AMD TB1.4GHz, DDR266/768MB, GeForce3@64MB

Xenon

BeitragFr, Sep 24, 2004 18:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich weis nicht was da nicht verständlich is, für mich liest sich dieser einfache Code wie ein Bilderbuch, aber ich hab mal ein paar Kommentare hinzugefügt...

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group