• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Button deaktivieren

jannk

Niederhelfenschwiler Beeriapfel
Registriert
17.06.07
Beiträge
838
Hallöchen
Ich habe in XCode ein AppleScript-Programm erstellt.
Nun möchte ich einen Button (Den ich im Nib-Window mit Interface Builder erstellt habe) per Script deaktivieren (Grau Darstellen, sowie wenn man bei "Enabled" das Häckchen weg macht)

Hat jemand eine Idee, wie das funktionieren könnte?
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
set enabled of [Knopf-Referenz] to false -- vielleicht so?
 

jannk

Niederhelfenschwiler Beeriapfel
Registriert
17.06.07
Beiträge
838
Danke

Irgendwie kapier ich es nicht, es kommt immer die Meldung:
„«class enaB» of "start"“ kann nicht als „false“ gesetzt werden. (-10006)

Noch was: "start" ist der Name des Buttons
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
Mit Script-Auszug geht alles leichter -- vor allem das Fehler-Erkennen. ;)

Aber vorab schonmal ein Schuss ins Blaue: Hast Du den Knopf nur ueber seinen Namen identifiziert, ohne das entsprechende "... of window [Fenster-Referenz]" etc. hintendran zu haengen?
 

jannk

Niederhelfenschwiler Beeriapfel
Registriert
17.06.07
Beiträge
838
Oh, wie doof muss man sein?

Probier es gleich aus, wenn ich aus der Schule komme
 

jannk

Niederhelfenschwiler Beeriapfel
Registriert
17.06.07
Beiträge
838
Jetzt startet es nicht mehr :-[
Irgendwie hab ich nen Knopf. Also, hier mal den Script-Teil:

Code:
on clicked theObject
	set btnName to (name of theObject)
	if (btnName is "1") then
           --nur als Beispiel, damit das else benoetigt wird
	else if (btnName is "start") then
		set enabled of "start" of window "main"  to false 
	end if
end clicked

@Peter Maurer: Finde Butler 'n super App;)
 
Zuletzt bearbeitet:

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
Jetzt startet es nicht mehr :-[
Fehlermeldung?

Code:
on clicked theObject
	set btnName to (name of theObject)
	if (btnName is "1") then
           --nur als Beispiel, damit das else benoetigt wird
	else if (btnName is "start") then
		set enabled of "start" of window "main"  to false 
	end if
end clicked
In dem Fall muesstest Du wohl ...

Code:
set enabled of [B]button[/B] "start" of window "main"  to false
... schreiben. Oder versuch's der Einfachheit halber mal mit ...

Code:
set enabled of theObject to false

Ach ja, und ...

Finde Butler 'n super App;)
Ich auch! :D
 
Zuletzt bearbeitet:

jannk

Niederhelfenschwiler Beeriapfel
Registriert
17.06.07
Beiträge
838
Merci, Peter

Ach ja, noch was:
Wie kann ich das gleiche (Der Button wird deaktiviert) bewirken, einfach mit einer Check-Box? (Häcken ein = Button (und Textfelder) aktiv, kein Häckchen = Button und Textfelder deaktiviert)

Mein Englisch ist eben noch nicht so fortgeschritten :)
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
Dann muesstest Du die Checkbox wohl nach Ihrem Status fragen, nachdem sie angeklickt wurde und Dein Event-Handler losgelaufen ist.

Nehmen wir mal an, der Knopf, den Du en- und disablen willst, hiesse "MyButton", und die Checkbox, die darueber entscheidet, hiesse "MyCheckbox". Dann ginge das wahrscheinlich ungefaehr so (reiner Fantasie-Code, nicht ausprobiert; und ich lass zwecks Uebersicht mal das "else" weg und verwende statt dessen eine direkte Abfrage):

Code:
on clicked theObject
	set theObjectName to (name of theObject)
	if (theObjectName is "MyCheckbox") then
		set isMyCheckboxChecked to (state of theObject is 1)	-- wir basteln uns hier eine BOOLsche Variable fuer den Zustand der Checkbox
		set enabled of button "MyButton" of window "main" to isMyCheckboxChecked
	end if
end clicked
Man koennte das natuerlich auch noch kuerzer schreiben, aber so kannst Du es besser Schritt fuer Schritt nachvollziehen, denk' ich. :)
 

jannk

Niederhelfenschwiler Beeriapfel
Registriert
17.06.07
Beiträge
838
Danke vielmals :-D

Wo kann man eigentlich den Namen des Objektes herausfinden? (Von einem Button ist es ja "button", oder von einem Fenster ist es ja "window") Was ist es aber von Popup-Menues, Slider, SegmentedControls und Boxen?)

PS Hab die beiden "t"s geändert:-[

Edit: Kann man auch eine ganze Box ausblenden?
Code:
set enabled of box "1" of window "main" to false
funktioniert irgendwie nicht. :mad: Es kommt die Meldung:
«class enaB» of «class boxO» "1" of window "main" kann nicht in Typ reference umgewandelt werden. (-1700)
 
Zuletzt bearbeitet:

the x-master

Riesenboiken
Registriert
29.01.06
Beiträge
290
Hallo jannk,

die Namen der einzelnen Klassen stehen im IB eigentlich immer auf der titlebar des Inspectors.
Die meisten Cocoa-Klassen (sofern du ein Cocoa Projekt erstellst) beginnen mit einem NS (NeXTStep), deine selbst gebastelten Klassen sollten kein NS vorne besitzen. ;)
Falls du die Klasse über AppleScript herausfinden willst, könntest du das z.B. so tun:
Code:
log (class of theObject) as string

Grüße,
X.

P.S. Ich würde mal gerne wissen, wozu du das brauchst. Mir fehlte bisher noch nie der Name einer Klasse. Sie standen ja alle ganz brav im IB. ;)
 

the x-master

Riesenboiken
Registriert
29.01.06
Beiträge
290
Edit: Zur 2. Frage:

Das ist ein, denke ich, ein bekanntes Problem. Lässt sich nicht in AppleScript realisieren, auch nicht in Objective-C.
Du müsstest jedes einzelne Objekt in der Box herausfinden und dort dann die richtigen Werte setzen.
Da würde ich die Box ja eher 'unsichtbar' machen. Falls du aber nur ein oder zwei Objekte in deiner Box hast, geht die andere Variante besser. :)

Grüße,
X.
 

the x-master

Riesenboiken
Registriert
29.01.06
Beiträge
290
Edit 2: Ahh, ich glaube ich weiß, was du mit der ersten Frage meintest. Du möchtest den Namen wissen, wie du sie über den AS Code ansprichst ?
Ja, da gibt es mehrere Lösungen. In jedem AppleScript-Projekt befindet sich das Funktionsverzeichnis (AppleScriptKit.sdef).
Öffne es und gib 'window' ein. Du wirst einige Einträge finden. Such' nach einem blauen 'C', Kind 'Class' und Terminology 'window'.
Dort stehen dann alle Properties zum NSWindow. Dort steht aber auch, was ein NSWindow beinhalten kann (verlinkte, blaue Schrift).
contains boxes, browsers…etc.
Dort wirst du dann sicher fündig. :)

Viel Spaß, hoffe ich konnte helfen.

Grüße,
X.
 

jannk

Niederhelfenschwiler Beeriapfel
Registriert
17.06.07
Beiträge
838
Vielen Dank, x-master.
Das mit den Apple-Script Namen von den Objekten:
Ich hatte Probleme ein Text-Feld auszublenden. Ich dachte, ich hätte seinen Namen im AppleScript falsch angegeben. Allerdings befand sich das Text-Feld in einer Box. Nun meine Frage: Wie kann ich ein Objekt (zB. einen Button) ansprechen, der sich in einer Box befindet?
Code:
set enabled of button "start" of box "m" of window "main"  to false
funktioniert nicht.

Ach ja, noch eine gaaanz andere Frage:
Wie kann ich Daten per AppleScript Studio kopieren? (Ohne den Finder)
 

the x-master

Riesenboiken
Registriert
29.01.06
Beiträge
290
Hallo,

die Button Referenz ist richtig, wenn dein Button wirklich 'start', deine Box 'm' und dein Fenster 'main' heißt.
of box ist korrekt. :)

Grüße,
X.

P.S. Daten würde ich über ein Shell Script per 'cp' (Terminal -> man cp) kopieren.
 

jannk

Niederhelfenschwiler Beeriapfel
Registriert
17.06.07
Beiträge
838
Nochmals herzlichen Dank, The x-master :)
Ok, das mit dem Ausblenden hab ich jetzt kapiert.
Mit dem Kopieren schau ich noch.

Nun hab ich nochmals ne Frage (danke für deine Geduld)
Wie kann ich mit AppleScript eine Mail senden? (Vielleicht sogar ohne zusätzliches Programm?) Hab mal die Oberfläche gemacht, (so würde ich es mir vorstellen) beim Code hoffe ich auf Unterstützung :-D
 

Anhänge

  • eMail senden.zip
    64,3 KB · Aufrufe: 63

the x-master

Riesenboiken
Registriert
29.01.06
Beiträge
290
Hallo jannk,

tut mir leid, ich weiß keinen AppleScript Weg eine Mail ohne 'Apple Mail' zu versenden.
Falls du Interesse an dem Code für Apple Mail hast - ich habe das schon mal gemacht:

Code:
tell application "Mail"
				set newMessage to make new outgoing message with properties {subject:theSubject, content:theBody}
				tell newMessage
					set visible to true
					
					make new to recipient at end of to recipients with properties {address:theAddress}
					tell content
						
						make new attachment with properties {file name:"..."} at after the last paragraph
						
					end tell
					
				end tell
				
				activate
				send newMessage
			end tell

theSubject, theBody, theAddress musst du natürlich zuweisen, die Variablen sind noch nicht definiert. Viel Spaß, hoffe das hilft.

Grüße,
X.