Seite 1 von 2

Gadget frage

Verfasst: 09.05.2007 16:25
von Knight_Rider_2000
Hi,
Ich wollt mal wissen ob ihr auch Gadgets für pb kennt die nicht in pb drinne sind und wie sie funktionieren? Mir sind die von pb langsam aber sicher zu wenig.

Verfasst: 09.05.2007 17:18
von uweb
PB ja sehr universell einsetzbar.
Unter "Gadget erstellen mit PB4" (http://www.purebasic.fr/german/viewtopic.php?t=8071) findes Du Hilfe um selbst Gadget zu erstellen.

Fertige Lösungen unterscheiden sich darin wie sie funktionieren (Libs oder PB-Quellcodes (z.B. http://www.purebasic.fr/german/viewtopic.php?t=7982) lassen sich direkt einbinden für andere gibt es APIs oder COM)

Re: Gadget frage

Verfasst: 09.05.2007 17:38
von Fluid Byte
Knight_Rider_2000 hat geschrieben:Ich wollt mal wissen ob ihr auch Gadgets für pb kennt die nicht in pb drinne sind ...
Ein Widerspruch in sich aber egal. Die einzigen die mir jetzt einfallen sind Hotkey- und Rebar Controls. Hotkey Controls sind praktisch nutzlos und Rebar Controls, sowie jedes andere Gadget was nicht nativ in PB enthalten ist, kann man über API ansteuern. Alles andere, wie z. B. auch das SplitterGadget, sind Ownerdrawn Controls und werden von Windows nicht unterstützt.
Knight_Rider_2000 hat geschrieben:Mir sind die von pb langsam aber sicher zu wenig.
Das müsstest du mal näher erläutern...

Verfasst: 09.05.2007 17:58
von uweb
Es gab z.B. auch schon eine Art "WebGadget" (per COM wenn ich mich richtig erinnere) bevor es in PB integriert war.
Unter http://frabbing.de/_listview.html gibt es ein Gadget auf DLL-Basis.
Fluid Byte hat aber recht : Ich würde mich erst dann auf die Suche machen wenn ich konkreten Bedarf an einer Lösung ( z.B. http://www.purebasic.fr/german/viewtopic.php?t=12897) oder einer Technik-Studie für eigene Entwicklung hätte.

Verfasst: 09.05.2007 18:06
von Knight_Rider_2000
Ich habe schon in ein pb programm sowas ähnliches wie die explorerleiste gesehen aber sowas gibt es ja nicht in pb

Verfasst: 09.05.2007 18:13
von uweb
Grundsätzlich :
Es gibt Gadgets in PB,
es gibt Gadgets für PB
und es gibt Gadgets die sich aus PB heraus nutzen lassen - auch wenn sie nicht speziell dafür gemacht sind (z.B. DLLs).

Was genau meinst du mit Explorerleiste ?

edit :
Willst Du den Internet Explorer erweitern ?
Wenn Ja :
Bei einem kurzen Abstecher per Google bin ich bis zu dem Wort "COM" gekommen. Ab da wusste ich, dass es für mich keinen Sinn macht weiter zu lesen.
Für Firefox gibt es glaube ich Ähnliches etwas leichter.

Verfasst: 09.05.2007 18:17
von ts-soft
Knight_Rider_2000 hat geschrieben:Ich habe schon in ein pb programm sowas ähnliches wie die explorerleiste gesehen aber sowas gibt es ja nicht in pb
Das ist das schöne beim Programmieren, was es nicht gibt, kann
man programmiern :wink:

Verfasst: 09.05.2007 18:22
von Knight_Rider_2000
ich mein im normalen explorer Links dieser lange blaue Kasten mit verschiedenen Links zu anderen Orten usw

Verfasst: 09.05.2007 18:43
von uweb
Wenn es nur so wie beim (aber nicht für den) Internet Explorer sein soll hilft Dir vielleicht folgendes Beispiel :

Code: Alles auswählen

;- Enumerations
;
Enumeration
  #Window_0

  #Tree_Page
  #Panel_0

  #Button_ControlSplitter
  #String_URL
  #Button_Path
  #Button_FTP
  #Button_Sample
  #Radio_vbs
  #Radio_js
  #Editor_Log
  #Button_URL
  #Button_Log
  #Button_go

  #Tree_Style

  #Button_FunctionSplitter
  #Editor_Function
  #Editor_FunctionNr

  #Button_HTMLSplitter
  #Editor_HTML
  #Editor_HTMLNr

  #Button_PreviewSplitter
  #Web_Preview

  #Button_HelpSplitter
  #Web_Help
EndEnumeration


;- Globals
;
;- Procedures
;
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 200, 100, 600, 400, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    If CreateGadgetList(WindowID(#Window_0))
      TreeGadget(#Tree_Page, 0, 0, 200, 400)
      TreeGadget(#Tree_Style, 0, 0, 200, 400)
      
      ;- Panel0
      PanelGadget(#Panel_0, 200, 0, 405, 405)
        AddGadgetItem(#Panel_0, -1, "Control")
          ButtonGadget(#Button_ControlSplitter, 8, 8, 10, 365, "<")
          StringGadget(#String_URL, 28, 8, 365, 20, "url", #PB_String_ReadOnly)
          ButtonGadget(#Button_Path, 28, 38, 70, 20, "Path")
          ButtonGadget(#Button_FTP, 116, 38, 70, 20, "FTP")
          ButtonGadget(#Button_Sample, 204, 38, 70, 20, "Sample")
          OptionGadget(#Radio_vbs, 38, 73, 140, 25, "vbs")
          OptionGadget(#Radio_js, 38, 93, 140, 25, "js")
          EditorGadget(#Editor_Log, 28, 133, 365, 200)
          ButtonGadget(#Button_URL, 28, 348, 70, 20, "copy URL")
          ButtonGadget(#Button_Log, 116, 348, 70, 20, "copy LOG")
          ButtonGadget(#Button_go, 318, 348, 70, 20, "Start")
        AddGadgetItem(#Panel_0, -1, "Style")
        AddGadgetItem(#Panel_0, -1, "Function")
          ButtonGadget(#Button_FunctionSplitter, 8, 8, 10, 365, "<")
          EditorGadget(#Editor_Function, 68, 8, 325, 365)
          EditorGadget(#Editor_FunctionNr, 28, 8, 42, 365)
        AddGadgetItem(#Panel_0, -1, "HTML")
          ButtonGadget(#Button_HTMLSplitter, 8, 8, 10, 365, "<")
          EditorGadget(#Editor_HTML, 68, 8, 325, 365)
          EditorGadget(#Editor_HTMLNr, 28, 8, 42, 365)
        AddGadgetItem(#Panel_0, -1, "Preview")
          ButtonGadget(#Button_PreviewSplitter, 8, 8, 10, 365, "<")
          WebGadget(#Web_Preview, 28, 8, 365, 365, "about:blank")
        AddGadgetItem(#Panel_0, -1, "Help")
          ButtonGadget(#Button_HelpSplitter, 8, 8, 10, 365, "<")
          WebGadget(#Web_Help, 28, 8, 365, 365, "about:blank")
      CloseGadgetList()

    EndIf
  EndIf
EndProcedure

Procedure TreeVisibility()
  Static TreeVisible=#True, PanelHeight, PanelWidth, PanelX
  If TreeVisible
    HideGadget(#Tree_Page, #True)
    HideGadget(#Tree_Style, #True)
    PanelWidth=GadgetWidth(#Panel_0)
    PanelHeight=GadgetHeight(#Panel_0)
    PanelX=GadgetX(#Panel_0)
    ResizeGadget(#Panel_0, PanelX-200, #PB_Ignore, PanelWidth+200, PanelHeight)
    SetGadgetText(#Button_ControlSplitter, ">") 
    SetGadgetText(#Button_FunctionSplitter, ">")
    SetGadgetText(#Button_HTMLSplitter, ">")
    SetGadgetText(#Button_PreviewSplitter, ">")
    SetGadgetText(#Button_HelpSplitter, ">")  
    SetActiveGadget(#Panel_0)
    TreeVisible=#False
  Else
    ResizeGadget(#Panel_0, PanelX, #PB_Ignore, PanelWidth, PanelHeight)
    HideGadget(#Tree_Page, #False)
    HideGadget(#Tree_Style, #False)
    SetGadgetText(#Button_ControlSplitter, "<") 
    SetGadgetText(#Button_FunctionSplitter, "<")
    SetGadgetText(#Button_HTMLSplitter, "<")
    SetGadgetText(#Button_PreviewSplitter, "<")
    SetGadgetText(#Button_HelpSplitter, "<")  
    SetActiveGadget(#Panel_0)
    TreeVisible=#True
  EndIf
EndProcedure


Open_Window_0()

PureRESIZE_SetWindowMinimumSize(#Window_0, 600, 400)
PureRESIZE_SetGadgetResize(#Tree_Page, #True, #True, #False, #True)
PureRESIZE_SetGadgetResize(#Tree_Style, #True, #True, #False, #True)
PureRESIZE_SetGadgetResize(#Panel_0, #True, #True, #True, #True)

PureRESIZE_SetGadgetResize(#Button_ControlSplitter, #True, #True, #False, #True, #Panel_0)
PureRESIZE_SetGadgetResize(#String_URL, #True, #True, #True, #False, #Panel_0)
PureRESIZE_SetGadgetResize(#Editor_Log, #True, #True, #True, #True, #Panel_0)

PureRESIZE_SetGadgetResize(#Button_URL, #True, #False, #False, #True, #Panel_0)
PureRESIZE_SetGadgetResize(#Button_Log, #True, #False, #False, #True, #Panel_0)

PureRESIZE_SetGadgetResize(#Button_go, #False, #False, #True, #True, #Panel_0)


PureRESIZE_SetGadgetResize(#Button_FunctionSplitter, #True, #True, #False, #True, #Panel_0)
PureRESIZE_SetGadgetResize(#Editor_FunctionNr, #True, #True, #False, #True, #Panel_0)
PureRESIZE_SetGadgetResize(#Editor_Function, #True, #True, #True, #True, #Panel_0)

PureRESIZE_SetGadgetResize(#Button_HTMLSplitter, #True, #True, #False, #True, #Panel_0)
PureRESIZE_SetGadgetResize(#Editor_HTMLNr, #True, #True, #False, #True, #Panel_0)
PureRESIZE_SetGadgetResize(#Editor_HTML, #True, #True, #True, #True, #Panel_0)

PureRESIZE_SetGadgetResize(#Button_PreviewSplitter, #True, #True, #False, #True, #Panel_0)
PureRESIZE_SetGadgetResize(#Web_Preview, #True, #True, #True, #True, #Panel_0)

PureRESIZE_SetGadgetResize(#Button_HelpSplitter, #True, #True, #False, #True, #Panel_0)
PureRESIZE_SetGadgetResize(#Web_Help, #True, #True, #True, #True, #Panel_0)

;- Main
;

Repeat
  Event = WaitWindowEvent()
  Select Event
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Button_ControlSplitter
          TreeVisibility()

        Case #Button_FunctionSplitter
          TreeVisibility()
          
        Case #Button_HTMLSplitter
          TreeVisibility()
          
          
        Case #Button_PreviewSplitter
          TreeVisibility()
        Case #Button_HelpSplitter
          TreeVisibility()

      EndSelect
    Case #PB_Event_Menu

  EndSelect
Until Event = #PB_Event_CloseWindow
Du brachst PureRESIZE (unter user-libs auf http://www.purearea.net/pb/german/) um es laufen zu lassen.
Bitte entschuldige das Moster - ich habe einfach einen meiner Codes verwendet statt extra etwas zu erstellen.
Obwohl ich deshalb hier schon prügel bezogen habe denke ich es ist übersichtlich und nachvollziehbar.

Verfasst: 09.05.2007 18:56
von ts-soft
@uweb
Case erlaubt auch mehrere Ausdrücke :wink: