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

Panel aktivieren/zeigen

Dieses Thema im Forum "AppleScript" wurde erstellt von mewX, 13.01.07.

  1. mewX

    mewX Wohlschmecker aus Vierlanden

    Dabei seit:
    26.12.06
    Beiträge:
    241
    Tach... Ich habe mir ein kleines Projekt mit XCode gebaut, in dem es über den InterfaceBuilder halt ein Panel gibt, das ich gerne öffnen möchte... Kann das schwer erklären, aber wie lautet die FUnktion dazu? ;) Ich meine in etwa sowas:

    [CounterWindow activate]; //Also das hab ich mir jetzt ausgedacht

    CounterWindow ist schon ein

    IBOutlet NSPanel *CounterWindow;

    gruß und hoffe jemand versteht was ich meine^
     
  2. Squart

    Squart Pomme Etrangle

    Dabei seit:
    29.01.04
    Beiträge:
    910
    [CounterWindow makeKeyAndOrderFront:nil]; vielleicht?

    Aber du solltest alle dein Instanzvariablen mit kleinem Buchstaben beginnen lassen (=> counterWindow anstatt CounterWindow), damit du diese nicht mit Klassen verwechselst.
     
  3. mewX

    mewX Wohlschmecker aus Vierlanden

    Dabei seit:
    26.12.06
    Beiträge:
    241
    Danke, geht... Und jetzt die Umkehrung? Wie mache ich ein Fenster/Panel wieder unsichtbar?
    Bzw wie kann man solche Sachen ansonsten schnell herausfinden?
     
  4. Squart

    Squart Pomme Etrangle

    Dabei seit:
    29.01.04
    Beiträge:
    910
    Du kannst alles in der Dokumentation nachschlagen (Im Menü von Xcode findest du diese unter Help->Documentation). In diesem Fall musst du unter NSWindow nachschlagen, da dies die Methoden für jegliches Fenster, also auch ein Panel (Subklasse von NSWindow) beinhaltet.
    Um das Fenster auszublenden musst du orderOut: verwenden.
     
  5. mewX

    mewX Wohlschmecker aus Vierlanden

    Dabei seit:
    26.12.06
    Beiträge:
    241
    Ah gut, da habe ich schon einiges gefunen jetzt...
    Nur wie setze ich den Value von einem NSLevelIndicator? :) Das steht dooferweise nicht in der Dokumentation...
     
  6. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    Doch, das steht in der Dokumentation. NSLevelIndicatior ist eine Subklasse von NSControl und erbt daher alle Methoden von NSControl. Welche Methoden das sind, steht dann in der Dokumentation von NSControl. Die Vererbungshistorie steht immer ganz oben.

    MacApple
     
  7. mewX

    mewX Wohlschmecker aus Vierlanden

    Dabei seit:
    26.12.06
    Beiträge:
    241
    Ahja, gut :)
    Und noch 'ne Frage:
    Irgendwie funktioniert sleep nicht so wie ich es haben will...
    z.B.:

    while (sekundenLeft > 0) {
    sleep(1);
    sekundenLeft = sekundenLeft - 1;
    [secondsLeft setIntValue: sekundenLeft];
    }
    [secondsLeft setIntValue: sekundenLeft];

    Die Sekunden in sekundenLeft werden abgearbeitet (also z.B. 10), aber das Textfeld "secondsLeft" wird nur einmal am Ende aktualisiert, also wenn's auf 0 kommt....
    Erreichen will ich damit natürlich einen Countdown in "secondsLeft"...
    Liegt das an der Schleife oder am sleep?
     
  8. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    Das liegt indirekt an der Schleife. Das Grafiksystem in Cocoa zeichnet nicht bei jeder Änderung sofort diese Änderung neu, sondern sammelt alle Änderungen und zeichnet sie dann in einem Rutsch. Wenn es notwendig ist, eine Änderung unmittelbar zu zeichnen, dann muss man das dem Objekt nur sagen. Das macht man mit der Methode "display". Du musst jetzt also nur noch in Deiner Schleife dem Textfeld die display-Nachricht schicken:
    Code:
    [secondsLeft display];
    MacApple
     
  9. mewX

    mewX Wohlschmecker aus Vierlanden

    Dabei seit:
    26.12.06
    Beiträge:
    241
    Danke.
    Und: Was ist hieran falsch:
    prozentDone = (sekundenAnfang - sekundenLeft) / sekundenAnfang * 100;
    ?
    Ich lasse mir den Prozentstatus in einem Textfeld ausgeben und wieder sprint er erst am Ende auf "100" (natürlich hab ich as Textfeld displayen lassen)... Und ich bin mir sicher dass das Textfeld aktuallisiert wird (mit nem anderen Wert gehts)... Also muss was an der Rechnung falsch sein.
    prozentDone ist ein double..

    EDIT:
    Es geht, nachdem ich daraus das gemacht habe:

    prozentDone = sekundenAnfang - sekundenLeft;
    prozentDone = prozentDone / sekundenAnfang * 100;

    Lag also vermutlich daran, dass beim ersten Mal noch kein double entsteht und sich das dewegen nicht teilen ließ oder sowas..

    EDIT2:
    Soo :) Und wie bekomme ich jetzt AppleScripte in mein Projekt? Bzw wie kann ich sie dann aus dem C-Code heraus ausführen?
     
    #9 mewX, 14.01.07
    Zuletzt bearbeitet: 14.01.07
  10. Squart

    Squart Pomme Etrangle

    Dabei seit:
    29.01.04
    Beiträge:
    910
    Hast du dir schon NSAppleScript angeschaut?
     
  11. mewX

    mewX Wohlschmecker aus Vierlanden

    Dabei seit:
    26.12.06
    Beiträge:
    241
    Ja, aber da wird irgendwie schlecht beschrieben, wei man das benutzt.. Übehaubt fehlen mir ganz oft Beispiele in der Dokumentation...
    Hab mir jetzt das zusammengereimt:
    NSAppleScript *as; (in der .h)

    (In der .m:)
    [as initWithSource: @"TimeShutdown.applescript"];
    [as compileAndReturnError:nil];
    [as executeAndReturnError:nil];

    Aber das Applescript wird nicht ausgeführt..
     
  12. Squart

    Squart Pomme Etrangle

    Dabei seit:
    29.01.04
    Beiträge:
    910
    @"TimeShutdown.applescript" soll eine Datei sein? Du musst natürlich den Quellcode reinsetzen, also so etwas wie [as initWithSource: @"say 'Hi'"];, aber dies steht mit Sicherheit alles in der Dokumentation.
     
  13. mewX

    mewX Wohlschmecker aus Vierlanden

    Dabei seit:
    26.12.06
    Beiträge:
    241
    Achso :) Ich dachte damit binde ich ne Source-Datei ein :) Gut
     

Diese Seite empfehlen