Post by Meister Lampe » 14 May 2020, 16:39
Hallo just me!
Mein aktuelles Problem dreht sich mehr um das externe Abspeichern der Variablen in den Dateien
Auswahl.txt und
Bestandsvorgaben4SP.txt, als um das Füllen von den internen Variablen. Klar, daß das vorher dafür richtig gemacht werden muß. Zur Kontrolle habe ich aber den Einblick in diese externen Dateien.
Was ich benötige, ist die Abspeicherung des Inhalts der 4.Spalte ("Zaehlart") zusammen mit dem Bestandsnahmen ("AktSign"), damit auch verschiedene Zählschemata für unterschiedliche Objekte denselben Bestandes verwedet werden können und die Meldung "Der Bestandsname ist bereits vergeben!" entsprechend nur noch bei deckungsgleichen Namen auftaucht. Umgekehrt geht es darum, die Vorlagen wiederzuerkennen und auszulesen, jetzt nicht nur nach einem, sondern zwei Kriterien.
Ich habe das jetzt mal versucht, indem ich mir dafür noch eine weitere Textdatei angelegt habe. Für die Variable
AktSign (Bestandsname) gibt es jetzt
AuswahlSP1.txt (1.Spalte in der Tabelle) und für die Variable
ZaehlArt (Vorlagenformat) heißt sie
AuswahlSP4 (4.Spalte). Vielleicht hätte man die auch - wahrscheinlich sogar eleganter - zusammen in einer Datei speichern können, aber ich hatte keine Ahnung, wie.
Das Erstellen neuer Vorlagen und das Updaten von den Auswahldateien scheint jetzt zu klappen. Was noch nicht funktioniert, ist die Warnung, daß die Vorlage nicht zweimal vergeben werden darf.
Bis jetzt stand dort:
Code: Select all
; AktSignEingabe darf nicht bereits vergeben sein
Loop, % LV_GetCount()
{
LV_GetText(AktSignLV, A_Index)
If (AktSignEingabe = AktSignLV)
{
MsgBox, 16, Fehler!, Der Bestandsname ist bereits vergeben!
GuiControl, Focus, AktSignEingabe
Return
}
}
Ich habe es jetzt mal versucht mit:
Code: Select all
; AktSignEingabe darf nicht bereits vergeben sein
Loop, % LV_GetCount()
{
LV_GetText(AktSignLV, A_Index)
LV_GetText(ZaehlArtLV, A_Index)
If (AktSignEingabe = AktSignLV and ZaehlArt = ZaehlArtLV)
{
MsgBox, 16, Fehler!, Die Vorlage ist bereits vergeben!
GuiControl, Focus, AktSignEingabe
Return
}
}
Aber jetzt werden gleiche Vorlagen doppelt und sogar mehrmals zugelassen.
Muß man für beide Spalten getrennte Loops erstellen und dann womöglich ineinander verschachteln?
Hier also der neue Code (der Teil für die Gui und die Vorlagenauswahl und -erstellung):
Code: Select all
; Vorlagendateien zum Abspeichern definieren und deren Pfad bestimmen
If FileExist(PfadImStaf)
{
Arbeitsdateien := PfadImStaf
AuswahlDateiSP1 := A_ScriptDir . "\AuswahlSP1.txt" ; zuletzt verwendeter Vorlagenname, lokal gespeichert
AuswahlDateiSP4 := A_ScriptDir . "\AuswahlSP4.txt" ; zuletzt verwendete Zählart, lokal gespeichert
}
else
{
Arbeitsdateien := A_ScriptDir . "\Arbeitsdateien AHK-Tool StAF\"
AuswahlDateiSP1 := Arbeitsdateien . "\AuswahlSP1.txt" ; zuletzt verwendeter Vorlagenname, lokal gespeichert
AuswahlDateiSP4 := Arbeitsdateien . "\AuswahlSP4.txt" ; zuletzt verwendete Zählart, lokal gespeichert
}
VorgabenDatei := Arbeitsdateien . "\Bestandsvorgaben4SP.txt"
Anleitung := Arbeitsdateien . "\Erläuterungen AHK-Tool StAF_" . ToolVersion . ".pdf"
VD_Vorlage := Arbeitsdateien . "\Deckblattvorlage4.docx"
;Wartesymbol := Arbeitsdateien . "\Farbenscheibe.gif"
^!F7::Run, %VorgabenDatei%
!F7::Run, %Anleitung%
;+^F7::Run, %AuswahlDatei%
;------------------------------------------------------------------------
; Vorlagen und Auswahlen aufrufen und einlesen
F7::
Auswahlfenster:
AuswahlSP1 := FileExist(AuswahlDateiSP1) ? FileOpen(AuswahlDateiSP1, "r").Read() : ""
AuswahlSP4 := FileExist(AuswahlDateiSP4) ? FileOpen(AuswahlDateiSP4, "r").Read() : ""
If !(File := FileOpen(VorgabenDatei, "r")){
MsgBox, 16, Fehler!, Die Datei %VorgabenDatei% konnte nicht geöffnet werden!
; ExitApp
}
Vorgaben := StrSplit(File.Read(), "`n", "`r")
File.Close()
; Auswahlfenster erstellen und anzeigen
Rows := (L := Vorgaben.Length()) > 10 ? 10 : L
GuiText_1 := "Wählen Sie hier den Standard für das nächste Umbenennungsprojekt aus!"
Gui, Margin, 20, 20
Gui, Font, s10 , Verdana
Gui, Add, Text, xm w350, %GuiText_1%
Gui, Add, ListView, xm wp r%Rows% -Multi vBestandAuswahl Sort, Bestand|Signatur|Index|Zählart
For Each, Vorgabe In Vorgaben
{
Felder := StrSplit(Vorgabe, "`t")
Option := (Felder[1] = AuswahlSP1 and Felder[4] = AuswahlSP4) ? "Focus Select" : ""
LV_Add(Option, Felder*)
}
Loop, % LV_GetCount("Column")
LV_ModifyCol(A_Index, "AutoHdr")
; Auswahl des Vorlagentyps per DropDownList:
Gui, Add, DropDownList, xm w350 Choose1 vZaehlArtAuswahl gZaehlart, vollständige Akte|Faszikel ohne Deckblatt|abweichende Dokumentationsformate|ohne Indizes
;Gui, submit, nohide
Gui, Add, Edit, cblue xm h25 w152 vAktSignEingabe, ;%Auswahl%
Gui, Add, Edit, cblue x189 yp h25 w82 vSignEingabe, ;%SignVorlage%
Gui, Add, Edit, cblue x288 yp h25 w82 vIndexEingabe, ;%IndexVorlage%
Gui, Add, Text, x176 yp+5 h25 w13 , % chr(863)
Gui, Add, Text, x275 yp+4 h25 w13 , % chr(862)
Gui, Add, Button, xm h30 w100 Default gAnwenden, Anwenden
; Button "Neu Erstellen" wird in der Standardversion auskommentiert
Gui, Add, Button, x145 yp h30 w100 gNeuerstellen, Neu Erstellen
Gui, Add, Button, x270 yp h30 w100 gAbbrechen, Abbrechen
Menu, Tray, Icon, , , 1
GuiControl, Focus, BestandAuswahl
Gui, Show, x100 y100, Signierungsvorlagen
Return
Zaehlart:
Gui, submit, nohide
If (ZaehlArtAuswahl = "ohne Indizes")
{
GuiControl, Disable, IndexEingabe
}
else
{
GuiControl, Enable, IndexEingabe
}
return
;------------------------------------------------------------------------
; Auswahl übernehmen
Anwenden:
If !(Row := LV_GetNext())
{
MsgBox, 16, Fehler!, Bitte wählen Sie einen Bestand aus!
GuiControl, Focus, BestandAuswahl
Return
}
LV_GetText(AktSign, Row, 1)
LV_GetText(SignVorlage, Row, 2)
LV_GetText(IndexVorlage, Row, 3)
;LV_GetText(BildTyp, Row, 4)
LV_GetText(ZaehlArt, Row, 4)
;~ StellenSign := StrLen(SignVorlage)
StellenSignNeu := StrLen(SignVorlage)
;~ If (IndexVorlage = "")
;~ {
;~ StellenIndex := 0
;~ }
;~ else
;~ StellenIndex := StrLen(IndexVorlage)
StellenIndexNeu := StrLen(IndexVorlage)
AktSignNeu := AktSign
;~ ZaehlArtAuswahl := ZaehlArt
; hier müßte wohl auch die externe Abspeicherung stattfinden!
If (AktSign <> AuswahlSP1 or ZaehlArt <> AuswahlSP4)
{
AuswahlSP1 := AktSign
AuswahlSP4 := ZaehlArt
File := FileOpen(AuswahlDateiSP1, "w")
File.Write(AuswahlSP1)
File.Close()
File := FileOpen(AuswahlDateiSP4, "w")
File.Write(AuswahlSP4)
File.Close()
}
Gui, Destroy
Gosub, Anzeige
Menu, Tray, Icon, , , 0
Return
;------------------------------------------------------------------------
VorlagenDefinieren:
;~ AktSignNeu := AktSignEingabe
;~ StellenSignNeu := StrLen(SignEingabe)
;~ StellenIndexNeu := StrLen(IndexEingabe)
If (ZaehlArtAuswahl = "vollständige Akte" or ZaehlArt = "vollst. Akte")
{
SignVorlage := Format("{:0" . StellenSignNeu . "}", 1)
ZaehlArtZeichen := "-"
IndexVorlage := Format("{:0" . StellenIndexNeu . "}", 0)
ZaehlArt := "vollst. Akte"
}
If (ZaehlArtAuswahl = "Faszikel ohne Deckblatt" or ZaehlArt = "ohne Deckblatt")
{
SignVorlage := Format("{:0" . StellenSignNeu . "}", 1)
ZaehlArtZeichenn := "-"
IndexVorlage := Format("{:0" . StellenIndexNeu . "}", 1)
ZaehlArt := "ohne Deckblatt"
}
If (ZaehlArtAuswahl = "abweichende Dokumentationsformate" or ZaehlArt = "Einlagen")
{
SignVorlage := Format("{:0" . StellenSignNeu . "}", 1)
ZaehlArtZeichen := "_"
IndexVorlage := Format("{:0" . StellenIndexNeu . "}", 1)
ZaehlArt := "Einlagen"
}
Else If (ZaehlArtAuswahl = "ohne Indizes" or ZaehlArt = "ohne Index")
{
SignVorlage := Format("{:0" . StellenSignNeu . "}", 1)
ZaehlArtZeichen := ""
IndexVorlage := ""
ZaehlArt := "ohne Index"
}
return
;------------------------------------------------------------------------
; Neue Vorlage abspeichern
Neuerstellen:
Gui, Submit, NoHide ; Speichert die Benutzereingaben für eine neue Vorlage
; AktSignEingabe darf nicht leer sein
AktSignEingabe := Trim(AktSignEingabe)
If (StrLen(AktSignEingabe) = 0)
{
MsgBox, 16, Fehler!, Der Bestandsname darf nicht leer sein!
GuiControl, Focus, AktSignEingabe
Return
}
; AktSignEingabe darf nicht bereits vergeben sein
Loop, % LV_GetCount()
{
LV_GetText(AktSignLV, A_Index)
LV_GetText(ZaehlArtLV, A_Index)
If (AktSignEingabe = AktSignLV and ZaehlArt = ZaehlArtLV)
{
MsgBox, 16, Fehler!, Die Vorlage ist bereits vergeben!
GuiControl, Focus, AktSignEingabe
Return
}
}
; SignEingabe darf nicht leer sein
SignEingabe := Trim(SignEingabe)
If (StrLen(SignEingabe) = 0)
{
MsgBox, 16, Fehler!, Die Signaturvorgabe darf nicht leer sein!
GuiControl, Focus, SignEingabe
Return
}
; IndexEingabe darf nicht leer sein
IndexEingabe := Trim(IndexEingabe)
If (StrLen(IndexEingabe) = 0 and ZaehlArtAuswahl <> "ohne Indizes")
{
MsgBox, 16, Fehler!, Die Indexvorgabe darf nur bei der Auswahl "ohne Indizes" leer sein!`nWählen Sie eine andere Auswahl oder füllen Sie das Indexfeld!
GuiControl, Focus, IndexEingabe
Return
}
; Alles OK, verarbeiten
AktSignNeu := AktSignEingabe
StellenSignNeu := StrLen(SignEingabe)
StellenIndexNeu := StrLen(IndexEingabe)
Gosub, VorlagenDefinieren
FileAppend , `n%AktSignNeu%`t%SignVorlage%`t%IndexVorlage%`t%ZaehlArt%, %VorgabenDatei%
; Auswahldatei updaten
;~ AuswahlNeu = %AktSignNeu%`t%ZaehlArtauswahl%
;~ If !(AuswahlNeu = Auswahl)
;~ {
;~ Auswahl := AuswahlNeu
;~ File := FileOpen(AuswahlDatei, "w")
;~ File.Write(AuswahlNeu)
;~ File.Close()
;~ }
If (AktSignNeu <> AuswahlSP1 or ZaehlArt <> AuswahlSP4)
{
AuswahlSP1 := AktSignNeu
AuswahlSP4 := ZaehlArt
File := FileOpen(AuswahlDateiSP1, "w")
File.Write(AuswahlSP1)
File.Close()
File := FileOpen(AuswahlDateiSP4, "w")
File.Write(AuswahlSP4)
File.Close()
}
; Abschluß-Message
Gui, Destroy
VorschauMsgNeu = %AktSignNeu%_%SignVorlage%%ZaehlArtZeichen%%IndexVorlage%
MsgAnzeige =
(
Ihre neu erstellte Vorlage %VorschauMsgNeu% wurde abgespeichert.
Möchten Sie zurück zur Vorlagenauswahl?
)
MsgBox, 68, , %MsgAnzeige%
IfMsgBox Yes
gosub, Auswahlfenster
else
gosub, Anzeige
Return
;------------------------------------------------------------------------
; Auswahl abbrechen -> Programm beenden
Abbrechen:
GuiClose:
Gui, Destroy
return
;------------------------------------------------------------------------
; Vorschau mit Progresselement statt MsgBox, damit Schrift formatierbar ist
^F7::
Anzeige:
If (AktSign = "")
{
LeerAnzeige = Es ist keine Bestandsvorlage ausgewählt!
Progress, m2 fs12 zh0 ct0000ff CWffffff B, %LeerAnzeige%, , Vorschau, Verdana
}
else
{
Gosub, VorlagenDefinieren
;~ VorschauSign := Format("{:0" . StellenSign . "}", 1)
;~ If (StellenIndex = "0")
;~ {
;~ VorschauMsg = %AktSign%_%VorschauSign%
;~ }
;~ else
;~ {
;~ VorschauIndex := Format("{:0" . StellenIndex . "}", 0)
;~ VorschauMsg = %AktSign%_%VorschauSign%%ZaehlArtZeichen%%VorschauIndex%
;~ }
VorschauMsg = %AktSign%_%SignVorlage%%ZaehlArtZeichen%%IndexVorlage%
Progress, m2 fs12 zh0 ct0000ff CWffffff B, %VorschauMsg%, , Vorschau, Verdana
}
SetTimer, ProgressOff, 1500
Return
ProgressOff:
Progress, Off
Return
Wenn diese Module um die Gui und die Vorlagen erstmal funktionieren, kann ich mich daran machen, die Anderen, insbesondere die Umbenennungsroutinen, für die Differenzierung nach den unterschiedlichen Vorlagen fit zu machen.
Viele Grüße von Meister Lampe
Hallo just me!
Mein aktuelles Problem dreht sich mehr um das externe Abspeichern der Variablen in den Dateien [c]Auswahl.txt[/c] und [c]Bestandsvorgaben4SP.txt[/c], als um das Füllen von den internen Variablen. Klar, daß das vorher dafür richtig gemacht werden muß. Zur Kontrolle habe ich aber den Einblick in diese externen Dateien.
Was ich benötige, ist die Abspeicherung des Inhalts der 4.Spalte ("Zaehlart") zusammen mit dem Bestandsnahmen ("AktSign"), damit auch verschiedene Zählschemata für unterschiedliche Objekte denselben Bestandes verwedet werden können und die Meldung "Der Bestandsname ist bereits vergeben!" entsprechend nur noch bei deckungsgleichen Namen auftaucht. Umgekehrt geht es darum, die Vorlagen wiederzuerkennen und auszulesen, jetzt nicht nur nach einem, sondern zwei Kriterien.
Ich habe das jetzt mal versucht, indem ich mir dafür noch eine weitere Textdatei angelegt habe. Für die Variable [c]AktSign[/c] (Bestandsname) gibt es jetzt [c]AuswahlSP1.txt[/c] (1.Spalte in der Tabelle) und für die Variable [c]ZaehlArt[/c] (Vorlagenformat) heißt sie [c]AuswahlSP4[/c] (4.Spalte). Vielleicht hätte man die auch - wahrscheinlich sogar eleganter - zusammen in einer Datei speichern können, aber ich hatte keine Ahnung, wie.
Das Erstellen neuer Vorlagen und das Updaten von den Auswahldateien scheint jetzt zu klappen. Was noch nicht funktioniert, ist die Warnung, daß die Vorlage nicht zweimal vergeben werden darf.
Bis jetzt stand dort:
[code]; AktSignEingabe darf nicht bereits vergeben sein
Loop, % LV_GetCount()
{
LV_GetText(AktSignLV, A_Index)
If (AktSignEingabe = AktSignLV)
{
MsgBox, 16, Fehler!, Der Bestandsname ist bereits vergeben!
GuiControl, Focus, AktSignEingabe
Return
}
}[/code]
Ich habe es jetzt mal versucht mit:
[code]; AktSignEingabe darf nicht bereits vergeben sein
Loop, % LV_GetCount()
{
LV_GetText(AktSignLV, A_Index)
LV_GetText(ZaehlArtLV, A_Index)
If (AktSignEingabe = AktSignLV and ZaehlArt = ZaehlArtLV)
{
MsgBox, 16, Fehler!, Die Vorlage ist bereits vergeben!
GuiControl, Focus, AktSignEingabe
Return
}
}[/code]
Aber jetzt werden gleiche Vorlagen doppelt und sogar mehrmals zugelassen.
Muß man für beide Spalten getrennte Loops erstellen und dann womöglich ineinander verschachteln?
Hier also der neue Code (der Teil für die Gui und die Vorlagenauswahl und -erstellung):
[code]; Vorlagendateien zum Abspeichern definieren und deren Pfad bestimmen
If FileExist(PfadImStaf)
{
Arbeitsdateien := PfadImStaf
AuswahlDateiSP1 := A_ScriptDir . "\AuswahlSP1.txt" ; zuletzt verwendeter Vorlagenname, lokal gespeichert
AuswahlDateiSP4 := A_ScriptDir . "\AuswahlSP4.txt" ; zuletzt verwendete Zählart, lokal gespeichert
}
else
{
Arbeitsdateien := A_ScriptDir . "\Arbeitsdateien AHK-Tool StAF\"
AuswahlDateiSP1 := Arbeitsdateien . "\AuswahlSP1.txt" ; zuletzt verwendeter Vorlagenname, lokal gespeichert
AuswahlDateiSP4 := Arbeitsdateien . "\AuswahlSP4.txt" ; zuletzt verwendete Zählart, lokal gespeichert
}
VorgabenDatei := Arbeitsdateien . "\Bestandsvorgaben4SP.txt"
Anleitung := Arbeitsdateien . "\Erläuterungen AHK-Tool StAF_" . ToolVersion . ".pdf"
VD_Vorlage := Arbeitsdateien . "\Deckblattvorlage4.docx"
;Wartesymbol := Arbeitsdateien . "\Farbenscheibe.gif"
^!F7::Run, %VorgabenDatei%
!F7::Run, %Anleitung%
;+^F7::Run, %AuswahlDatei%
;------------------------------------------------------------------------
; Vorlagen und Auswahlen aufrufen und einlesen
F7::
Auswahlfenster:
AuswahlSP1 := FileExist(AuswahlDateiSP1) ? FileOpen(AuswahlDateiSP1, "r").Read() : ""
AuswahlSP4 := FileExist(AuswahlDateiSP4) ? FileOpen(AuswahlDateiSP4, "r").Read() : ""
If !(File := FileOpen(VorgabenDatei, "r")){
MsgBox, 16, Fehler!, Die Datei %VorgabenDatei% konnte nicht geöffnet werden!
; ExitApp
}
Vorgaben := StrSplit(File.Read(), "`n", "`r")
File.Close()
; Auswahlfenster erstellen und anzeigen
Rows := (L := Vorgaben.Length()) > 10 ? 10 : L
GuiText_1 := "Wählen Sie hier den Standard für das nächste Umbenennungsprojekt aus!"
Gui, Margin, 20, 20
Gui, Font, s10 , Verdana
Gui, Add, Text, xm w350, %GuiText_1%
Gui, Add, ListView, xm wp r%Rows% -Multi vBestandAuswahl Sort, Bestand|Signatur|Index|Zählart
For Each, Vorgabe In Vorgaben
{
Felder := StrSplit(Vorgabe, "`t")
Option := (Felder[1] = AuswahlSP1 and Felder[4] = AuswahlSP4) ? "Focus Select" : ""
LV_Add(Option, Felder*)
}
Loop, % LV_GetCount("Column")
LV_ModifyCol(A_Index, "AutoHdr")
; Auswahl des Vorlagentyps per DropDownList:
Gui, Add, DropDownList, xm w350 Choose1 vZaehlArtAuswahl gZaehlart, vollständige Akte|Faszikel ohne Deckblatt|abweichende Dokumentationsformate|ohne Indizes
;Gui, submit, nohide
Gui, Add, Edit, cblue xm h25 w152 vAktSignEingabe, ;%Auswahl%
Gui, Add, Edit, cblue x189 yp h25 w82 vSignEingabe, ;%SignVorlage%
Gui, Add, Edit, cblue x288 yp h25 w82 vIndexEingabe, ;%IndexVorlage%
Gui, Add, Text, x176 yp+5 h25 w13 , % chr(863)
Gui, Add, Text, x275 yp+4 h25 w13 , % chr(862)
Gui, Add, Button, xm h30 w100 Default gAnwenden, Anwenden
; Button "Neu Erstellen" wird in der Standardversion auskommentiert
Gui, Add, Button, x145 yp h30 w100 gNeuerstellen, Neu Erstellen
Gui, Add, Button, x270 yp h30 w100 gAbbrechen, Abbrechen
Menu, Tray, Icon, , , 1
GuiControl, Focus, BestandAuswahl
Gui, Show, x100 y100, Signierungsvorlagen
Return
Zaehlart:
Gui, submit, nohide
If (ZaehlArtAuswahl = "ohne Indizes")
{
GuiControl, Disable, IndexEingabe
}
else
{
GuiControl, Enable, IndexEingabe
}
return
;------------------------------------------------------------------------
; Auswahl übernehmen
Anwenden:
If !(Row := LV_GetNext())
{
MsgBox, 16, Fehler!, Bitte wählen Sie einen Bestand aus!
GuiControl, Focus, BestandAuswahl
Return
}
LV_GetText(AktSign, Row, 1)
LV_GetText(SignVorlage, Row, 2)
LV_GetText(IndexVorlage, Row, 3)
;LV_GetText(BildTyp, Row, 4)
LV_GetText(ZaehlArt, Row, 4)
;~ StellenSign := StrLen(SignVorlage)
StellenSignNeu := StrLen(SignVorlage)
;~ If (IndexVorlage = "")
;~ {
;~ StellenIndex := 0
;~ }
;~ else
;~ StellenIndex := StrLen(IndexVorlage)
StellenIndexNeu := StrLen(IndexVorlage)
AktSignNeu := AktSign
;~ ZaehlArtAuswahl := ZaehlArt
; hier müßte wohl auch die externe Abspeicherung stattfinden!
If (AktSign <> AuswahlSP1 or ZaehlArt <> AuswahlSP4)
{
AuswahlSP1 := AktSign
AuswahlSP4 := ZaehlArt
File := FileOpen(AuswahlDateiSP1, "w")
File.Write(AuswahlSP1)
File.Close()
File := FileOpen(AuswahlDateiSP4, "w")
File.Write(AuswahlSP4)
File.Close()
}
Gui, Destroy
Gosub, Anzeige
Menu, Tray, Icon, , , 0
Return
;------------------------------------------------------------------------
VorlagenDefinieren:
;~ AktSignNeu := AktSignEingabe
;~ StellenSignNeu := StrLen(SignEingabe)
;~ StellenIndexNeu := StrLen(IndexEingabe)
If (ZaehlArtAuswahl = "vollständige Akte" or ZaehlArt = "vollst. Akte")
{
SignVorlage := Format("{:0" . StellenSignNeu . "}", 1)
ZaehlArtZeichen := "-"
IndexVorlage := Format("{:0" . StellenIndexNeu . "}", 0)
ZaehlArt := "vollst. Akte"
}
If (ZaehlArtAuswahl = "Faszikel ohne Deckblatt" or ZaehlArt = "ohne Deckblatt")
{
SignVorlage := Format("{:0" . StellenSignNeu . "}", 1)
ZaehlArtZeichenn := "-"
IndexVorlage := Format("{:0" . StellenIndexNeu . "}", 1)
ZaehlArt := "ohne Deckblatt"
}
If (ZaehlArtAuswahl = "abweichende Dokumentationsformate" or ZaehlArt = "Einlagen")
{
SignVorlage := Format("{:0" . StellenSignNeu . "}", 1)
ZaehlArtZeichen := "_"
IndexVorlage := Format("{:0" . StellenIndexNeu . "}", 1)
ZaehlArt := "Einlagen"
}
Else If (ZaehlArtAuswahl = "ohne Indizes" or ZaehlArt = "ohne Index")
{
SignVorlage := Format("{:0" . StellenSignNeu . "}", 1)
ZaehlArtZeichen := ""
IndexVorlage := ""
ZaehlArt := "ohne Index"
}
return
;------------------------------------------------------------------------
; Neue Vorlage abspeichern
Neuerstellen:
Gui, Submit, NoHide ; Speichert die Benutzereingaben für eine neue Vorlage
; AktSignEingabe darf nicht leer sein
AktSignEingabe := Trim(AktSignEingabe)
If (StrLen(AktSignEingabe) = 0)
{
MsgBox, 16, Fehler!, Der Bestandsname darf nicht leer sein!
GuiControl, Focus, AktSignEingabe
Return
}
; AktSignEingabe darf nicht bereits vergeben sein
Loop, % LV_GetCount()
{
LV_GetText(AktSignLV, A_Index)
LV_GetText(ZaehlArtLV, A_Index)
If (AktSignEingabe = AktSignLV and ZaehlArt = ZaehlArtLV)
{
MsgBox, 16, Fehler!, Die Vorlage ist bereits vergeben!
GuiControl, Focus, AktSignEingabe
Return
}
}
; SignEingabe darf nicht leer sein
SignEingabe := Trim(SignEingabe)
If (StrLen(SignEingabe) = 0)
{
MsgBox, 16, Fehler!, Die Signaturvorgabe darf nicht leer sein!
GuiControl, Focus, SignEingabe
Return
}
; IndexEingabe darf nicht leer sein
IndexEingabe := Trim(IndexEingabe)
If (StrLen(IndexEingabe) = 0 and ZaehlArtAuswahl <> "ohne Indizes")
{
MsgBox, 16, Fehler!, Die Indexvorgabe darf nur bei der Auswahl "ohne Indizes" leer sein!`nWählen Sie eine andere Auswahl oder füllen Sie das Indexfeld!
GuiControl, Focus, IndexEingabe
Return
}
; Alles OK, verarbeiten
AktSignNeu := AktSignEingabe
StellenSignNeu := StrLen(SignEingabe)
StellenIndexNeu := StrLen(IndexEingabe)
Gosub, VorlagenDefinieren
FileAppend , `n%AktSignNeu%`t%SignVorlage%`t%IndexVorlage%`t%ZaehlArt%, %VorgabenDatei%
; Auswahldatei updaten
;~ AuswahlNeu = %AktSignNeu%`t%ZaehlArtauswahl%
;~ If !(AuswahlNeu = Auswahl)
;~ {
;~ Auswahl := AuswahlNeu
;~ File := FileOpen(AuswahlDatei, "w")
;~ File.Write(AuswahlNeu)
;~ File.Close()
;~ }
If (AktSignNeu <> AuswahlSP1 or ZaehlArt <> AuswahlSP4)
{
AuswahlSP1 := AktSignNeu
AuswahlSP4 := ZaehlArt
File := FileOpen(AuswahlDateiSP1, "w")
File.Write(AuswahlSP1)
File.Close()
File := FileOpen(AuswahlDateiSP4, "w")
File.Write(AuswahlSP4)
File.Close()
}
; Abschluß-Message
Gui, Destroy
VorschauMsgNeu = %AktSignNeu%_%SignVorlage%%ZaehlArtZeichen%%IndexVorlage%
MsgAnzeige =
(
Ihre neu erstellte Vorlage %VorschauMsgNeu% wurde abgespeichert.
Möchten Sie zurück zur Vorlagenauswahl?
)
MsgBox, 68, , %MsgAnzeige%
IfMsgBox Yes
gosub, Auswahlfenster
else
gosub, Anzeige
Return
;------------------------------------------------------------------------
; Auswahl abbrechen -> Programm beenden
Abbrechen:
GuiClose:
Gui, Destroy
return
;------------------------------------------------------------------------
; Vorschau mit Progresselement statt MsgBox, damit Schrift formatierbar ist
^F7::
Anzeige:
If (AktSign = "")
{
LeerAnzeige = Es ist keine Bestandsvorlage ausgewählt!
Progress, m2 fs12 zh0 ct0000ff CWffffff B, %LeerAnzeige%, , Vorschau, Verdana
}
else
{
Gosub, VorlagenDefinieren
;~ VorschauSign := Format("{:0" . StellenSign . "}", 1)
;~ If (StellenIndex = "0")
;~ {
;~ VorschauMsg = %AktSign%_%VorschauSign%
;~ }
;~ else
;~ {
;~ VorschauIndex := Format("{:0" . StellenIndex . "}", 0)
;~ VorschauMsg = %AktSign%_%VorschauSign%%ZaehlArtZeichen%%VorschauIndex%
;~ }
VorschauMsg = %AktSign%_%SignVorlage%%ZaehlArtZeichen%%IndexVorlage%
Progress, m2 fs12 zh0 ct0000ff CWffffff B, %VorschauMsg%, , Vorschau, Verdana
}
SetTimer, ProgressOff, 1500
Return
ProgressOff:
Progress, Off
Return
[/code]
Wenn diese Module um die Gui und die Vorlagen erstmal funktionieren, kann ich mich daran machen, die Anderen, insbesondere die Umbenennungsroutinen, für die Differenzierung nach den unterschiedlichen Vorlagen fit zu machen.
Viele Grüße von Meister Lampe