Also ich hatte das schon einmal getestet und die Variablen auch jetzt nochmal mithilfe des Codes, den Du mir gegeben hast, verglichen. Die eine bleibt zuerst leer, da es sich bei "ZaehlArt" und "ZahlArtAuswahl" um zwei unterschiedliche Variablen für dieselbe Sache handelt. Die erste wird intern benutzt und zum Abspeichern in der Tabelle. Die zweite ist die Auswahl in der DropDownList. In der Subroutine VorlagenDefinieren werden die beiden dann synchronisiert und auf die interne Variable gleichgesetzt. Ich habe in den Vergleich bei der Eingabe jetzt also ZahlArtAuswahl hineingesetzt:
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, 1)
LV_GetText(ZaehlArtLV, A_Index, 4)
;~ MsgBox, "%AktSignEingabe%" <-> "%AktSignLV%"`n"%ZaehlArtAuswahl%" <-> "%ZaehlArtLV%" " / " "Neu Erstellen"
If (AktSignEingabe = AktSignLV and ZaehlArtAuswahl = 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
VorschauMsg = %AktSign%_%SignVorlage%%ZaehlArtZeichen%%IndexVorlage%
Progress, m2 fs12 zh0 ct0000ff CWffffff B, %VorschauMsg%, , Vorschau, Verdana
}
SetTimer, ProgressOff, 1500
Return
ProgressOff:
Progress, Off
Return
Irgendwie muß das wohl doch an der logischen Formulierung des If-Ausdrucks liegen. Doch ich habe keine Ahnung, wie ich das richtig machen soll.
Viele Grüße von Meister Lampe