Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Thomas •->

Anmeldedatum: 08.02.2002 Beiträge: 14
|
Verfasst am: 22.08.2002 - 15:26 Titel: Dialog um Ordner anzulegen - mit Passwortabfrage |
|
|
Hallo Apple-Scripter
Ich habe ein Script gebaut, mit dem sich Auftragsordner nach Eingabe von Kundenname, Auftragsnummer, Jobbezeichnung und Speichervolumes selbst erzeugen.
Das geht sogar. (Oh Wunder, bei meinem Wissensstand)
Wenn ich aber auf Abbrechen klicke bekomme ich eine Fehlermeldung.
Wenn ich bei der Passworteingabe (um die Ordnerbez. zu ändern) auf Cancel klicke komme ich nicht in mein Ursprungsmenü zurück. usw...
Ich denke, das mit den Schleifen habe ich noch nicht richtig verstanden.
Ich versuche es mal hier reinzustellen, obwohl es schon sehr groß ist.
Bin jedem dankbar der mir ein Stück des Weges weiterhilft.
Thomas
property destFolder : {}
property AuftragsOrdner : {}
property job : {}
property actFolder : {}
property Auftragsnummer : {}
property restcommands : {}
property text1 : {}
property text2 : {}
property text3 : {}
property text4 : {}
property text5 : {}
property text6 : {}
property text7 : {}
property text8 : {}
property text9 : {}
property PasswortDialog : {size:[260, 95], contents:[¨
{class:push button, bounds:[190, 65, 250, 85], name:"OK", enabled:3}, ¨
{class:push button, bounds:[110, 65, 170, 85], name:"Cancel"}, ¨
{class:password field, bounds:[10, 36, 250, 36 + 16], name bounds:¨
[10, 10, 250, 26], name:"Enter Password:", value:""}], timeout after:60}
on run
tell application "Finder"
set Pfad1 to file "Ordnerprefs" of folder "Preferences" of folder "Systemordner" of startup disk
set temp to (open for access file Pfad1)
copy (read temp as list) to theResult
close access temp
set MeineListe to theResult
set Platte1 to disk "Filesharing"
set Platte2 to disk "Mac2go"
end tell
set theDialog to {size:{350, 250}, style:standard window, closeable:true, name:"Auftrag anlegen", default item:1, contents:{¨
{class:push button, bounds:{251, 211, 325, 231}, name:"Erzeugen"}, ¨
{class:static text, bounds:{16, 16, 87, 32}, contents:"Kunde"}, ¨
{class:text field, bounds:{167, 16, 321, 32}, value:""}, ¨
{class:text field, bounds:{167, 54, 321, 70}, value:""}, ¨
{class:static text, bounds:{16, 54, 136, 70}, contents:"Auftrags-Nummer"}, ¨
{class:static text, bounds:{16, 92, 135, 108}, contents:"Job-Beschreibung"}, ¨
{class:text field, bounds:{167, 91, 321, 107}, value:""}, ¨
{class:radio button, bounds:{16, 127, 119, 143}, name:"Archiv", value:false}, ¨
{class:radio button, bounds:{131, 128, 235, 144}, name:"Tempo", value:true}, ¨
{class:static text, bounds:{16, 156, 127, 172}, contents:"OPI benutzen ?"}, ¨
{class:radio button, bounds:{131, 174, 235, 190}, name:"Ja", value:false}, ¨
{class:radio button, bounds:{16, 175, 120, 191}, name:"Nein", value:true}, ¨
{class:group box, bounds:{16, 118, 325, 119}}, ¨
{class:group box, bounds:{16, 151, 325, 152}}, ¨
{class:push button, bounds:{149, 212, 239, 232}, name:"Abbrechen"}, ¨
{class:push button, bounds:{16, 212, 106, 232}, name:"Bearbeiten"}}}
dd install with grayscale
set dasErgebnis to dd auto dialog theDialog with fonts {name:"Charcoal", size:12} with grayscale
set Kunde to item 3 of dasErgebnis
set Auftragsnummer to item 4 of dasErgebnis
set JobBeschreibung to item 7 of dasErgebnis
if item 11 of dasErgebnis = false then
set OPI to "%0"
else
if item 11 of dasErgebnis = true then
set OPI to ""
end if
end if
if item 8 of dasErgebnis = false then
set AblageOrt to Platte1
else
if item 8 of dasErgebnis = true then
set AblageOrt to Platte2
end if
end if
if item 16 of dasErgebnis is true then
set Passwort to dd auto dialog PasswortDialog with grayscale
if item 2 of Passwort is true then
dd delete PasswortDialog
else
if item 3 of Passwort is "1234" then
set TestDialog to {size:{204, 341}, style:standard window, closeable:true, name:"Ordner", default item:10, contents:{¨
{class:text field, bounds:{22, 14, 176, 30}, value:item 1 of MeineListe}, ¨
{class:text field, bounds:{21, 43, 175, 59}, value:item 2 of MeineListe}, ¨
{class:text field, bounds:{21, 73, 175, 89}, value:item 3 of MeineListe}, ¨
{class:text field, bounds:{21, 101, 175, 117}, value:item 4 of MeineListe}, ¨
{class:text field, bounds:{21, 132, 175, 148}, value:item 5 of MeineListe}, ¨
{class:text field, bounds:{21, 166, 175, 182}, value:item 6 of MeineListe}, ¨
{class:text field, bounds:{20, 199, 174, 215}, value:item 7 of MeineListe}, ¨
{class:text field, bounds:{19, 229, 173, 245}, value:item 8 of MeineListe}, ¨
{class:text field, bounds:{20, 264, 174, 280}, value:item 9 of MeineListe}, ¨
{class:push button, bounds:{57, 304, 131, 324}, name:"OK"}}}
set Ergebnisdialog to dd auto dialog TestDialog with fonts {name:"Charcoal", size:12} with grayscale
set MeineListe to items 1 thru 9 of Ergebnisdialog
tell application "Finder"
set temp to (open for access file Pfad1 with write permission)
write MeineListe to temp as list
close access temp
end tell
set Ordner1 to item 1 of MeineListe
set Ordner2 to item 2 of MeineListe
set Ordner3 to item 3 of MeineListe
set Ordner4 to item 4 of MeineListe
set Ordner5 to item 5 of MeineListe
set Ordner6 to item 6 of MeineListe
set Ordner7 to item 7 of MeineListe
set Ordner8 to item 8 of MeineListe
set Ordner9 to item 9 of MeineListe
else
if item 3 of Passwort is not "1234" then
display dialog "Das Passwort ist nicht richtig"
else
dd delete PasswortDialog
dd uninstall
end if
end if
end if
end if
set Ordner1 to item 1 of MeineListe
set Ordner2 to item 2 of MeineListe
set Ordner3 to item 3 of MeineListe
set Ordner4 to item 4 of MeineListe
set Ordner5 to item 5 of MeineListe
set Ordner6 to item 6 of MeineListe
set Ordner7 to item 7 of MeineListe
set Ordner8 to item 8 of MeineListe
set Ordner9 to item 9 of MeineListe
dd uninstall
if Kunde is not {} then --überprüft Bedingung
set AnfangsBuchstabe to characters 1 thru 1 of word 1 of (Kunde as string) as string
tell application "Finder"
set Anfangsordner to folder AnfangsBuchstabe of AblageOrt
if exists folder Kunde of Anfangsordner then
open folder Kunde of folder AnfangsBuchstabe of AblageOrt
else
make folder at Anfangsordner with properties ¨
{name:Kunde}
end if
set Kundenordner to folder Kunde of folder AnfangsBuchstabe of AblageOrt
end tell
end if
if (AuftragsOrdner = {}) then
set AuftragsOrdner to Auftragsnummer & "_" & JobBeschreibung & OPI
end if
if (actFolder = {}) then
set actFolder to AuftragsOrdner
end if
if (text1 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner2
set text1 to str
end if
if (text2 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner3
set text2 to str
end if
if (text3 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner4
set text3 to str
end if
if (text4 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner5
set text4 to str
end if
if (text5 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner6
set text5 to str
end if
if (text6 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner7
set text6 to str
end if
if (text7 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner8
set text7 to str
end if
if (text8 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner9
set text8 to str
end if
if (text9 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner1
set text9 to str
end if
try
tell application "Finder"
with timeout of 600 seconds
close every window
open Kundenordner
make folder in Kundenordner with properties ¨
{name:AuftragsOrdner}
select folder actFolder of Kundenordner
set new_file to (make file at selection)
set the name of new_file to Auftragsnummer & "_Bitte lesen"
if Ordner2 is not "" then
make folder in selection with properties ¨
{name:text1}
end if
if Ordner3 is not "" then
make folder in selection with properties ¨
{name:text2}
end if
if Ordner4 is not "" then
make folder in selection with properties ¨
{name:text3}
end if
if Ordner5 is not "" then
make folder in selection with properties ¨
{name:text4}
end if
if Ordner6 is not "" then
make folder in selection with properties ¨
{name:text5}
end if
if Ordner7 is not "" then
make folder in selection with properties ¨
{name:text6}
end if
if Ordner8 is not "" then
make folder in selection with properties ¨
{name:text7}
end if
if Ordner9 is not "" then
make folder in selection with properties ¨
{name:text8}
end if
if Ordner1 is not "" then
make folder in selection with properties ¨
{name:text9}
end if
open folder actFolder of Kundenordner
close Kundenordner
set view of window 1 to name
set destFolder to {}
set AuftragsOrdner to {}
set actFolder to {}
end timeout
end tell
on error -- error checking
set str to "Huuch!!! Da ist wohl ein Fehler aufgetreten! Entweder exixtiert schon ein Ordner, oder die Anzahl der erlaubten Zeichen ist überschritten. Bitte nochmal versuchen"
set destFolder to {}
set AuftragsOrdner to {}
set actFolder to {}
set Auftragsnummer to {}
set text1 to {}
set text2 to {}
set text3 to {}
set text4 to {}
set text5 to {}
set text6 to {}
set text7 to {}
set text8 to {}
set text9 to {}
error str
set str to {}
quit
end try
set destFolder to {}
set AuftragsOrdner to {}
set actFolder to {}
set Auftragsnummer to {}
set job to {}
set text1 to {}
set text2 to {}
set text3 to {}
set text4 to {}
set text5 to {}
set text6 to {}
set text7 to {}
set text8 to {}
set text9 to {}
set str to {}
end run |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 22.08.2002 - 16:41 Titel: Dialog um Ordner anzulegen |
|
|
Wenn ich aber auf Abbrechen klicke bekomme ich eine Fehlermeldung.
Das liegt daran, dass du überhaupt nichts für diesen Fall vorgesehen hast.
Bei einem DD-Dialog ist es wie bei einem "display dialog"-Dialog, bei dem die Buttons selbst definiert werden. Die Bedeutung der Buttons ist erst mal unbekannt. Da du einen auto-Dialog verwendet hast, wird zwar das Fenster geschlossen, das Skript läuft aber weiter. Da aber noch notwendige Daten fehlen, kommt es zu einem Fehler.
Also auch den Button-Status des Abbrechen-Buttons prüfen und entsprechend reagieren:
[font=geneva] if item [color=#010061]15 of dasErgebnis = true then
return
end if[/color][/font]
Wenn ich bei der Passworteingabe (um die Ordnerbez. zu ändern) auf Cancel klicke komme ich nicht in mein Ursprungsmenü zurück.
Wie ich dir bereits im Thread "Dialog mit mehreren Antworten" geschrieben habe, wird ein auto-Dialog beendet, sobald man einen Button anklickt. Das ist in diesem Fall der "Bearbeiten"-Button. Da du den Dialog aber noch brauchst, wäre es, wie auch im anderen Tread beschrieben besser, keinen auto-Dialog zu verwenden, sondern mit "dd install" usw. zu arbeiten. Dann kannst du nämlich bestimmen, in welchem Fall das Dialogfenster geschlossen werden soll.
Natürlich könntest du den ersten Dialog auch wieder erneut aufrufen, falls bei der Passwortabfrage auf "Cancel" gedrückt wird, allerdings fehlen dann evtl. bereits eingegebene Werte.
Ich würde also für beide Dialoge mit "dd install" arbeiten. Beim Passwort-Dialog kannst du es dann so machen, dass der OK-Button das Fenster nur schließt, wenn das Passwort richtig ist. Ansonsten kommt die entsprechende Meldung und das Passwort-Dialog-Fenster ist aber nach wie vor da.
Übrigens, welche AppleScript-Version verwendest du? Ich kann das Skript hier nämlich nicht richtig testen, da ich (AS-Version 1.6) schon bei der Zeile
[font=geneva]copy (read [color=#99000F]temp as list) to theResult[/color][/font]
einen Parameter-Error serviert bekomme. Ansonsten gibt es leider noch viele Stellen im Skript, die man anpassen muss, um einen Test durchführen zu können.
Folgende Zeile führt auch zu einem Fehler:
[font=geneva]set [color=#99000F]Pfad1 to file "Ordnerprefs" of folder "Preferences" of folder "Systemordner" of startup disk[/color][/font]
Durch diese Angabe ist es notwendig, dass die Datei "Ordnerprefs" bereits vorhanden ist. Wenn du stattdessen eine reine Pfadangabe (Textwert) benutzt, wird die Datei bei
[font=geneva]set [color=#99000F]temp to (open for access file Pfad1)[/color][/font]
angelegt, wenn sie noch nicht besteht.
Ich würde die Stelle so schreiben:
[font=geneva] set [color=#99000F]Pfad1 to (path to preferences folder as string) & "Ordnerprefs"
set temp to (open for access file Pfad1)[/color][/font]
Soviel mal für's Erste.
HTH _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
Thomas •->

Anmeldedatum: 08.02.2002 Beiträge: 14
|
Verfasst am: 22.08.2002 - 17:04 Titel: Dialog um Ordner anzulegen |
|
|
Puhhhh!!!
Kurz reingeschaut und schon so viel falsches gesehen, Danke Snow.
Ich merke schon, daß ich so manches an AppleScript noch nicht richtig verstanden habe. (aber das siehst Du ja)
Das hilft mir aber erst einmal ein ganzes Stück weiter.
Bei meinen Versuchen habe ich festgestellt, wenn ich bei dem ersten Menü statt eines auto Dialog ein make Dialog verwendet habe bekam ich plötzlich meine Ergebnisse nicht mehr. Deshalb hatte ich den auto Dialog gelassen. Aber ich werde es nochmal versuchen.
Bei der Auftragsnummer könnte ich (wenn ich make Dialog verwende) dann ja auch noch die Anzahl der erlaubten Zeichen begrenzen. Richtig?
Ich verwende übrigens AppleScript 1.7.
Hoffentlich schlägt mich jetzt keiner.
Also nochmal vielen Dank Snow
Thomas |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 22.08.2002 - 18:00 Titel: Dialog um Ordner anzulegen |
|
|
Die Ergebnisse bekommst du nicht mehr automatisch (das ist auch der Unterschied zum auto-Dialog). Du musst sie dir schon selbst abholen. Das funktioniert dann mit "dd get value".
Beipsiel:
set theDialog to { size:{ 350, 250 }, style:standard window, closeable:true, name:"Auftrag anlegen", default item:1, contents:{ ¨
{ class:push button, bounds:{ 251, 211, 325, 231 }, name:"Erzeugen" }, ¨
{ class:static text, bounds:{ 16, 16, 87, 32 }, contents:"Kunde" }, ¨
{ class:text field, bounds:{ 167, 16, 321, 32 }, value:"" }, ¨
{ class:text field, bounds:{ 167, 54, 321, 70 }, value:"" }, ¨
{ class:static text, bounds:{ 16, 54, 136, 70 }, contents:"Auftrags-Nummer" }, ¨
{ class:static text, bounds:{ 16, 92, 135, 108 }, contents:"Job-Beschreibung" }, ¨
{ class:text field, bounds:{ 167, 91, 321, 107 }, value:"" }, ¨
{ class:radio button, bounds:{ 16, 127, 119, 143 }, name:"Archiv", value:false }, ¨
{ class:radio button, bounds:{ 131, 128, 235, 144 }, name:"Tempo", value:true }, ¨
{ class:static text, bounds:{ 16, 156, 127, 172 }, contents:"OPI benutzen ?" }, ¨
{ class:radio button, bounds:{ 131, 174, 235, 190 }, name:"Ja", value:false }, ¨
{ class:radio button, bounds:{ 16, 175, 120, 191 }, name:"Nein", value:true }, ¨
{ class:group box, bounds:{ 16, 118, 325, 119 } }, ¨
{ class:group box, bounds:{ 16, 151, 325, 152 } }, ¨
{ class:push button, bounds:{ 149, 212, 239, 232 }, name:"Abbrechen" }, ¨
{ class:push button, bounds:{ 16, 212, 106, 232 }, name:"Bearbeiten" } } }
dd install with grayscale
set d to dd make dialog theDialog
repeat
set i to dd interact with user
set dKunde to dd get value of item 3 of d
set Auftrag to dd get value of item 4 of d
set Job to dd get value of item 7 of d
set Archiv to dd get value of d's item 8
if Archiv = true then
set dPlatte to "Archiv"
else
set dPlatte to "Tempo"
end if
set OPI to dd get value of d's item 11
if OPI = true then
set OPI to "ja"
else
set OPI to "nein"
end if
set dVals to { dKunde, Auftrag, Job, dPlatte, OPI }
if i = 15 then
-- Abbrechen wurde angeklickt
exit repeat
else if i = -1 then
exit repeat
-- die Closebox des Fensters wurde angeklickt
else if i = 1 then
return dVals
else if i = 14 then
display dialog "Der Button \"Bearbeiten\" wurde angeklickt."
end if
end repeat
dd uninstall
Die Zeile:
return dVals
dient nur dazu, dass du im Ergebnisfenster den Inhalt der Variablen "dVals" zu sehen bekommst. Wie du mit den Werten weiter arbeitest, bleibt natürlich ganz dir überlassen.
So, jetzt lasse ich dich mal wieder probieren. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 22.02.2003 - 15:28, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Thomas •->

Anmeldedatum: 08.02.2002 Beiträge: 14
|
Verfasst am: 22.08.2002 - 20:19 Titel: Dialog um Ordner anzulegen |
|
|
Danke Snow
Das war eine riesen Hilfe.
Ich glaube jetzt packe ich es. Dieses Forum ist einfach klasse!!
Bis zum nächsten Problem
Thomas |
|
Nach oben |
|
 |
Thomas •->

Anmeldedatum: 08.02.2002 Beiträge: 14
|
Verfasst am: 27.08.2002 - 12:03 Titel: Dialog um Ordner anzulegen |
|
|
Hallo Snow
Kurz vorm Ziel in die Hose . . . .
Mein Script funktioniert , fast!!
Wenn ich im Feld Bearbeiten war, gibt es danach, wenn ich auf Erzeugen klicke einen Fehler. Ebenso kann ich, nachdem ich in Bearbeiten war nicht mehr die Buttons Abbrechen oder nochmals Bearbeiten anwählen.
Da habe ich wohl irgendwo noch einen Bock geschossen.
Kann man den Dialog eigentlich offen halten, um mehrere Auftragsordner anzulegen?
Hier nun mein ²fertiges² Script:
property destFolder : {}
property AuftragsOrdner : {}
property job : {}
property actFolder : {}
property Auftragsnummer : {}
property restcommands : {}
property text1 : {}
property text2 : {}
property text3 : {}
property text4 : {}
property text5 : {}
property text6 : {}
property text7 : {}
property text8 : {}
property text9 : {}
on run
tell application "Finder"
--set Pfad1 to file "Ordnerprefs" of folder "Preferences" of folder "Systemordner" of startup disk
set Pfad1 to (path to preferences folder as string) & "Ordnerprefs"
set temp to (open for access file Pfad1)
--set temp to (open for access file Pfad1)
copy (read temp as list) to theResult
close access temp
set MeineListe to theResult
set Ordner1 to item 1 of MeineListe
set Ordner2 to item 2 of MeineListe
set Ordner3 to item 3 of MeineListe
set Ordner4 to item 4 of MeineListe
set Ordner5 to item 5 of MeineListe
set Ordner6 to item 6 of MeineListe
set Ordner7 to item 7 of MeineListe
set Ordner8 to item 8 of MeineListe
set Ordner9 to item 9 of MeineListe
set Platte1 to disk "Mac2go"
set Platte2 to disk "Mac2go"
end tell
set theDialog to {size:{350, 250}, style:standard window, closeable:true, name:"Auftrag anlegen", default item:1, contents:{¨
{class:push button, bounds:{251, 211, 325, 231}, name:"Erzeugen"}, ¨
{class:static text, bounds:{16, 16, 87, 32}, contents:"Kunde"}, ¨
{class:text field, bounds:{167, 16, 321, 32}, value:""}, ¨
{class:text field, bounds:{167, 54, 321, 70}, value:""}, ¨
{class:static text, bounds:{16, 54, 136, 70}, contents:"Auftrags-Nummer"}, ¨
{class:static text, bounds:{16, 92, 135, 108}, contents:"Job-Beschreibung"}, ¨
{class:text field, bounds:{167, 91, 321, 107}, value:""}, ¨
{class:radio button, bounds:{16, 127, 119, 143}, name:"Archiv", value:false}, ¨
{class:radio button, bounds:{131, 128, 235, 144}, name:"Tempo", value:true}, ¨
{class:static text, bounds:{16, 156, 127, 172}, contents:"OPI benutzen ?"}, ¨
{class:radio button, bounds:{131, 174, 235, 190}, name:"Ja", value:false}, ¨
{class:radio button, bounds:{16, 175, 120, 191}, name:"Nein", value:true}, ¨
{class:group box, bounds:{16, 118, 325, 119}}, ¨
{class:group box, bounds:{16, 151, 325, 152}}, ¨
{class:push button, bounds:{149, 212, 239, 232}, name:"Abbrechen"}, ¨
{class:push button, bounds:{16, 212, 106, 232}, name:"Bearbeiten"}}}
dd install with grayscale
set dasErgebnis to dd make dialog theDialog
repeat
set i to dd interact with user
set dKunde to dd get value of item 3 of dasErgebnis
set Auftrag to dd get value of item 4 of dasErgebnis
set job to dd get value of item 7 of dasErgebnis
set Archiv to dd get value of dasErgebnis's item 8
if Archiv = true then
set dPlatte to "Archiv"
else
set dPlatte to "Tempo"
end if
set OPI to dd get value of dasErgebnis's item 11
if OPI = true then
set OPI to "ja"
else
set OPI to "nein"
end if
set dVals to {dKunde, Auftrag, job, dPlatte, OPI}
if i = 15 then
dd delete dialog 1
exit repeat -- Abbrechen wurde angeklickt
else if i = -1 then
exit repeat
-- die Closebox des Fensters wurde angeklickt
else if i = 4 then
set x to dd get value of item 4 of dasErgebnis
if (length of x) is greater than 5 then -- Länge > 5?
set x to characters 1 thru ((length of x) - 1) of x -- x auf 5 Zeichen reduzieren
dd set value of item 4 of dasErgebnis to (x as string) -- wieder in das Feld schreiben
dd set selection of item 4 of dasErgebnis to [-1, -1] -- Cursor ans Ende positionieren
end if
else if i = 7 then
set y to dd get value of item 7 of dasErgebnis
if (length of y) is greater than 21 then -- Länge > 21?
set y to characters 1 thru ((length of y) - 1) of y -- y auf 5 Zeichen reduzieren
dd set value of item 7 of dasErgebnis to (y as string) -- wieder in das Feld schreiben
dd set selection of item 7 of dasErgebnis to [-1, -1] -- Cursor ans Ende positionieren
end if
--end if
else if i = 16 then
set PasswortDialog to {size:[260, 95], style:standard window, closeable:true, name:"Passwort eingeben", contents:{¨
{class:push button, bounds:[190, 55, 250, 75], name:"OK"}, ¨
{class:push button, bounds:[110, 55, 170, 75], name:"Cancel"}, ¨
{class:text field, bounds:[10, 20, 250, 39], value:""}}}
dd install with grayscale
set Passwort to dd make dialog PasswortDialog
repeat
set V to dd interact with user
if V = 1 then
set PassWort1 to dd get value of item 3 of Passwort
if PassWort1 = "1234" then
dd delete dialog 1
set TestDialog to {size:{204, 341}, style:standard window, closeable:true, name:"Ordner", default item:10, contents:{¨
{class:text field, bounds:{22, 14, 176, 30}, value:item 1 of MeineListe}, ¨
{class:text field, bounds:{21, 43, 175, 59}, value:item 2 of MeineListe}, ¨
{class:text field, bounds:{21, 73, 175, 89}, value:item 3 of MeineListe}, ¨
{class:text field, bounds:{21, 101, 175, 117}, value:item 4 of MeineListe}, ¨
{class:text field, bounds:{21, 132, 175, 148}, value:item 5 of MeineListe}, ¨
{class:text field, bounds:{21, 166, 175, 182}, value:item 6 of MeineListe}, ¨
{class:text field, bounds:{20, 199, 174, 215}, value:item 7 of MeineListe}, ¨
{class:text field, bounds:{19, 229, 173, 245}, value:item 8 of MeineListe}, ¨
{class:text field, bounds:{20, 264, 174, 280}, value:item 9 of MeineListe}, ¨
{class:push button, bounds:{57, 304, 131, 324}, name:"OK"}}}
dd install with grayscale
set Kundenordner to dd make dialog TestDialog
repeat
set P to dd interact with user
if P = 10 then
set Feld1 to dd get value of items 1 thru 9 of Kundenordner
set MeineListe to Feld1
tell application "Finder"
set temp to (open for access file Pfad1 with write permission)
write MeineListe to temp as list
close access temp
end tell
dd delete dialog 1
exit repeat
else if P = -1 then -- die Closebox des Fensters wurde angeklickt
dd delete dialog 1
exit repeat
end if
end repeat
else if PassWort1 is not "1234" then
display dialog "Das Passwort ist falsch"
dd delete dialog 1
exit repeat
end if
else if V = 2 then
dd delete dialog 1
exit repeat
else if V = -1 then -- die Closebox des Fensters wurde angeklickt
dd delete dialog 1
exit repeat
end if
end repeat
else if i = 1 then -- erzeugen
if item 5 of dVals = "nein" then
set OPIEinstellung to "_%0"
else
set OPIEinstellung to ""
end if
if item 4 of dVals = "Tempo" then
set AblageOrt to Platte1
else
set AblageOrt to Platte2
end if
set Kunde to item 1 of dVals
set Auftragsnummer to item 2 of dVals
set JobBeschreibung to item 3 of dVals
set Ordner1 to item 1 of MeineListe
set Ordner2 to item 2 of MeineListe
set Ordner3 to item 3 of MeineListe
set Ordner4 to item 4 of MeineListe
set Ordner5 to item 5 of MeineListe
set Ordner6 to item 6 of MeineListe
set Ordner7 to item 7 of MeineListe
set Ordner8 to item 8 of MeineListe
set Ordner9 to item 9 of MeineListe
if Kunde is not {} then --überprüft Bedingung
set AnfangsBuchstabe to characters 1 thru 1 of word 1 of (Kunde as string) as string
tell application "Finder"
set Anfangsordner to folder AnfangsBuchstabe of AblageOrt
if exists folder Kunde of Anfangsordner then
open folder Kunde of folder AnfangsBuchstabe of AblageOrt
else
make folder at Anfangsordner with properties ¨
{name:Kunde}
end if
set Kundenordner to folder Kunde of folder AnfangsBuchstabe of AblageOrt
end tell
end if
if (AuftragsOrdner = {}) then
set AuftragsOrdner to Auftragsnummer & "_" & JobBeschreibung & OPIEinstellung
end if
if (actFolder = {}) then
set actFolder to AuftragsOrdner
end if
if (text1 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner2
set text1 to str
end if
if (text2 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner3
set text2 to str
end if
if (text3 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner4
set text3 to str
end if
if (text4 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner5
set text4 to str
end if
if (text5 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner6
set text5 to str
end if
if (text6 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner7
set text6 to str
end if
if (text7 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner8
set text7 to str
end if
if (text8 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner9
set text8 to str
end if
if (text9 = {}) then
set str to Auftragsnummer
set str to str & "_" & Ordner1
set text9 to str
end if
try
tell application "Finder"
with timeout of 600 seconds
close every window
open Kundenordner
make folder in Kundenordner with properties ¨
{name:AuftragsOrdner}
select folder actFolder of Kundenordner
set new_file to (make file at selection)
set the name of new_file to Auftragsnummer & "_Bitte lesen"
if Ordner2 is not "" then
make folder in selection with properties ¨
{name:text1}
end if
if Ordner3 is not "" then
make folder in selection with properties ¨
{name:text2}
end if
if Ordner4 is not "" then
make folder in selection with properties ¨
{name:text3}
end if
if Ordner5 is not "" then
make folder in selection with properties ¨
{name:text4}
end if
if Ordner6 is not "" then
make folder in selection with properties ¨
{name:text5}
end if
if Ordner7 is not "" then
make folder in selection with properties ¨
{name:text6}
end if
if Ordner8 is not "" then
make folder in selection with properties ¨
{name:text7}
end if
if Ordner9 is not "" then
make folder in selection with properties ¨
{name:text8}
end if
if Ordner1 is not "" then
make folder in selection with properties ¨
{name:text9}
end if
open folder actFolder of Kundenordner
close Kundenordner
set view of window 1 to name
set destFolder to {}
set AuftragsOrdner to {}
set actFolder to {}
end timeout
end tell
on error -- error checking
set str to "Huuch!!! Da ist wohl ein Fehler aufgetreten! Entweder exixtiert schon ein Ordner, oder die Anzahl der erlaubten Zeichen ist überschritten. Bitte nochmal versuchen"
set destFolder to {}
set AuftragsOrdner to {}
set actFolder to {}
set Auftragsnummer to {}
set text1 to {}
set text2 to {}
set text3 to {}
set text4 to {}
set text5 to {}
set text6 to {}
set text7 to {}
set text8 to {}
set text9 to {}
error str
set str to {}
quit
end try
exit repeat
end if
end repeat
dd uninstall
--return dVals
set destFolder to {}
set AuftragsOrdner to {}
set actFolder to {}
set Auftragsnummer to {}
set job to {}
set text1 to {}
set text2 to {}
set text3 to {}
set text4 to {}
set text5 to {}
set text6 to {}
set text7 to {}
set text8 to {}
set text9 to {}
set str to {}
end run |
|
Nach oben |
|
 |
Jens Hoffmann •--->

Anmeldedatum: 07.05.2001 Beiträge: 175
|
Verfasst am: 27.08.2002 - 17:38 Titel: Dialog um Ordner anzulegen |
|
|
Hallo Thomas
Was für Fehler bekommst Du denn? Konnte Dein Script auf die Schnelle nicht nachvollzeiehen, weil ich nur ein leere 'Ordnerpfad'-Datei angelegt habe und deswegen schon am Anfang ein Error bekomme.
Wegen den nicht mehr anklickbaren Buttoms vermute ich, dass Du irgendwo mit den Dialogen und den repeat-Schleifen aus der Reihe gekommen bist. Um das Script besser debuggen zu können, empfehle ich Dir zum Einen, alle 'dd delete'-Befehle mit dem Fensternamen auszuführen:
dd delete Passwort (statt: dd delete dialog 1)
Dann ist es übersichtlicher, wenn Du den delete-Befehl nur am Ende der repeat-Schleifen angibst, so dass die Struktur so aussieht:
repeat
dd interact with user
if i = 1 usw
usw.
end if
end repeat
dd delete dasFenster
Wenn Du jetzt das Fenster schliessen willst, langt einfach ein exit repeat:
if i = -1 -- Closebox
exit repeat
if i = 2 -- OK
machWas()
exit repeat
end if
dd delete dasFenster
Ganz zum Schluss, wenn das letzte Fenster geschlossen wird bevor das Script beendet wird, musst Du folgende beiden Zeilen angeben, sonst Crash-Gefahr!
dd delete dasFenster
dd uninstall
Zitat: | Kann man den Dialog eigentlich offen halten, um mehrere Auftragsordner anzulegen? | Ja, ganz einfach, indem Du z.B. den Part, der nach Klicken von "Erzeugen" abgearbeitet wird ( in Deinem Fall ist das Fenster da schon geschlossen), in den if-Block von "Erzeugen" legst und kein exit repeat am Ende angibst:
if i = 7 -- Erzeugen
-- Erzeuge das Zeug
display dialog "Fertig"
-- alle Felder zurücksetzten o.ä.
if i = 8 usw. etc.
Grüße Jens |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 27.08.2002 - 20:33 Titel: Dialog um Ordner anzulegen |
|
|
Hallo Jens,
ich habe mir schon gedacht, dass dich das Thema nicht ganz kalt lässt. :wink:
@Thomas
Viele unlogische Fehler können auch von AppleScript 1.7 kommen. Die Version ist so buggy, dass sie von Apple praktisch wieder zurückgezogen wurde. Unter OS 9 wurde empfohlen, wieder AppleScript 1.6 zu installieren.
Allerdings funktioniert dann diese Zeile nicht mehr:
copy (read temp as list) to theResult
Aber dafür ließe sich bestimmt eine andere Lösung finden.
Und wenn du mal beschreiben könntest, wie die Passwort-Datei aussehen muss, wäre es leichter die Sache zu testen. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
Jens Hoffmann •--->

Anmeldedatum: 07.05.2001 Beiträge: 175
|
Verfasst am: 28.08.2002 - 11:39 Titel: Dialog um Ordner anzulegen |
|
|
Zitat: | ich habe mir schon gedacht, dass dich das Thema nicht ganz kalt lässt.  | Ja, ich stand vor Monaten vor der Wahl, RealBasic zu lernen (bei 0 anzufangen und mich durch neue Klassen, Objekte und Methoden zu quälen) oder mich eben mit DD zu beschäftigen, um meine Projekte umzusetzen. Im Nachhinein muss ich aber sagen, dass es ein Fehler war. Applikationen mit AS und DD zu programmieren, istÝauch nicht einfach und teilweise echt buggy (vor allem stay-open Scripts). Und mit DD lässt sich eben doch nicht alles machen. Irgendwann kommt dann auch OS X und AS-S, dann geht die Lernerei von vorne los :(
Jens |
|
Nach oben |
|
 |
Thomas •->

Anmeldedatum: 08.02.2002 Beiträge: 14
|
Verfasst am: 28.08.2002 - 13:09 Titel: Dialog um Ordner anzulegen |
|
|
Es rennt!!!!!
Ich weiß zwar nicht genau warum (aber das weiß ich bei meinem Auto ja auch nicht) aber es rennt.
Der Tip von Jens mit dem dd delete hat den entscheidenden Kick gegeben.
set PasswortDialog to {size:[200, 95], style:standard window, closeable:true, name:"Passwort eingeben", contents:{¨
{class:push button, bounds:[130, 55, 190, 75], name:"OK"}, ¨
{class:push button, bounds:[50, 55, 110, 75], name:"Cancel"}, ¨
{class:text field, bounds:[10, 20, 190, 39], value:""}}}
dd install with grayscale
set Passwort to dd make dialog PasswortDialog
Ich war nur zu Blöd und habe immer dd delete PasswortDialog genommen und nicht dd delete Passwort.
Jetzt werde ich noch ein wenig probieren, damit ich auch keinen Bock vergessen habe bevor ich es weitergebe.
Vielen Dank euch Beiden |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 28.08.2002 - 15:49 Titel: Dialog um Ordner anzulegen |
|
|
Zitat: | Zitat: von Jens Hoffmann am 11:39 Uhr am 28 Aug. 2002
Ja, ich stand vor Monaten vor der Wahl, RealBasic zu lernen (bei 0 anzufangen und mich durch neue Klassen, Objekte und Methoden zu quälen) oder mich eben mit DD zu beschäftigen, um meine Projekte umzusetzen. Im Nachhinein muss ich aber sagen, dass es ein Fehler war. Applikationen mit AS und DD zu programmieren, ist auch nicht einfach und teilweise echt buggy (vor allem stay-open Scripts). Und mit DD lässt sich eben doch nicht alles machen. Irgendwann kommt dann auch OS X und AS-S, dann geht die Lernerei von vorne los
|
FaceSpan wäre da noch eine Alternative gewesen - allerdings nicht so kostengünstig wie Dialog Director. Was ich z.B. bei AS-S noch schmerzlich vermisse, ist so etwas wie die Storage Items bei FaceSpan. Bei AS-S musste ich die Fensterposition in den externen Preferences speichern. In FaceSpan hätte ich das in den Storage Items untergebracht. Das Einbinden von OSAXen ist soweit ich weiß in AS-S auch noch nicht möglich. In FaceSpan konnte man sie ins fertige Projekt einbinden, so dass der User nichts extra installieren musste. Aber FaceSpan ist ja praktisch jetzt genauso tot wie OS 9. - Ich bin trotzdem froh, dass ich es habe.  _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
Jens Hoffmann •--->

Anmeldedatum: 07.05.2001 Beiträge: 175
|
Verfasst am: 28.08.2002 - 16:57 Titel: Dialog um Ordner anzulegen |
|
|
Zitat: | Aber FaceSpan ist ja praktisch jetzt genauso tot wie OS 9. | Na ja, in den USA sind bisher nur 10% umgestiegen. Nicht gerade berrauschend. Auf meinem Privatrechner wird OS 9 auf jeden Fall so lange wie irgend möglich laufen: ich habe nämlich keine Lust, nochmal Kohle für Software hinzulegen, die ich ja jetzt schon habe und die bestens funzt!
@Thomas: DD hat übrigens ein Passwort-Textfeld. Funktioniert wie ein normales Textfeld, Du brauchst also nichts zu ändern ausser der Klasse. Siehe Manual...
ciao Jens |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2002 phpBB Group Deutsche Übersetzung von phpBB.de
|