Kann mir jemand sagen wo man MDI Gadget Tourials findet ich finde immer nur den Gadget Grundkurs und eine kurze erklärung in der Help Datei von PB
Wenn mir jemand helfen könnte wäre das nett!
Danke!!
MfG
Unix
MDI Gadget Tourials
Klaro, ich hab mich gleich hingesetzt und eins geschrieben - hoffentlich hilfts (=
Code: Alles auswählen
; <------------------------------------------------------------------->
; < MDI-Samplecode >
; < 2005 by BitHero (AVGP) >
; <------------------------------------------------------------------->
; Dieser Samplecode ist keine besonders sinnvolle Anwendung, zeigt aber
; sehr gut den Umgang mit MDI-Gadgets und den enthaltenen ChildWindows!
; Wir werden ein rahmenloses Fenster (#PB_Window_Borderless) öffnen,
; das genausogroß ist, wie der gesamte Bildschirm und zwar egal welche
; Auflösung das System zur Zeit fährt. Daher wird die Breite und Höhe
; des Fensters durch GetSystemMetrics_(#SM_CXSCREEN) bzw. #SM_CYSCREEN
; diese Funktion gibt uns die Breite (#SM_CXSCREEN) und die Höhe
; (#SM_CYSCREEN) in Pixeln zurück, die dann dem Fenster direkt als
; Parameter für Höhe und Breite übergeben werden.
; Wir werden nur ein Menü (wir benötigt!) und ein MDI-Gadget auf dem Fenster haben.
; Warum benötigen wir ein Menü?? Ganz einfach: PB's MDI-Gadget wird wie folgt initialisiert:
; MDIGadget(#Gadget,x,y,Breite,Höhe,UnterMenü,MenüEintrag) schauen wir uns die letzten 2 Parameter an:
; Untermenü: Eine mittels MenuTitle(Titel$) erstellte Menükategorie (die erste hat die nummer 0)
; MenüEintrag: Die erste MenuID()-Nummer, von der aus MDI-Gadget arbeitet....und zwar so...
; Wird dem MDIGadget ein Childwindow ( AddGadgetItem(...) ) hinzugefügt, so setzt MDIGadget autom.
; einen Trennbalken an das Ende des UnterMenü-Eintrags und fügt ihm ein Element hinzu, welches von MenüEintrag
; aufwärts fortlaufende MenuIDs bekommt.
; Verstanden? Hier ein Beispiel...
; Wir wollen in unserem Menü 2 Kategorien haben: "Datei" und "Hilfe"
; Unter "Datei" findet man zunächst nur "Ordner wählen" und "Beenden", unter "Hilfe" findet man "über"
; Klickt man nun auf "Datei"->"Ordner wählen" erscheint ein Pfadauswahldialog indem man einen Pfad auswählen kann.
; Anschließend werden alle *.jpg Dateien in diesem Verzeichnis zum MDIGadget als ein ChildWindow hinzugefügt....
; Wir werden nun unter "Datei" auch noch einen Trennbalken und einen Eintrag mit den einzelnen Titeln der ChildWindows
; vorfinden! Der Einfachheit halber werden die ChildWindows aber leer bleiben, nur die Titelzeile wird den jeweiligen
; Dateinamen tragen...wem das nicht passt, der schreibt mir eine EMail an manaware@graffiti.net und ich schicke ihm
; einen vollständigen Code, okay?! Gut. (=
; Los gehts!
;Damit wir JPEGs öffnen können...
UseJPEGImageDecoder()
;...jetzt unser Fenster; wie besprochen der Bildschirmauflösung entsprechend...
hWnd=OpenWindow(0,0,0,GetSystemMetrics_(#SM_CXSCREEN),GetSystemMetrics_(#SM_CYSCREEN),#PB_Window_Borderless,"JPEG-Viewer")
;Und unser Menü muss her...
CreateMenu(0,hWnd)
;Nun die "Datei"-Kategorie
MenuTitle("&Datei")
;Die beiden Standarteinträge...
MenuItem(0,"&Ordner wählen")
MenuItem(1,"&Beenden")
;Jetzt noch schnell die "Hilfe"-Kategorie
MenuTitle("&Hilfe")
;mit dem Eintrag...
MenuItem(2,"über")
;Jetzt haben wir alle MenüEinträge von 0 bis (inklusive) 2 belegt und UnterMenü nummern von 0 und 1.
;Klaro,gell?
;Nun zum tollen Teil: Dem vielbesagten Gadget...
CreateGadgetList(hWnd)
MDIGadget(0,0,0,WindowWidth(),WindowHeight()-MenuHeight(),0,3) ;Ich war zu faul die langen API-Funktionen hier einzutippen, ginge genauso!
;Jetzt ist das schlimmste geschafft...wir haben das MDIGadget #0, welches das gesamte Fenster (außer das Menü) beansprucht und seine Einträge
;ab Nr. 3 in die Kategorie "Datei" macht...
;Jetzt noch die Prozedur, um mit dem Menüevent umzugehen
Procedure HandleMenuEvent()
Select EventMenuID() ; Welchen Eintrag hats denn erwischt?
Case 0 ; Ordner wählen und öffnen...
Path$=PathRequester("Wählen sie einen Pfad:","")
If Path$<>"" ; es wurde NICHT abgebrochen
ExamineDirectory(0,Path$,"*jpg") ;Alle *.jpg Dateien des Ordners durchgehen
While NextDirectoryEntry() ;solange es noch eine gibt
AddGadgetItem(0,-1,DirectoryEntryName()) ; Ein neues ChildWindow mit dem Namen der Datei als Titel!
Wend
EndIf
Case 1 ; Beenden
CloseWindow(0)
End
Case 2 ;Info anzeigen
MessageRequester("Über:","Die ist ein Beispielcode mit MDIGadget!"+Chr(13)+"by BitHero (AVGP)",#MB_IconInformation) ; eine Info ausgeben
EndSelect
;Alles andere interessiert hier mal nicht...
EndProcedure
;Unsere Hauptschleife kann nun loslegen!
Repeat
Select WindowEvent() ;Prüfen was Sache ist!
Case #PB_Event_Menu
HandleMenuEvent()
Default ;Entweder es gab nichts oder es interessiert uns nicht!
Delay(20) ;Wir wollen ja nicht 100% der Prozessorpower...
EndSelect
ForEver
while true
return false;
wend
return false;
wend