Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Dialog um Ordner anzulegen - mit Passwortabfrage

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Thomas
•->
•->


Anmeldedatum: 08.02.2002
Beiträge: 14

BeitragVerfasst am: 22.08.2002 - 15:26    Titel: Dialog um Ordner anzulegen - mit Passwortabfrage Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 22.08.2002 - 16:41    Titel: Dialog um Ordner anzulegen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Thomas
•->
•->


Anmeldedatum: 08.02.2002
Beiträge: 14

BeitragVerfasst am: 22.08.2002 - 17:04    Titel: Dialog um Ordner anzulegen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 22.08.2002 - 18:00    Titel: Dialog um Ordner anzulegen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Thomas
•->
•->


Anmeldedatum: 08.02.2002
Beiträge: 14

BeitragVerfasst am: 22.08.2002 - 20:19    Titel: Dialog um Ordner anzulegen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Thomas
•->
•->


Anmeldedatum: 08.02.2002
Beiträge: 14

BeitragVerfasst am: 27.08.2002 - 12:03    Titel: Dialog um Ordner anzulegen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jens Hoffmann
•--->
•--->


Anmeldedatum: 07.05.2001
Beiträge: 175

BeitragVerfasst am: 27.08.2002 - 17:38    Titel: Dialog um Ordner anzulegen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 27.08.2002 - 20:33    Titel: Dialog um Ordner anzulegen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Jens Hoffmann
•--->
•--->


Anmeldedatum: 07.05.2001
Beiträge: 175

BeitragVerfasst am: 28.08.2002 - 11:39    Titel: Dialog um Ordner anzulegen Antworten mit Zitat

Zitat:
ich habe mir schon gedacht, dass dich das Thema nicht ganz kalt lässt. Wink
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Thomas
•->
•->


Anmeldedatum: 08.02.2002
Beiträge: 14

BeitragVerfasst am: 28.08.2002 - 13:09    Titel: Dialog um Ordner anzulegen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 28.08.2002 - 15:49    Titel: Dialog um Ordner anzulegen Antworten mit Zitat

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. rundum grins
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Jens Hoffmann
•--->
•--->


Anmeldedatum: 07.05.2001
Beiträge: 175

BeitragVerfasst am: 28.08.2002 - 16:57    Titel: Dialog um Ordner anzulegen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
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


AppleScript für absolute Starter