1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Button deaktivieren

Dieses Thema im Forum "AppleScript" wurde erstellt von jannk, 14.09.07.

  1. jannk

    jannk Niederhelfenschwiler Beeriapfel

    Dabei seit:
    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?
     
  2. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    set enabled of [Knopf-Referenz] to false -- vielleicht so?
     
  3. jannk

    jannk Niederhelfenschwiler Beeriapfel

    Dabei seit:
    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
     
  4. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    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?
     
  5. jannk

    jannk Niederhelfenschwiler Beeriapfel

    Dabei seit:
    17.06.07
    Beiträge:
    838
    Oh, wie doof muss man sein?

    Probier es gleich aus, wenn ich aus der Schule komme
     
  6. jannk

    jannk Niederhelfenschwiler Beeriapfel

    Dabei seit:
    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;)
     
    #6 jannk, 14.09.07
    Zuletzt bearbeitet: 14.09.07
  7. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    Fehlermeldung?

    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 ...

    Ich auch! :D
     
    #7 Peter Maurer, 14.09.07
    Zuletzt bearbeitet: 14.09.07
  8. jannk

    jannk Niederhelfenschwiler Beeriapfel

    Dabei seit:
    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 :)
     
  9. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    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. :)
     
  10. jannk

    jannk Niederhelfenschwiler Beeriapfel

    Dabei seit:
    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)
     
    #10 jannk, 14.09.07
    Zuletzt bearbeitet: 15.09.07
  11. the x-master

    the x-master Riesenboiken

    Dabei seit:
    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. ;)
     
  12. the x-master

    the x-master Riesenboiken

    Dabei seit:
    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.
     
  13. the x-master

    the x-master Riesenboiken

    Dabei seit:
    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.
     
  14. jannk

    jannk Niederhelfenschwiler Beeriapfel

    Dabei seit:
    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)
     
  15. the x-master

    the x-master Riesenboiken

    Dabei seit:
    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.
     
  16. the x-master

    the x-master Riesenboiken

    Dabei seit:
    29.01.06
    Beiträge:
    290
  17. jannk

    jannk Niederhelfenschwiler Beeriapfel

    Dabei seit:
    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:

  18. the x-master

    the x-master Riesenboiken

    Dabei seit:
    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.
     

Diese Seite empfehlen