Hi
Versuch es mal damit:
Code:
set the_list to ""
set my_folder to (path to applications folder as text) & "Testobjekt" as alias
set nl to ASCII character 10
tell application "Finder"
set file_list to name of every file of my_folder
set cItems to count of items in file_list
set the_offset to 0 as number
if cItems = 0 then
display dialog "Der Ordner enthält keine Dateien!" buttons {"OK"} with icon caution
return
end if
if cItems > 19 then
set ccounter to 20
else
set ccounter to cItems
end if
repeat
set the_list to ""
set i to 0
set disp to 0 as number
repeat ccounter times
set i to i + 1
if the_offset + i ≤ cItems then
set the_list to the_list & item (the_offset + i) of file_list & nl
set disp to disp + 1
else
set the_list to the_list & "" & nl
end if
end repeat
if cItems < 20 then
display dialog the_list with title "Items " & the_offset + 1 & " to " & (the_offset + disp) & " of " & cItems buttons {"OK"} with icon "Finder"
else
if the_offset < 20 then
display dialog the_list with title "Items " & the_offset + 1 & " to " & (the_offset + disp) & " of " & cItems buttons {"Vor", "Abbruch"} with icon "Finder"
else
if the_offset + 20 is greater than cItems then
display dialog the_list with title "Items " & the_offset + 1 & " to " & (the_offset + disp) & " of " & cItems buttons {"Zurück", "Abbruch"} with icon "Finder"
else
display dialog the_list with title "Items " & the_offset + 1 & " to " & (the_offset + disp) & " of " & cItems buttons {"Zurück", "Vor", "Abbruch"} with icon "Finder"
end if
end if
end if
set DlogResult to result
if button returned of result = "Zurück" then
if the_offset > 19 then
set the_offset to the_offset - 20
else
set the_offset to 0
end if
else if button returned of result = "Vor" then
if the_offset < cItems then
set the_offset to the_offset + 20
if the_offset > cItems then
set the_offset to the_offset - 20
end if
end if
else if button returned of result = "Abbruch" or button returned of result = "OK" then
exit repeat
end if
end repeat
end tell
Das Ganze ist etwas tricky, weil man in Applescript nicht so einfach Dialogboxen im laufenden Betrieb verändern kann. Zumindest ist mir aus dem Hut kein Weg bekannt. Ich habe das jetzt mal über 4 unterschiedliche Dialogboxen gelöst. Diese werden unter folgenden Umständen eingeblendet:
1. Es sind insgesamt weniger als 20 Objekte anzuzeigen: die Dialogbox enthält nur einen einzigen "OK" Button. "OK" deshalb, weil es nichts abzubrechen gibt. Die Anzeige steht, mehr ist eh nicht möglich.
2. Der Zähler befindet sich am Anfang der Liste: Es wird eine Dialogbox ohne "Zurück" Button verwendet. Statt "OK" gibt es wieder einen "Abbruch" Button.
3. Der Zähler befindet sich am Ende der Liste: die verwendete Dialogbox hat keinen "Vor" Button. Auch hier gibt es "Abbruch" statt "OK".
4. Der Zähler befindet sich irgendwo dazwischen: die bekannte Dialogbox mit den 3 Buttons "Zurück", "Vor" und "Abbruch" wird angezeigt.
Es gibt jedoch einen Schönheitsfehler. Die Position der Buttons ist nicht frei wählbar. Zumindest wüsste ich nicht, wie. Das hat zur Folge, dass bei der Dialogbox ohne "Vor" Button der "Zurück" Button an dessen Position rutscht. Dafür habe ich leider keine Lösung. Ich habe versucht, den leeren Raum mit einem leeren Button ohne Funktion zu füllen (als Platzhalter), aber das sieht einfach nicht gut aus. Aber probier das ruhig mal selbst aus. Wenn es Dir so nicht gefällt, dann kann ich Dir den Platzhalter einbauen.
Zum Thema Programmieren, ich bin mit Basic auf dem Commodore VC-20 gestartet und habe mich später eher mit Scriptsprachen beschäftigt (z.B. Rexx auf OS/2). In Applescript könnte man vieles sicher eleganter abhandeln als ich es tue, aber letztlich funktioniert das meiste und das reicht mir aus
Gruss
lifeflow