AppleScript Studio, checkbox-problem.

Tråden skapades och har fått 13 svar. Det senaste inlägget skrevs .
1

Jag försöker få flera check-boxar (NSButton av typen Check Box) i mitt AppleScript-program att fungera. Varje check-box är kopplad till följande AppleScript:

on clicked theObject
	if the value of theObject = 1 then
		set the value of theObject to 0
	else
		set the value of theObject to 1
	end if
end clicked

Sedan, när programmet ska köras så vill jag kolla vilka check-boxar som blivit aktiverade, det gör jag så här för varje box:

if the value of the button "versionButton" = 1 then
		set flagga to " -"
		set versionen to "v"
	else
		set flagga to ""
		set versionen to ""
	end if

Men det resulterar bara i att jag får följande felmedelande: NSCannotCreateScriptCommandError (10). Vad gör jag för fel? Antagligen är det jag som inte fattat riktigt hur check-boxar fungerar.

  • Medlem
  • International user
  • 2005-01-08 12:12
if state of button "check_boxen" of <reference> = 1 then...

vad menar du med <reference>? Är det fönstret som check-boxen är i?

  • Medlem
  • International user
  • 2005-01-08 14:29
Ursprungligen av Niklas Brunberg:

vad menar du med <reference>? Är det fönstret som check-boxen är i?

Ja, det stämmer.

  • Medlem
  • International user
  • 2005-01-08 15:03

Här är ett litet exempel på en app som kontinuerligt kollar om GUI:et har förändrats (någon klickat i en checkbox eller inte)

-- File's owner, d.v.s NSApplication måste länkas till 'idle' event.
-- I praktiken bara att kyssa i 'idle'.
on idle theObject

if state of button "check_box_1" of window of theObject  = 1 then
-- Utför denna kod om "check_box_1" ÄR ikryssad
else
-- Utför denna kod om "check_box_1" INTE ÄR ikryssad
-- I princip utför inget
end

return 5 -- Var femte sekunde kollas GUI:et
end idle

Edit: Det finns en liten egenhet/bugg i detta kodexempel. Rättar till det snart.

Senast redigerat 2005-01-08 20:40

Men det fungerar inte heller. Då blir fönsternamnet (döpt till mainWindow) en variabel:
The variable mainwindow is not defined. (-2753)

if state of button "versionButton" of mainwindow = 1 then
  • Medlem
  • International user
  • 2005-01-08 15:06
Ursprungligen av Niklas Brunberg:

Men det fungerar inte heller. Då blir fönsternamnet (döpt till mainWindow) en variabel:
The variable mainwindow is not defined. (-2753)

if state of button "versionButton" of mainwindow = 1 then

'mainwindow' är inget objekt, möjligen 'main window', men säkraste referensen är 'window of theObject'.

  • Medlem
  • International user
  • 2005-01-08 19:53
-- Nu ser jag vad du menar. Om fönstret är döpt till "mainWindow" måste du referera till:

window "mainWindow"
 
Senast redigerat 2005-01-08 20:09
Ursprungligen av Wire:
-- Nu ser jag vad du menar. Om fönstret är döpt till "mainWindow" måste du referera till:

window "mainWindow"
 

Ah, karma på det om systemet varit kvar!

Stort tack, löste 90% av mina problem!

  • Medlem
  • International user
  • 2005-01-08 20:35

Vilka problem är resterande 10 %?

Ursprungligen av Wire:

Vilka problem är resterande 10 %?

Jag har 16 (!) check-boxar där alla inte kan vara aktiverade samtidigt och någon beror på någon annan osv. (om du inte redan gissat det så bygger jag att GUI för ett shellscript som har en hel hög med flaggor ). Att reda ut det virrvarret är 9%, den sista procenten är ett mysko felmeddelande som dyker upp när jag aktiverar eller avaktiverar en check-box, men det stör inte programmets funktion... Fipplar på det nu.

Nä, nu blir jag galen :mad:, får ett NSCannotCreateScriptCommandError (10) när jag kör följande kod:

on clicked theObject
	if value of theObject = 0 then
		set the value of theObject to 1
	else
		set the value of theObject to 0
	end if
end clicked

Det funkade ju så bra tidigare...

  • Medlem
  • Stockholm
  • 2005-01-09 10:53
Ursprungligen av Niklas Brunberg:

Nä, nu blir jag galen :mad:, får ett NSCannotCreateScriptCommandError (10) när jag kör följande kod:

on clicked theObject
	if value of theObject = 0 then
		set the value of theObject to 1
	else
		set the value of theObject to 0
	end if
end clicked

Det funkade ju så bra tidigare...

Vet inte huruvida du har flera knappar? Man måste referera till knappen.

on clicked theObject
         if name of theObject is equal to "knapp1" then
                   -- det som skall hända med knapp1
         else if name of theObject is equal to "knapp2" then
                    
                   -- det som skall hända.........................

          osv, osv...
          end if
end clicked

Kan det vara så att skriptsnutten körs när du trycker på en annan knapp, en som inte har något value?

Vänligen, Ylan

Ursprungligen av Ylan:

Vet inte huruvida du har flera knappar? Man måste referera till knappen.

[...]

Kan det vara så att skriptsnutten körs när du trycker på en annan knapp, en som inte har något value?

Vänligen, Ylan

Jag löste det igår kväll, det var inte det som var problemet, men tack ändå!

1
Bevaka tråden