Vielleicht findet ja diese Anwendung Platz im CodeArchive, als TUT.
Klar, dann muss es noch etwas schicker gemacht werden
Code: Alles auswählen
; Autor : Folker Linstedt
; Thema : ClipBoard-Tool
; Date : 08|06| 2007
; PB-V : 4.02
Procedure.l IsInList(ListGadget.l,Text$)
Dings.l=0
For i=1 To CountGadgetItems(ListGadget)
Text$=StringField(Text$,1,Chr(10)) ; nur erste Zeile!!!
If GetGadgetItemText(ListGadget,i-1,0) = Text$
Dings=i
EndIf
Next
SetGadgetState(ListGadget,Dings-1)
ProcedureReturn Dings
EndProcedure
Enumeration
#MainWin
#AddOben
#AddUnten
#Liste
#Menu
#Edit
#ToolBar
EndEnumeration
Procedure SaveList(Name.s)
If CreateFile(0, Name)
For m=0 To CountGadgetItems(#Liste)-1
WriteStringN(0,GetGadgetItemText(#Liste,m,0),#PB_Unicode)
Next
CloseFile(0)
EndIf
EndProcedure
Procedure LoadList(Name.s)
m.l=-1
If ReadFile(0, Name)
ClearGadgetItemList(#Liste)
While Not Eof(0)
m+1
AddGadgetItem(#Liste,m,ReadString(0,#PB_Unicode))
Wend
CloseFile(0)
EndIf
EndProcedure
Procedure AddToList(Position)
If Not IsInList(#Liste,GetClipboardText())
AddGadgetItem(#Liste,Position,GetClipboardText())
If CountGadgetItems(#Liste) % 2 = 1
Color=RGB(230,230,255)
Else
Color=RGB(255,230,230)
EndIf
SetGadgetItemColor(#Liste, Position, #PB_Gadget_BackColor,Color)
;SetGadgetItemColor(#Liste, Position, #PB_Gadget_BackColor,RGB(128,0,255))
EndIf
EndProcedure
Procedure AddtoListP()
If GetMenuItemState(#Menu,5)=1
AddToList(0)
Else
AddToList(CountGadgetItems(#Liste))
EndIf
EndProcedure
OpenPreferences("CopyBoard.ini")
Global WinPosX_MainWin.l=ReadPreferenceLong("WINDOW_XPOS_MAIN",50);
Global WinPosY_MainWin.l=ReadPreferenceLong("WINDOW_YPOS_MAIN",50);
Global WinONTOP_MainWin.l=ReadPreferenceLong("WINDOW_ONTOP_MAIN",1);
Global AutoPaste_MainWin.l=ReadPreferenceLong("AutoPaste_MAIN",1);
Global WriteAP_MainWin.l=ReadPreferenceLong("WriteAP_MAIN",1);
Global Position_MainWin.l=ReadPreferenceLong("Position_MAIN",1);
Global ClipBoardName.s =ReadPreferenceString("ClipBoardName","ClipBoard.txt")
ClosePreferences()
Procedure SavePreferences()
CreatePreferences("CopyBoard.ini")
WritePreferenceLong("WINDOW_XPOS_MAIN",WindowX(#MainWin))
WritePreferenceLong("WINDOW_YPOS_MAIN",WindowY(#MainWin))
WritePreferenceLong("WINDOW_ONTOP_MAIN",WinONTOP_MainWin)
WritePreferenceLong("AutoPaste_MAIN",AutoPaste_MainWin)
WritePreferenceLong("WriteAP_MAIN",WriteAP_MainWin)
WritePreferenceLong("Position_MAIN",Position_MainWin)
WritePreferenceString("CLIPBOARDNAME",ClipBoardName)
ClosePreferences()
EndProcedure
NewList Clips.s()
If OpenWindow(#MainWin,WinPosX_MainWin,WinPosY_MainWin, 150,400,":: FL :: CopyBoard") And CreateGadgetList(WindowID(#MainWin))
;/ Menu
CreateMenu(#Menu,WindowID(#MainWin))
MenuTitle("List")
MenuItem(1,"Edit") ; also Save as here is possible
MenuItem(0,"Load again") ; after Save with Editor
MenuItem(3,"save")
MenuBar()
MenuItem(2,"Stay on top")
SetMenuItemState(#Menu,2,WinONTOP_MainWin) ; ist sinnvoller es anzuschalten
MenuTitle("Paste to List")
MenuItem(5,"paste on top")
SetMenuItemState(#Menu,5,Position_MainWin)
MenuBar()
MenuItem(6,"auto paste")
SetMenuItemState(#Menu,6,AutoPaste_MainWin)
;/ Toolbar
CreateToolBar(#ToolBar,WindowID(#MainWin))
ToolBarStandardButton(0, #PB_ToolBarIcon_Save ) ; Speichert die Liste (falls Windows vor dem Schließen abstürzt)
ToolBarToolTip(#ToolBar, 0, "save List")
ToolBarStandardButton(1, #PB_ToolBarIcon_Open) ; Öffnet Editor
ToolBarToolTip(#ToolBar, 1, "open in Editor")
ToolBarSeparator()
;ToolBarToolTip(#ToolBar, 2, "auto paste on/off")
;SetToolBarButtonState(#ToolBar, 2, AutoPaste_MainWin)
ToolBarStandardButton(10,#PB_ToolBarIcon_Copy)
ToolBarToolTip(#ToolBar, 10, "copy or write selected text")
ToolBarStandardButton(11,#PB_ToolBarIcon_Paste)
ToolBarToolTip(#ToolBar, 11, "paste to list")
ToolBarSeparator()
ToolBarStandardButton(12, #PB_ToolBarIcon_Delete)
ToolBarToolTip(#ToolBar, 12, "delete selected text from list")
;/ Gadgets
ButtonGadget(#AddOben,0,0+ToolBarHeight(#ToolBar),150,20,"add ClipboardText")
ButtonGadget(#AddUnten,0,400-20-MenuHeight(),150,20,"add ClipboardText")
ListIconGadget(#Liste,0,40+ToolBarHeight(#ToolBar),150,300-ToolBarHeight(#ToolBar),"Clipboard",120,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection |#PB_ListIcon_GridLines)
StickyWindow(#MainWin,GetMenuItemState(#Menu,2))
LoadList(ClipBoardName)
Repeat
event= WaitWindowEvent(100) ; überprüft alle 100 Millisekunden
If GetMenuItemState(#Menu,6)=1
AddtoListP()
EndIf
If event=#PB_Event_Gadget
GadgetNr=EventGadget()
If GadgetNr=#AddOben
AddToList(0)
EndIf
If GadgetNr=#AddUnten
AddToList(CountGadgetItems(#Liste))
EndIf
EndIf
If event=#PB_Event_Menu
MenuNr = EventMenu()
If MenuNr=2
SetMenuItemState(#Menu,2, 1-GetMenuItemState(#Menu,2))
WinONTOP_MainWin=GetMenuItemState(#Menu,2)
StickyWindow(#MainWin,WinONTOP_MainWin)
EndIf
If MenuNr=1
SaveList(ClipBoardName)
RunProgram(ClipBoardName)
; OpenEditor
EndIf
If MenuNr=0 ; Load again
LoadList(ClipBoardName)
EndIf
If MenuNr=6
SetMenuItemState(#Menu,6, 1-GetMenuItemState(#Menu,6))
AutoPaste_MainWin=GetMenuItemState(#Menu,6)
EndIf
If MenuNr=5
SetMenuItemState(#Menu,5, 1-GetMenuItemState(#Menu,5))
Position_MainWin=GetMenuItemState(#Menu,5)
EndIf
If MenuNr=10
If GetGadgetState(#Liste)<>-1
SetClipboardText(GetGadgetItemText(#Liste,GetGadgetState(#Liste),0))
EndIf
EndIf
If MenuNr=11
AddtoListP()
EndIf
If MenuNr=12
RemoveGadgetItem(#Liste, GetGadgetState(#Liste))
EndIf
EndIf
Until event=#PB_Event_CloseWindow
SavePreferences()
SaveList(ClipBoardName)
CloseWindow(#MainWin)
EndIf
Bis hierhin ist das Programm noch nicht sehr umfangreich.ToDo hat geschrieben: - DoppelKlick auf Liste schreibt Zeile in Zwischenablage,
- Drag'n'Drop
- verschiedene Listen zum schnellen Anwählen
- ein automatischer Einfüge Modus
- BUG beseitigen bei der Festlegung der Farben in den Zeilen
Hier hat nun jeder, wer will eine Grundlage, um sich ein bisschen mit den Gadgets und der Zwischenablage zu beschäftigen.
Selbst hab ich natürlich auch noch ne Menge Ideen, was ich dazu fügen würde und möchte. Aber das werdet ihr ja noch sehen.
Bis dahin eine sehr frühe Version. Deshalb auch noch nicht bei FeedBack.
Hoffe, es hilft wem.
Gruß, Folker