ZackZackOrdner

Veröffentliche deine funktionierenden Skripte und Funktionen

Moderator: jNizM

User avatar
Gerdi
Posts: 103
Joined: 03 Aug 2015, 18:48
GitHub: grrdi
Location: Germany

Re: ZackZackOrdner

01 May 2016, 18:05

Mit der Version 0.217 ist eine Funktion

Code: Select all

AbfrageFenster()
mitgekommen, die auch für andere Skripte interessant sein könnte.
Für Leute denen MsgBox zu wenig Freiheiten lässt, die aber nicht immer gleich ein eigenes Gui-Fenster coden möchten. Sie unterstützt:
- bis zu 9 flexibel beschriftbare (rudimentär positionierbare) Buttons
- ein Text-Feld welches zur Anzeige und oder zur Rückgabe verwendet werden kannn
- ein Haupt-Fenster
Ohne dass für den Funktionsaufruf Gui's verinnerlicht werden müssen.
Im Quelltext finden sich AufrufBeispiele.

Code: Select all

AbfrageFenster(FuncEinstellungen="",FensterTitel="",Frage="",ButtonText1="",ButtonText2="",ButtonText3="",ButtonText4="",ButtonText5="",ButtonText6="",ButtonText7="",ButtonText8="",ButtonText9="") { ; FuncEinstellungen ist ein Objekt ; FuncEinstellungen: AbfrageFensterOnTop DisableMainWindow EditBeiErstEinfuegenLeeren EditHatFokus EditReadOnly MarkiereEdit <--- true or false ; FuncEinstellungen: DefaultButton <--- # or OK # ist die Nummer des Buttons ; AufrufBeispiele: /* AbfrageFenster() ; warten auf weiter AbfrageFenster(,"Clipboard Anzeige",Clipboard) ; Anzeige der Zwischen-Ablage FuncEinstellungen := {DefaultButton: 1} Antwort:=AbfrageFenster(FuncEinstellungen,"Clipboard 2 Text",Clipboard,"Clipboard Inhalt in Text wandeln","Clipboard wie editiert uebernehmen","Abbruch") ; bearbeiten der Zwischen-Ablage if(SubStr(Antwort,1,1)=1) Clipboard:=Clipboard else if(SubStr(Antwort,1,1)=2) Clipboard:=SubStr(Antwort,2) FuncEinstellungen := {DefaultButton: 7, EditReadOnly: 1} AntwortButtonNummer:=SubStr(AbfrageFenster(FuncEinstellungen,"AnfangsBuchstabe","mit welchem Buchstabe soll begonnen werden?","a","b","c","d","e",">>>>mit einer Zahl",">>>>>>>>>>>>>>>>Abbruch"),1,1) MsgBox % "Sie haben mit dem " AntwortButtonNummer ". Button geantwortet" FuncEinstellungen := {DefaultButton: 2,EditBeiErstEinfuegenLeeren:1,EditHatFokus:1} Antwort:=AbfrageFenster(FuncEinstellungen,"Notiz","Bitte schreiben Sie in dieses Feld Ihre Notiz in Prosa`n`n`n`nHinweis: das erste Zeichen wird versschluckt.",">>>habe keine Notiz",">>>>>>Notiz Hinterlassen") if(SubStr(Antwort,1,1)=2) MsgBox % SubStr(Antwort,2) FuncEinstellungen := {DefaultButton: 2,EditHatFokus:1,MarkiereEdit:1} Antwort:=AbfrageFenster(FuncEinstellungen,"Notiz","Bitte schreiben Sie in dieses Feld Ihre Notiz in Prosa`n`n`n`n",">>>habe keine Notiz",">>>>>>Notiz Hinterlassen") if(SubStr(Antwort,1,1)=2) MsgBox % SubStr(Antwort,2) ExitApp */ static ; alle AbfrageFensterErg:=0 ; DefaultEinstellungen DisableMainWindow:=false AbfrageFensterOnTop:=true EditReadOnly:=false EditBeiErstEinfuegenLeeren:=false DefaultButton:="OK" EditHatFokus:=false MarkiereEdit:=false FirstEdit:=true if(IsObject(FuncEinstellungen)) { For FuncVarName, FuncVarInhalt in FuncEinstellungen %FuncVarName% := FuncVarInhalt } if(FensterTitel="") FensterTitel:=A_ScriptName if(Frage="") Frage:="weiter?" Frage4711:=Frage if(ButtonText1="") ButtonText1:="OK" ReadOnly= If EditReadOnly ReadOnly=ReadOnly StringSplit, Frage4711Array, Frage4711, `n, `r if LeerZeilenAmEndeWeglassen { Loop { IF(SubStr(Frage4711, 0,1)="`n") StringTrimRight, Frage4711, Frage4711, 1 Else Break } } Default= Loop, 10 { If(ButtonText%A_Index%<>"") { ButtonText4711%A_Index%:=ButtonText%A_Index% NeachRechts%A_Index%:=1 Index:=A_Index Loop { IF(SubStr(ButtonText4711%Index%, 1,1)=">") { ++NeachRechts%Index% StringTrimLeft, ButtonText4711%Index%, ButtonText4711%Index%, 1 } Else Break } If (DefaultButton="OK") { IF(ButtonText4711%A_Index%="OK") Default=Default Else Default= } else if DefaultButton is Integer { if (A_Index=DefaultButton) Button%A_Index%Default:=true else Button%A_Index%Default:=false } } Else { ButtonText47110:=A_Index - 1 Break } } ; Gui, 4:+owner1 ; Make the main window (Gui #1) the owner of the "about box" (Gui #2). Gui,4:New,+HwndGui4WinHwnd if DisableMainWindow Gui +Disabled ; Disable main window. if AbfrageFensterOnTop Gui,4:+Resize AlwaysOnTop else Gui, 4:+Resize ; Make the window resizable. loop % ButtonText47110 { ThisButtonText:=ButtonText4711%A_Index% ThisNeachRechts:=NeachRechts%A_Index%*4 if DefaultButton is Integer { if Button%A_Index%Default Default=Default else Default= } If(A_Index=1 And NeachRechts%A_Index%>1) Gui, 4:Add, Button, x%ThisNeachRechts% gG4Button%A_Index% %Default%, %ThisButtonText% Else If(A_Index=1) Gui, 4:Add, Button, gG4Button%A_Index% %Default%, %ThisButtonText% Else Gui, 4:Add, Button, x+%ThisNeachRechts% gG4Button%A_Index% %Default%, %ThisButtonText% } If(Frage4711<>"") { MaxBreite:=40 Loop, parse, Frage4711, `n, `r ; Specifying `n prior to `r allows both Windows and Unix files to be parsed. { ThisBreite:=strlen(A_LoopField) If(MaxBreite<ThisBreite) MaxBreite:=ThisBreite } EditBreite:=MaxBreite*10 If(A_ScreenWidth<EditBreite) EditBreite:=A_ScreenWidth Gui, 4:Add, Edit, HwndHwndG4Edit1 vFrage4711 gFrage4711 %ReadOnly% X1 W%EditBreite% R%Frage4711Array0% } Gui, 4:Show,, %FensterTitel% if EditHatFokus ControlFocus,,ahk_id %HwndG4Edit1% ; Edit fokusieren If(Frage4711<>"") GuiControl,4:, Frage4711, %Frage4711% ; Put the text into the control. if MarkiereEdit { ControlFocus,,ahk_id %HwndG4Edit1% ; Edit fokusieren Controlsend,Edit1,{Ctrl Down}a{Ctrl Up},ahk_id %Gui4WinHwnd% ; Edit markieren } Goto NachRet 4GuiSize: if ErrorLevel = 1 ; The window has been minimized. No action needed. return ; Otherwise, the window has been resized or maximized. Resize the Edit control to match. NewWidth := A_GuiWidth - 2 ControlGetPos , Edit1X, Edit1Y, Edit1Width, Edit1Height, Edit1, %FensterTitel% SysGet, TitleBarHeight, 31, SM_CYSIZE ; msgbox % TitleBarHeight NewHeight := A_GuiHeight - Edit1Y + TitleBarHeight +4 ; TrayTip,FensterGröße, % NewWidth " " NewHeight,5 GuiControl, Move, Edit1, W%NewWidth% H%NewHeight% ; GuiControl, Focus, Edit1 return Frage4711: if (FirstEdit and EditBeiErstEinfuegenLeeren) { ControlGetFocus, FocusedGuiConntrol,A if (FocusedGuiConntrol="Edit1") { Frage4711:= GuiControl,,%HwndG4Edit1%, FirstEdit:=false } } return G4Button9: ++AbfrageFensterErg G4Button8: ++AbfrageFensterErg G4Button7: ++AbfrageFensterErg G4Button6: ++AbfrageFensterErg G4Button5: ++AbfrageFensterErg G4Button4: ++AbfrageFensterErg G4Button3: ++AbfrageFensterErg G4Button2: ++AbfrageFensterErg G4Button1: ++AbfrageFensterErg Gui, Submit AbfrageFensterErg=%AbfrageFensterErg%%Frage4711% 4GuiClose: ; User closed the window. Gui, Destroy Gui -Disabled ; Enable main window. return AbfrageFensterErg NachRet: ; WinWaitClose, %FensterTitel% WinWaitClose, ahk_id %Gui4WinHwnd% Gui -Disabled ; Enable main window. return AbfrageFensterErg }
Win 10 Home (x64) or Win 7 Enterprise
https://github.com/Grrdi/ZackZackOrdner ... master.zip --> get folders on the quick
User avatar
Gerdi
Posts: 103
Joined: 03 Aug 2015, 18:48
GitHub: grrdi
Location: Germany

Re: ZackZackOrdner

31 Mar 2017, 07:50

Version 0.374

Inzwischen kann man mit ZackZackOrdner auch nach Dateien Suchen.
Beim Einlesen der StartPfad-Caches muss dazu jeweils mit ESC die FileSelectFolder-Box verlassen werden und dann ++ dem StartPfad vorangestellt werden.

Auch den Nutzen des Quelltext-Modus anzusehen (der Programmier-technisch eher trivial ist), könnte sich für Besitzer längerer Quelltexte lohnen.
Der Quelltext-Modus macht nicht viel mehr als Quelltexte Zeilenweise zu Filtern mit Sprung-Möglichkeit zu selben Quelltext-Stelle in einem Fremdeditor. Durch dieses Filtern, können unter anderem folgende Fragestellungen erleichtert, unterstützt oder sogar beantwortet werden:
  • Wo wird überall die Variable mit dem Name ... verwendet
    Wo wird überall das Label ... aufgerufen
    Wo wird überall die Funktion ... aufgerufen?
    Ist Variable ... verwaist?
    HotKey/HotString- Liste (Filter ::)
    Ist der (Var- / Func- / Label-) Name noch frei?
    Kommentare und auch sonstige Schreibweisen vereinheitlichen
    Wie war doch noch der exakte Name von? und das ohne die Editor-Stelle zu verlassen an der gerade gearbeitet wird.
    Inhaltsverzeichnis erstellen (im ZZO-Quelltext durch den Filter ##############################)
    Gui-Befehle bzw Menu-Befehle übersichtlicher vergleichen (z.B. durch den Filter Add oder Menu)
    ToDo Liste an Ort und Stelle im Kontext erstellen. (z.B. durch den Filter ToDo)
    Quelltext aufräumen (PS. Mir ist bekannt, dass der ZZO-Quelltext kein gutes Beispiel dafür ist.)
Plus sicherlich viele Erleichterungen mehr.

Näheres im Hilfe-Ordner siehe Quelltexte.htm
Win 10 Home (x64) or Win 7 Enterprise
https://github.com/Grrdi/ZackZackOrdner ... master.zip --> get folders on the quick
User avatar
Gerdi
Posts: 103
Joined: 03 Aug 2015, 18:48
GitHub: grrdi
Location: Germany

Re: ZackZackOrdner

05 May 2017, 15:21

Ich werde mir das bestimmt näher ansehen. Bisher habe ich den Versuch allerdings allein wegen der Länge des Hauptskripts abgebrochen. ;)
Hallo just me,

der Quelltext wurde zwar noch länger, aber ich habe versucht ihn lesbarer (durch: strukturieren, konsequent mit Einklappstellen versehen, Kommentare ergänzen) zu machen. Näheres ist im Quelltext selbst unter
Tipps zum Quelltext
beschrieben. Auch die Quell-Text-Tools die ZackZackOrdner mitbringt (Menu | ? | die Einträge in der unteren Hälfte) sollten beim ansehen unterstützen.

Die Hilfe-Dateien und die Versions-Informationen ( beide dito im ?-Menu) liefern einen Überblick und viele Details.

PS. zur einfachen Installation kann AktualisiereZackZackOrdner.ahk gestartet werden.
Win 10 Home (x64) or Win 7 Enterprise
https://github.com/Grrdi/ZackZackOrdner ... master.zip --> get folders on the quick

Return to “Skripte und Funktionen”

Who is online

Users browsing this forum: No registered users and 3 guests