Hallo just me!
Durch Kollegen bin ich darauf aufmerksam gemacht worden, daß es doch Signaturen unterschiedlicher Struktur für denselben Bestand geben kann, also auch mit derselben
AktSign. Das macht es nötig, die Angaben etwa differenzierter einzugeben und in der
ListView nicht nur nach
AktSign, sondern auch nach mindestens einem weiteren Argument zu unterscheiden, weil sonst die Eindeutigkeit ("..ist bereits vergeben!") nicht gewährleistet ist. Dasselbe gilt dann auch für die Abspeicherung in der internen Auswahl.txt.
Bis jetzt war die Auswahl und die Umbenennungsroutine ausgelegt für Namen nach dem Schema
A 123--4_001-000, also [Bestandsname][Unterstrich][Signaturname][Bindestrich][laufender Index, beginnt mit 0]
oder
A 123--4_001, also [Bestandsname][Unterstrich][Signaturname]
Es gibt aber noch solche, welche den Index mit Unterstrich abgetrennt haben sollen und ihn mit 1 zu zählen beginnen:
A 123--4_001_001, also [Bestandsname][Unterstrich][Signaturname][Bindestrich][laufender Index, beginnt mit 1]
Um das Problem zu lösen, habe ich die Tabelle 4spaltig gemacht und die weitere Spalte "Bildtyp" genannt. Mein 1. Versuch war dann tatsächlich mithilfe einer
CheckBox, mit der ich bei der Eingabe unterscheiden konnte. Dann habe ich den Unterstrich durch eine Variable "BildTypZeichen" ersetzt. Damit läuft auch die Umbenennungsroutine schon ganz gut, nur das eindeutige Abspeichern und Wiederaufrufen geht noch nicht.
Hier ist mal der Code:
Code: Select all
; Vorlagen und Auswahlen aufrufen und einlesen
F8::
Auswahlfenster:
Auswahl := FileExist(AuswahlDatei) ? FileOpen(AuswahlDatei, "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|Bildtyp
For Each, Vorgabe In Vorgaben
{
Felder := StrSplit(Vorgabe, "`t")
Option := (Felder[1] = Auswahl) ? "Focus Select" : ""
LV_Add(Option, Felder*)
}
Loop, % LV_GetCount("Column")
LV_ModifyCol(A_Index, "AutoHdr")
Gui, Add, Edit, cblue xm h25 w100 vAktSignEingabe, ;%Auswahl%
Gui, Add, Edit, cblue x137 yp h25 w70 vSignEingabe, ;%SignVorlage%
Gui, Add, Edit, cblue x224 yp h25 w70 vIndexEingabe, ;%IndexVorlage%
Gui, Add, Text, x124 yp+5 h25 w13 , % chr(863)
Gui, Add, Text, x211 yp+4 h25 w13 , % chr(862)
Gui, Add, Checkbox, xm yp+25 h30 w18 vSignTyp, ;keine vollständige Akte?
Gui, Add, Text, x50 yp h30 w300 , Einzelne Scans oder abweichende Dokumentationsformate
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
;------------------------------------------------------------------------
; 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)
StellenSign := StrLen(SignVorlage)
If (IndexVorlage = "-")
{
StellenIndex := 0
}
else
StellenIndex := StrLen(IndexVorlage)
LetzteSign := 0
; hier müßte wohl auch die externe Abspeicherung stattfinden!
If (AktSign <> Auswahl)
{
Auswahl := AktSign
File := FileOpen(AuswahlDatei, "w")
File.Write(Auswahl)
File.Close()
}
Gui, Destroy
Gosub, Anzeige
Menu, Tray, Icon, , , 0
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)
If (AktSignEingabe = AktSignLV)
{
MsgBox, 16, Fehler!, Der Bestandsname 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)
{
MsgBox, 16, Fehler!, Die Indexvorgabe darf nicht leer sein!
GuiControl, Focus, IndexEingabe
Return
}
; Alles OK, verarbeiten
AktSignNeu := AktSignEingabe
StellenSignNeu := StrLen(SignEingabe)
SignVorlageNeu := Format("{:0" . StellenSignNeu . "}", 0)
If (SignTyp = 0) ; Trennzeichen für den Index bei ganzen Akten oder Einzelbildern unterscheiden(Check<box)
{
BildTypNeu := "Ganze Akte"
BildTypZeichen := "-"
}
else
{
BildTypNeu := "Einzelscans"
BildTypZeichen := "_"
}
If (IndexEingabe = "-")
{
IndexVorlageNeu := "-"
}
else
{
StellenIndexNeu := StrLen(IndexEingabe)
IndexVorlageNeu := Format("{:0" . StellenIndexNeu . "}", 0)
}
FileAppend , `n%AktSignNeu%`t%SignVorlageNeu%`t%IndexVorlageNeu%`t%BildTypNeu%, %VorgabenDatei%
; Auswahldatei updaten
If (IndexVorlageNeu = "-")
{
VorschauMsgNeu = %AktSignNeu%_%SignVorlageNeu%
StellenIndex := "-"
LetzteSign := "-"
}
else
{
VorschauMsgNeu = %AktSignNeu%_%SignVorlageNeu%%BildTypzeichen%%IndexVorlageNeu%
StellenIndex := StellenIndexNeu
LetzteSign := 0
}
AktSign := AktSignNeu
StellenSign := StellenSignNeu
If (AktSign <> Auswahl)
{
Auswahl := AktSign
File := FileOpen(AuswahlDatei, "w")
File.Write(Auswahl)
File.Close()
}
; Abschluß-Message
Gui, Destroy
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
^F8::
Anzeige:
If (AktSign = "")
{
LeerAnzeige = Es ist keine Bestandsvorlage ausgewählt!
Progress, m2 fs12 zh0 ct0000ff CWffffff B, %LeerAnzeige%, , Vorschau, Verdana
}
else
{
VorschauSign := Format("{:0" . StellenSign . "}", 1)
If (StellenIndex = "0")
{
VorschauMsg = %AktSign%_%VorschauSign%
}
else
{
VorschauIndex := Format("{:0" . StellenIndex . "}", 0)
VorschauMsg = %AktSign%_%VorschauSign%-%VorschauIndex%
}
Progress, m2 fs12 zh0 ct0000ff CWffffff B, %VorschauMsg%, , Vorschau, Verdana
ModulAuswahl := 0
}
SetTimer, ProgressOff, 1500
Return
ProgressOff:
Progress, Off
Return
;------------------------------------------------------------------------
; Bilder umbenennen im Windows Explorer
#IfWinActive ahk_group Explorer
;------------------------------------------------------------------------
; Indexnummerierung auf Eingabebefehl 'Signaturnummer, Startindex' in Inputbox
; nach Auswahl der Dateien mit der Maus
<!LButton::
; Abklären, ob bereits eine Bestandsvorlage für diese Anwendung ausgewählt wurde
If !(ModulAuswahl = 1 or ModulAuswahl = 0)
{
MsgBox, 17, Keine Bestandsvorlage!, Sie müssen zuerst eine Bestandsvorlage auswählen!
IfMsgBox Ok
{
Gosub Auswahlfenster
ModulAuswahl := 1
return
}
else
return
}
else
ModulAuswahl := 1
; Explorerfenster bestimmen
ExplorerID := WinExist()
ShellWin := 0
For Win In ShellApp.Windows {
If (Win.HWND = ExplorerID) {
ShellWin := Win
Break
}
}
If !(ShellWin) ; das aktive Explorerfenster wurde nicht gefunden, Abbruch!
Return
; Auswahl nach unten erweitern
Send, +{LButton}
; Auswahl einlesen und bereinigen. Die erste Datei (mit dem Fokus) kommt ans Ende.
; -> docs.microsoft.com/en-us/windows/desktop/shell/shellfolderview-selecteditems
If !(ShellWin.Document.SelectedItems.Count > 0) { ; keine Auswahl
MsgBox, Sie müssen mindestens eine Datei markieren!
Return
}
SelectedItems := []
For Item In ShellWin.Document.SelectedItems
SelectedItems.Push(Item)
LetzteDatei := SelectedItems.RemoveAt(1) ; erste (bzw. letzte) Datei aus dem Array entfernen ...
SelectedItems.Push(LetzteDatei) ; ... und wieder anhängen
Anzahl := SelectedItems.Length()
; Prüfen, ob die Dateinamenserweiterungen angezeigt werden
; -> docs.microsoft.com/en-us/windows/desktop/shell/shellfolderview-viewoptions
ShowExt := (ShellWin.Document.ViewOptions & 2) ; SFVVO_SHOWEXTENSIONS (0x00000002)
; MsgBox, 0, ShowExt, %ShowExt%
If (StellenIndex = "0") ; fragt, ob Index vorhanden und wählt die Routine aus
Gosub, OhneIndex
Else
Gosub, MitIndex
return
MitIndex: ; zum Umbenennen, wenn Index vorhanden
; Benutzereingaben zum Umbenennen holen
LetzteSign := Format("{:0" . StellenSign . "}", ++LetzteSign) ; Erhöht die letzte Signatur um 1 und setzt sie auf 4 Ziffern
InputBox, BoxSign, Vorschau, Es werden %Anzahl% Bilder umsigniert, , 225, 125, , , , ,%LetzteSign%
If (ErrorLevel)
{
LetzteSign--
Return
}
Progress, 2: m2 fs12 zh0 ct0000ff CWffffff B, Bin gleich fertig ..., , Vorschau, Verdana
If !InStr(BoxSign, ",") ; Prüft, ob ein anderer Startindex durch Komma getrennt eingegeben wurde
{
LetzteSign := Format("{:0" . StellenSign . "}", BoxSign) ; Setzt neue Signatur auf 4 Ziffern
If (BildTyp = "Einzelscan")
LetzterIndex := 1 ; setzt Index für Einzelscans auf 1
else
LetzterIndex := 0 ; setzt Index auf ganze Akten auf 0
}
Else
{
StringSplit, BoxArray, BoxSign, `,
If (BoxArray1 = "")
LetzteSign := Format("{:0" . StellenSign . "}", LetzteSign) ; Erhöht die letzte Signatur um 1 und setzt sie auf 4 Ziffern
Else
LetzteSign := Format("{:0" . StellenSign . "}", BoxArray1) ; Setzt neue Signatur auf 4 Ziffern
LetzterIndex := BoxArray2
}
; Dateien umbenennen
ShellWin.Document.SelectItem(SelectedItems[1], 4)
For Index, Item In SelectedItems {
ItemPath := Item.Path
SplitPath, ItemPath, DateiName, , Erweiterung
LetzterIndex := Format("{:0" . StellenIndex . "}", LetzterIndex) ; Setzt Index auf 1 in 2 Ziffern
Item.Name := AktSign . "_" . LetzteSign . BildTypzeichen . LetzterIndex . (ShowExt ? "." . Erweiterung : "")
LetzterIndex++
}
;SplashImage, Off
; Fertig
; Letzte Datei selektieren
; -> docs.microsoft.com/en-us/windows/desktop/shell/shellfolderview-selectitem
ShellWin.Document.SelectItem(SelectedItems[Anzahl], 29)
For Index, Item In SelectedItems
Item := ""
ShellWin := ""
Progress, 2: Off
Return
OhneIndex: ; zum Umbenennen, wenn kein Index vorhanden
; Benutzereingaben zum Umbenennen holen
If (LetzteSign = 0)
LetzteSign := Format("{:0" . StellenSign . "}", 1)
else
LetzteSign := Format("{:0" . StellenSign . "}", LetzteSign)
InputBox, BoxSign, Vorschau, Es werden %Anzahl% Bilder umsigniert, , 225, 125, , , , ,%LetzteSign%
If (ErrorLevel) {
LetzteSign--
Return
}
Progress, 2: m2 fs12 zh0 ct0000ff CWffffff B, Bin gleich fertig ..., , Vorschau, Verdana
If !InStr(BoxSign, ",") { ; Prüft, ob ein anderer Startindex durch Komma getrennt eingegeben wurde
LetzteSign := Format("{:0" . StellenSign . "}", BoxSign) ; Setzt neue Signatur auf 4 Ziffern
LetzterIndex := 0 ; Setzt Index auf 0
}
Else {
StringSplit, BoxArray, BoxSign, `,
If (BoxArray1 = "")
LetzteSign := Format("{:0" . StellenSign . "}", LetzteSign) ; Erhöht die letzte Signatur um 1 und setzt sie auf 4 Ziffern
Else
LetzteSign := Format("{:0" . StellenSign . "}", BoxArray1) ; Setzt neue Signatur auf 4 Ziffern
LetzterIndex := BoxArray2
}
; Dateien umbenennen
ShellWin.Document.SelectItem(SelectedItems[1], 4)
For Sign, Item In SelectedItems {
ItemPath := Item.Path
SplitPath, ItemPath, DateiName, , Erweiterung
LetzteSign := Format("{:0" . StellenSign . "}", LetzteSign) ; Setzt Index auf 1 in 2 Ziffern
Item.Name := AktSign . "_" . LetzteSign . (ShowExt ? "." . Erweiterung : "")
LetzteSign++
}
;SplashImage, Off
; Fertig
; Letzte Datei selektieren
; -> docs.microsoft.com/en-us/windows/desktop/shell/shellfolderview-selectitem
ShellWin.Document.SelectItem(SelectedItems[Anzahl], 29)
For Sign, Item In SelectedItems
Item := ""
ShellWin := ""
Progress, 2: Off
return
Das war mir dann zu umständlich, weil ich hier 3 verschiedene - eigentlich gleichwertige - Optionen habe, die aber vollig unterschiedlich ausgewählt werden sollen (wenn kein Index dabei ist, soll ja ein Bindestrich in das Indexfeld eingegeben werden). Indbesondere, falls noch weitere Änderungen kommen sollten. Also habe ich es mit einer
DropDownList versucht. Und da bin ich aber noch ziemlich am Anfang.
Erstmal der Code für die
Gui:
Code: Select all
; Vorlagen und Auswahlen aufrufen und einlesen
F8::
Auswahlfenster:
Auswahl := FileExist(AuswahlDatei) ? FileOpen(AuswahlDatei, "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] = Auswahl) ? "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)
;~ If (IndexVorlage = "")
;~ {
;~ StellenIndex := 0
;~ }
;~ else
StellenIndex := StrLen(IndexVorlage)
;LetzteSign := 0
; hier müßte wohl auch die externe Abspeicherung stattfinden!
Gosub, VorlagenDefinieren
If (AktSign <> Auswahl)
{
Auswahl := AktSign
File := FileOpen(AuswahlDatei, "w")
File.Write(Auswahl)
File.Close()
}
;Gosub, VorlagenDefinieren
Gui, Destroy
Gosub, Anzeige
Menu, Tray, Icon, , , 0
Return
Die obige Spalte "Bildtyp" und die Variablen, die damit zusammenhängen, habe ich jetzt allgemeiner in "Zaehlart" umbenannt. Die Ausblendung des Index-Eingabefeldes nach der Auswahl von "ohne Index" klappt jetzt auch. Also nix mit Reisebüro.
Ich habe dann eine Fallunterscheidung aufgestellt, die wie bei den früheren Scripts für die verschiedenen Optionen die Variablen setzt:
Code: Select all
VorlagenDefinieren:
If (ZaehlArtAuswahl = vollständige Akte)
{
SignVorlage := Format("{:0" . StellenSignNeu . "}", 1)
ZaehlArtZeichen := "-"
IndexVorlage := Format("{:0" . StellenIndexNeu . "}", 0)
ZaehlArt := "vollst. Akte"
}
If (ZaehlArtAuswahl = Faszikel ohne Deckblatt)
{
SignVorlage := Format("{:0" . StellenSignNeu . "}", 1)
ZaehlArtZeichenn := "-"
IndexVorlage := Format("{:0" . StellenIndexNeu . "}", 1)
ZaehlArt := "ohne Deckblatt"
}
If (ZaehlArtAuswahl = abweichende Dokumentationsformate)
{
SignVorlage := Format("{:0" . StellenSignNeu . "}", 1)
ZaehlArtZeichen := "_"
IndexVorlage := Format("{:0" . StellenIndexNeu . "}", 1)
ZaehlArt := "Einlagen"
}
Else If (ZaehlArtAuswahl = ohne Indizes)
{
SignVorlage := Format("{:0" . StellenSignNeu . "}", 1)
ZaehlArtZeichen := ""
IndexVorlage := ""
ZaehlArt := "ohne Index"
}
return
Ich hatte gedacht, weil diese Fallunterscheidung je mehrmals auftaucht, sie als Subroutine zu erstellen. Ich weiß aber nicht, ab ich sie dann richtig aufgerufen habe. Im Code gehts dann weiter mit dem Erstellen:
Code: Select all
; 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)
If (AktSignEingabe = AktSignLV)
{
MsgBox, 16, Fehler!, Der Bestandsname 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)
Gosub, VorlagenDefinieren
FileAppend , `n%AktSignNeu%`t%SignVorlageNeu%`t%IndexVorlageNeu%`t%ZaehlArt%, %VorgabenDatei%
; Auswahldatei updaten
AuswahlNeu = %AktSignEingabe%`t%ZaehlArtauswahl%
If !(AuswahlNeu = Auswahl)
{
Auswahl := AuswahlNeu
File := FileOpen(AuswahlDatei, "w")
File.Write(AuswahlNeu)
File.Close()
}
; Abschluß-Message
Gui, Destroy
VorschauMsgNeu = %AktSign%_%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
^F8::
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 das Neuerstellen/Abspeichern und Auswählen der Vorlagen einmal klappt, dann wird es wohl keine große Schwierigkeit sein, die anderen Routinen, allen voran die zum Umbenennen, entsprechend anzupassen.
Viele Grüße von Meister Lampe