Hi, ich habe mal meine ganzen Sources per Suche aus dem Codearchiv extrahiert und in PB4 soweit angepasst und Andrè zugeschickt.
Es wäre sehr schön, wenn sich hier noch mehr beteiligen, damit das Codearchiv auf den neusten
Stand von PB4 kommt
Hoffentlich habe ich nichts vergessen

.
Gruß Falko
Folgende Sources laufen jetzt auf PB4:
\File_Read+Write\WriteFileToTempDir.pb
Code: Alles auswählen
; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=3167&highlight=
; Author: Falko
; Date: 17. December 2003
; Write a file to the TEMP directory
; Schreibt eine Datei ins TEMP-Verzeichnis
; Path.s = Space (1000)
; GetTempPath_(1000,@Path)
Path.s=GetTemporaryDirectory() ; changed the API with PB4 commands
If ReadFile(0, Path+"Test1.Fal")
MessageRequester("Achtung","Die Datei existiert schon",#PB_MessageRequester_Ok)
CloseFile(0)
End
Else
CreateFile(0,Path+"Test1.Fal")
; hier könnten weitere Write-Befehle stehen
CloseFile(0)
MessageRequester("Alles klar","Die Datei wurde erfolgreich in ## "+Path+" ## geschrieben",#PB_MessageRequester_Ok)
EndIf
\ToolBar\Menu+ToolBar+StatusBar\MenuMenuItem_PlaceRightSite.pb
Code: Alles auswählen
; German forum: http://robsite.de/php/pureboard/viewtopic.php?p=24985#24985
; Author: Falko
; Date: 19. December 2003
; Set the last menu item to the top-right corner...
;Menü mit Help rechts per API-Funktion und Structure.
;Für Redraw habe ich einfach Menü aus und dann wieder eingeschaltet
#MIIM_TYPE = 16
#MFT_RIGHTJUSTIFY = 16384
LPTSTR.s="Hilfe Rechts"
Eintrag.MENUITEMINFO
Eintrag\cbSize = SizeOf(MENUITEMINFO)
Eintrag\fMask = #MIIM_TYPE
Eintrag\fType = #MFT_RIGHTJUSTIFY
Eintrag\dwTypeData = @LPTSTR
If OpenWindow(0, 100, 150, 595, 260, "PureBasic - Menu", #PB_Window_SystemMenu)
hMenu.l=CreateMenu(0, WindowID(0))
If hMenu
MenuTitle("File")
MenuItem( 1, "&Load...")
MenuItem( 2, "Save")
MenuItem( 3, "Save As...")
MenuTitle("Bearbeiten")
MenuItem(4, "Markieren")
MenuTitle("Neu")
MenuItem(5, "oh je, jetzt mehr")
MenuTitle(""); Dummyplatzhalter eingefügt, damit SetMenuItem darauf zugreifen kann
MenuItem(6,"jetzt hast du hilfe")
EndIf
; MenuTitle ein Label geben und rechts ausrichten
SetMenuItemInfo_(hMenu,3,1,@Eintrag) ; Menütitel ist von 0-1-2-3 gerechnet
HideMenu(0, 1)
HideMenu(0, 0)
;
; This is the 'event loop'. All the user actions are processed here.
; It's very easy to understand: when an action occurs, the EventID
; isn't 0 and we just have to see what have happened...
;
Repeat
Select WaitWindowEvent()
Case #PB_Event_Menu
Select MenuID(0) ; To see which menu has been selected
Case 11 ; About
MessageRequester("About", "Cool Menu example", 0)
Default
MessageRequester("Info", "MenuItem: "+Str(MenuID(0)), 0)
EndSelect
Case #WM_CLOSE ; #PB_EventCloseWindow
Quit = 1
EndSelect
Until Quit = 1
EndIf
FreeMenu(0)
End
Menu\ToolBar\Menu+ToolBar+StatusBar\StatusBar\StatusBar_SetFont&Resize.pb
Code: Alles auswählen
; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=3180&highlight=
; Author: Falko (updated for PB3.93 by ts-soft)
; Date: 19. December 2003
; OS: Windows
; Demo: No
LoadFont (0, "Courier", 15) ; Load Courrier Font, Size 15
LoadFont (1, "Arial", 25) ; Load Arial Font, Size 25
Procedure SizeCallback(WindowId, Message, wParam, lParam)
ReturnValue = #PB_ProcessPureBasicEvents
If Message = #WM_SIZE
; UpdateStatusBar(0)
ReturnValue = 1 ; Tell the PureBasic internal event handler than the Size event is processed by the user callback
EndIf
ProcedureReturn ReturnValue
EndProcedure
If OpenWindow(0, 100, 150, 400, 200,"PureBasic - StatusBar Example",#PB_Window_SystemMenu | #PB_Window_SizeGadget)
Hdl.l = CreateStatusBar(0, WindowID(0))
If Hdl
AddStatusBarField(100)
AddStatusBarField(150)
AddStatusBarField(100)
EndIf
StatusBarText(0, 0, "Area 1")
StatusBarText(0, 1, "Area 2", #PB_StatusBar_BorderLess)
StatusBarText(0, 2, "Area 3", #PB_StatusBar_Right | #PB_StatusBar_Raised)
SendMessage_(Hdl,#WM_SETFONT,FontID(1),#True) ; hier wird Arial eingesetzt
Delay(2000)
SendMessage_(Hdl,#WM_SETFONT,FontID(0),#True) ; und hier Courier
;UpdateStatusBar(0)
SetWindowCallback(@SizeCallback())
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Graphics\Drawing\Lines\Line_Styles2.pb
Code: Alles auswählen
; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=2439&postdays=0&postorder=asc&start=20
; Author: Falko
; Date: 04. October 2003
; OS: Windows
; Demo: No
If CreateImage(0,400,400)
hDC=StartDrawing(ImageOutput(0))
pen=CreatePen_(#PS_SOLID,20,RGB(255,255,255))
oldpen=GetCurrentObject_(hDC,#OBJ_PEN)
SelectObject_(hDC,pen)
LineXY(10,10,100,100)
LineXY(100,100,100,200)
LineXY(100,200,10,100)
SelectObject_(hDC,oldpen)
DeleteObject_(pen)
StopDrawing()
If OpenWindow(1,0,0,400,400,"Pen-Test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
If CreateGadgetList(WindowID(1))
ImageGadget(0,0,0,400,400,ImageID(0))
While WaitWindowEvent()<>#PB_Event_CloseWindow:Wend
CloseWindow(1)
EndIf
EndIf
FreeImage(0)
EndIf
\Graphics\Drawing\Lines\Line_Styles4.pb
Code: Alles auswählen
; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=2439&postdays=0&postorder=asc&start=20
; Author: Falko
; Date: 05. October 2003
; OS: Windows
; Demo: No
; Note: Don't use a PB function between AutoPen() and EndPen()
; Hinweis: Wichtig ist eigentlich nur, daß zwischen AutoPen() und EndPen() auf keinen Fall eine
; PB-Funktion aufgerufen wird, die die Farbe etc. ändert.
Global _AutoPen_OldPen_
Global _AutoPen_NewPen_
Procedure AutoPen(hDC,Style,width,Color)
If _AutoPen_OldPen_=0
_AutoPen_OldPen_=GetCurrentObject_(hDC,#OBJ_PEN)
EndIf
If _AutoPen_NewPen_
DeleteObject_(_AutoPen_NewPen_)
EndIf
_AutoPen_NewPen_=CreatePen_(Style,width,Color)
SelectObject_(hDC,_AutoPen_NewPen_)
EndProcedure
Procedure EndPen(hDC)
If _AutoPen_NewPen_
DeleteObject_(_AutoPen_NewPen_)
EndIf
SelectObject_(hDC,_AutoPen_OldPen_)
_AutoPen_OldPen_=0
EndProcedure
If CreateImage(0,400,400)
hDC=StartDrawing(ImageOutput(0))
Box(0,0,400,400,$FFFFFF)
AutoPen(hDC, #PS_SOLID, 15 ,RGB(0,0,0))
LineXY( 10, 10, 100, 100 )
Box(180,10,100,255,$FF00FF); hier mal das mit color ignoriert
Circle(230,150,50,$FFFF00) ; hier auch
AutoPen(hDC, #PS_SOLID, 3 ,RGB(255,0,0))
LineXY( 100, 100, 100, 200 )
AutoPen(hDC, #PS_SOLID, 10 ,RGB(0, 255, 0) )
LineXY ( 100, 200, 10, 100 )
AutoPen(hDC,#PS_DASH,1,RGB(0, 100, 255) )
LineXY ( 10, 230, 150, 230 )
AutoPen(hDC,#PS_DASHDOTDOT, 1 ,RGB(255,0,100))
LineXY (10, 240, 150, 240 )
AutoPen(hDC,#PS_DOT, 1 ,RGB(0,255,0))
LineXY (10, 250, 150, 250)
EndPen(hDC)
StopDrawing()
If OpenWindow(1,0,0,400,400,"Pen-Test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
If CreateGadgetList(WindowID(1))
ImageGadget(0,0,0,400,400,ImageID(0))
While WaitWindowEvent()<>#PB_Event_CloseWindow:Wend
CloseWindow(1)
EndIf
EndIf
FreeImage(0)
EndIf
\Time+Data\Clock\DigitalClock.pb
Code: Alles auswählen
; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=2470&highlight=
; Author: Falko (optimized by Mischa)
; Date: 06. October 2003
Global _AutoPen_OldPen_
Global _AutoPen_NewPen_
Procedure Init()
Global Dim ziffer.l(9,7)
Restore ziffern
For i=0 To 9:Read a:ziffer(i,0)=a:For t=1 To a:Read b:ziffer(i,t)=b:Next t:Next i
Global Dim linie.l(7,4)
Restore linien
For i=1 To 7:For t=1 To 4:Read a:linie(i,t)=a:Next t:Next i
EndProcedure
Procedure AutoPen(hDC,Style,width,Color)
If _AutoPen_OldPen_=0
_AutoPen_OldPen_=GetCurrentObject_(hDC,#OBJ_PEN)
EndIf
If _AutoPen_NewPen_
DeleteObject_(_AutoPen_NewPen_)
EndIf
_AutoPen_NewPen_=CreatePen_(Style,width,Color)
SelectObject_(hDC,_AutoPen_NewPen_)
EndProcedure
Procedure EndPen(hDC)
If _AutoPen_NewPen_
DeleteObject_(_AutoPen_NewPen_)
EndIf
SelectObject_(hDC,_AutoPen_OldPen_)
_AutoPen_OldPen_=0
EndProcedure
Procedure Digital(Zahl.l)
If CreateImage(0,65,110)
hDC=StartDrawing(ImageOutput(0))
AutoPen(hDC, #PS_SOLID, Random(15) ,RGB(Random(255),Random(255),Random(255)))
For i=1 To ziffer(Zahl,0)
LineXY(linie(ziffer(Zahl,i),1), linie(ziffer(Zahl,i),2), linie(ziffer(Zahl,i),3), linie(ziffer(Zahl,i),4))
Next i
EndPen(hDC)
StopDrawing()
EndIf
EndProcedure
Init()
If OpenWindow(1,0,0,65,110 ,"DIGITS",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_BorderLess)
If CreateGadgetList(WindowID(1))
While Event<>#PB_Event_CloseWindow
If GetTickCount_()-time > 500
i=(i+1) % 10 ; Modula Operator need PureBasic v3.80+
Digital(i)
ImageGadget(0,0,0,65,110,ImageID(0))
time=GetTickCount_()
EndIf
Delay(5)
Event = WindowEvent()
Wend
CloseWindow(1)
EndIf
EndIf
FreeImage(0)
; in der Datasection werden die einzelnen Segmente für die digitale Ziffer vorgegeben.
DataSection
ziffern:
Data.l 6,1,2,3,6,7,5
Data.l 2,3,6
Data.l 5,1,3,4,5,7
Data.l 5,1,3,4,6,7
Data.l 4,2,4,3,6
Data.l 5,1,2,4,6,7
Data.l 6,1,2,4,5,6,7
Data.l 3,1,3,6
Data.l 7,1,2,3,4,5,6,7
Data.l 5,1,2,3,4,6
linien:
Data.l 10,10,50,10
Data.l 10,10,10,55
Data.l 50,10,50,55
Data.l 10,55,50,55
Data.l 10,55,10,100
Data.l 50,55,50,100
Data.l 10,100,50,100
EndDataSection