Seite 1 von 2

Toggle (Anfänger-Tip)

Verfasst: 24.01.2015 21:04
von Tommy
Hab eine universale Funktion gebaut die folgendes machen kann:
-Gadget aktivieren oder deaktivieren
-Gadget verstecken oder anzeigen
-Gadget Breite und Höhe vertauschen
-Fenster aktivieren oder deaktivieren
-Fenster verstecken oder anzeigen
-Fenster Breite und Höhe vertauschen
-Nummer Vorzeichen umkehren
-Farbe umkehren
-Text Groß und Kleinschreibung umkehren
-Text vorwärts oder rückwärts
Vorteil: Man muss nicht wissen ob zum beispiel gerade deaktiviert ist, einfach toggeln.
Mein Code leider teilweise nur für Windows!

Code: Alles auswählen

;(c) Tommy
Enumeration Toggle
  #PB_Toggle_Gadget_EnableDisable;Nur Windows
  #PB_Toggle_Gadget_ShowHide;Nur Windows
  #PB_Toggle_Gadget_Size
  #PB_Toggle_Window_EnableDisable;Nur Windows
  #PB_Toggle_Window_ShowHide;Nur Windows
  #PB_Toggle_Window_Size
  #PB_Toggle_Number
  #PB_Toggle_Color
  #PB_Toggle_String_ULCase
  #PB_Toggle_String_Reverse
  #PB_Toggle_String_URL
EndEnumeration

Procedure Toogle(Value, Type)
  Protected i, Str.s, Str2.s
 
  CompilerIf #PB_Compiler_OS = #PB_OS_Windows
    Select Type
      Case #PB_Toggle_Gadget_EnableDisable
        DisableGadget(Value, IsWindowEnabled_(GadgetID(Value)))
      Case #PB_Toggle_Gadget_ShowHide
        HideGadget(Value, IsWindowVisible_(GadgetID(Value)))
      Case #PB_Toggle_Window_EnableDisable
        DisableWindow(Value, IsWindowEnabled_(WindowID(Value)))
      Case #PB_Toggle_Window_ShowHide
        HideWindow(Value, IsWindowVisible_(WindowID(Value)))
    EndSelect
  CompilerEndIf
  Select Type
    Case #PB_Toggle_Number
      ProcedureReturn -Value
    Case #PB_Toggle_Color
      ProcedureReturn $FFFFFF - Value
    Case #PB_Toggle_String_ULCase
      Str = PeekS(Value)
      For i=1 To Len(Str)
        If Asc(Mid(Str, i, 1)) < 97 : Str2 + LCase(Mid(Str, i, 1))
        Else : Str2 + UCase(Mid(Str, i, 1))
        EndIf
      Next i
      PokeS(Value, Str2)
    Case #PB_Toggle_String_Reverse
      PokeS(Value, ReverseString(PeekS(Value)))
    Case #PB_Toggle_Gadget_Size
      ResizeGadget(Value, #PB_Ignore, #PB_Ignore, GadgetHeight(Value), GadgetWidth(Value))
    Case #PB_Toggle_Window_Size
      ResizeWindow(Value, #PB_Ignore, #PB_Ignore, WindowHeight(Value), WindowWidth(Value))
    Case #PB_Toggle_String_URL
      Str = PeekS(Value)
      If FindString(Str, "%")
        PokeS(Value, URLDecoder(Str))
      Else
        PokeS(Value, URLEncoder(Str))
      EndIf
  EndSelect
EndProcedure

Define event

OpenWindow(0, 0, 0, 200, 500, "", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible)
ButtonGadget(0, 60, 75, 75, 20, "OK")
HideGadget(0, 1)
Toogle(0, #PB_Toggle_Gadget_EnableDisable)
Toogle(0, #PB_Toggle_Gadget_ShowHide)

Define TestString.s = "Hallo"
Toogle(@TestString, #PB_Toggle_String_ULCase)
Debug TestString
Toogle(@TestString, #PB_Toggle_String_Reverse)
Debug TestString
Debug Toogle(RGB(255, 0, 0), #PB_Toggle_Color)
Toogle(0, #PB_Toggle_Window_ShowHide)
Toogle(0, #PB_Toggle_Window_Size)
TestString = "http://www.äpfelstrraße.com"
Toogle(@TestString, #PB_Toggle_String_URL)
Debug TestString
Toogle(@TestString, #PB_Toggle_String_URL)
Debug TestString

Repeat
  event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow

Re: Toggle

Verfasst: 24.01.2015 21:31
von JMaker
Coool, gefällt mir, danke fürs teilen :)

Re: Toggle

Verfasst: 24.01.2015 21:38
von NicTheQuick
Nur eine Frage: Warum 'Value/-1' und nicht einfach '-Value'?

Re: Toggle

Verfasst: 24.01.2015 22:02
von Tommy
/-1 hab ich in Mathe gelernt. -Value kannte ich noch nich.
Danke für den Tip. :allright:

Re: Toggle

Verfasst: 25.01.2015 00:13
von Vera
JMaker hat geschrieben:Coool, gefällt mir, danke fürs teilen :)
Vorsicht JM,

alle Codes von Tommy sind nur zum MIT-teilen , ohne Erlaubnis, darfst Du keinen davon nutzen
Tommy hat geschrieben:;(c) Tommy
Es sind keine herzlichen Geschenke an die Gemeinschaft :(
Tommy hat geschrieben:Mein Code leider teilweise nur für Windows!
Ja ... und selbst wenn man es berücksichtigen würde ...

Code: Alles auswählen

CompilerIf #PB_Compiler_OS = #PB_OS_Windows
Select
  Case #PB_Toggle_Gadget_EnableDisable
    DisableGadget(Value, IsWindowEnabled_(GadgetID(Value)))
  Case #PB_Toggle_Gadget_ShowHide
    HideGadget(Value, IsWindowVisible_(GadgetID(Value)))
  Case #PB_Toggle_Window_EnableDisable
    DisableWindow(Value, IsWindowEnabled_(WindowID(Value)))
  Case #PB_Toggle_Window_ShowHide
    HideWindow(Value, IsWindowVisible_(WindowID(Value)))
EndSelect
CompilerEndIf
... gäb's auch nix zu sehen. 8)

cheers ~ Vera

Re: Toggle

Verfasst: 25.01.2015 00:23
von NicTheQuick
Das Copyright hat in Deutschland nichts zu sagen. Hier gilt das Urheberrecht. Außerdem ist (c) die falsche Schreibweise. (C) wäre richtig, wenn man schon nicht © benutzen möchte. Aber ausgeschrieben ist es eh vorzuziehen. Zudem steht da nur sein Nickname und nicht sein richtiger Name und das Datum fehlt.

Streng genommen muss man Tommy natürlich um Erlaubnis bitten, wenn man seinen Code in kommerziellen Projekten nutzen möchte. Andererseits kann man sich darüber streiten, ob die Schöpfungshöhe erreicht wurde um überhaupt das Urheberrecht gelten machen zu können.

Was ich damit sagen will: Bei allen Codes hier im Forum muss man um Erlaubnis fragen, wenn man sie benutzen möchte, da das Urheberrecht in Deutschland immer existiert. Der Vermerk "(c) Tommy" sagt also genau so viel aus wie wenn er einfach nichts dahin geschrieben hätte. :wink:

Re: Toggle

Verfasst: 25.01.2015 00:36
von Tommy
@Vera
Mein (C) Vermerk bedeutet nur das ich der Urheber bin mehr nicht. Andere machen es auch.
Natürlich dürfen alle meine Codes benutzen, verändern und verteilen, auch ohne Namensnennung.
Keine Sorge ich lege für meine Codes keine Nutzungseinschränkungen fest. :)

Re: Toggle

Verfasst: 25.01.2015 15:46
von NicTheQuick
-= Thread abgeschnitten =-
Schon wieder viel sauberer hier :)

Re: Toggle (Anfänger-Tip)

Verfasst: 27.01.2015 14:06
von Tommy
Ich habe mein Code verbessert und habe bei Winsachen Compilerif hinzugefügt und es wird "-Value" genutzt.

Code: Alles auswählen

Code siehe oben

Re: Toggle (Anfänger-Tip)

Verfasst: 27.01.2015 14:16
von Nino
Cave: Dies ist kein Anfänger-Tipp!

Es ist überhaupt kein Tipp, sondern ein Anti-Tipp.
Er zeigt, wie man es gerade nicht machen sollte: diverse Dinge, die nichts miteinander zu tun haben, in einem Topf werfen (in eine Prozedur schreiben).