Menueleiste

Willkommen!

Wenn du im Nexave-Forum mitmachen möchtest, schreib an community@nexave.de. Wir haben die Registrierungsfunktion in unserem Diskussionsforum nämlich deaktiviert, weil sich praktisch nur noch Spammer und Werbebots registriert haben. Per E-Mail sind wir dir gern behilflich, einen Account anzulegen.
  • Hallo,
    in meinem kleinen Palm Programm habe ich mir eine Funktion geschrieben die mir das Datum und die Zeit anzeigt.
    Es wird ein kleiner String mit WinDrawChars in native rechts oben neben dem Formulatext angezeigt.
    Der Refresh erfolgt alle Sekunden im nilevent.
    Wenn man nun die Menueleiste aufklappt wird manchmal der String über das Menue geschrieben.
    Da das System das Menue selbst öffnet weiss ich jetzt nicht wann ich das Anzeigen unterdrücken muss.
    Woher weiss ich nun ob das Menue geöffnet ist?
    danke für Hilfe
    :peinlich:
    (68k TE2)

  • Hallo nur zur Info,
    mit winExitEvent und winEnterEvent hats doch nicht immer funktioniert
    richtig gehts mit menuOpenEvent und menuCloseEvent.
    Der winEnterEvent kommt glaube ich bei aktivsetzen des Fensters und bei allen aktivitäten im Fenster egal ob menu oder irgend ein Button.

  • mti


    Es hört sich sehr, sehr interessant an.
    Kannst Du auch der Ladenzustand der Batterie anzeigen lassen
    und dann wahlweise Datum, Zeit und/oder Batterie ?


    Kannst Du einen ScreenShot hier zeigen ?


    Liebe Grüße
    LeFrench


  • Das funktioniert doch wunderbar mit dem ZLauncher


    Viele Grüße
    McPalmi

  • Hallo, das mit dem Ladezustand geht sicher habe ich aber noch nicht gefunden.


    anbei der C Code der oben rechts Zeit und Datum anzeigt.
    viel Spaß beim ausprobieren.
    void viewDate(void)
    {
    DateTimePtr datumZeit;
    char* zeit;
    static UInt8 StundeVor;
    datumZeit = MemPtrNew(20);


    TimSecondsToDateTime(TimGetSeconds(),datumZeit);

    zeit = MemPtrNew(timeStringLength);// Speicher Zeitstringlänge hohlen
    TimeToAscii(datumZeit->hour,datumZeit->minute,tfColon24h,zeit);


    if(StundeVor>datumZeit->hour){
    clrDate();//bei 23:59->0:00 Zeichen löschen sonst bleibt letzte Ziffer stehen
    }
    StundeVor=datumZeit->hour;


    WinPaintChars(zeit,StrLen(zeit),128,1);
    MemPtrFree(zeit);

    zeit = MemPtrNew(dateStringLength);// Speicher Datumstringlänge hohlen
    DateToAscii(datumZeit->month,datumZeit->day,datumZeit->year,dfDMYWithDashes,zeit);
    WinPaintChars(zeit,StrLen(zeit),88,1);

    MemPtrFree(zeit);
    MemPtrFree(datumZeit);

    }


    void clrDate(void)
    {
    UInt8 i;
    UInt8 j=88;

    for(i=0;i<16;i++){
    WinPaintChars(" ",2,j,1);//Zeichen mit Leerzeichen übermalen
    j+=4;
    }
    }

  • Zitat

    Original von mti
    ...anbei der C Code...


    Könntest du bitte noch eine prc/pdb anhängen, keine lust die developer suite von palm nur zum ausprobieren zu laden...

    mobile / pda. treo 680 - fw mw01.50
    consoles. sony psp - fw 3.30oe-a -- xbox360 - kernel 5759
    pc. hp pavilion t3010
    laptop. asus-lamborghini vx2 black/carbon

    Einmal editiert, zuletzt von filip95 ()

  • mti


    Wenn ich das richtig verstanden habe, ist es eine Anzeige (Datum u. Zeit) (vielleicht auch Batterie) die in jeder Anwendung mit der Befehlleiste erscheint ?


    Ist das richtig ?


    Sonst braucht man das nicht, denn es ist mit dem Launcher vorhanden wenn man die Anwendungen verlässt !


    Dann braucht die Gemeinschaft die .prc Datei.


    Liebe Grüße
    LeFrench

  • Also,
    wenn jemand eine Palm Appl. erstellt kann der C Code in sein Programm mit eingebunden werden.

    Es wird dann beim aufrufen der Funktion ein String mit Datum und Zeit oben rechts angezeigt.


    da wir hier im Forum /Entwicklung sind habe ich den Code reingestellt.


    Es ist also nichts fertiges für nicht Palm Programmierer.
    beste Grüße


    mti

  • Zitat

    Hallo nur zur Info,
    mit winExitEvent und winEnterEvent hats doch nicht immer funktioniert
    richtig gehts mit menuOpenEvent und menuCloseEvent.


    Löst das "menuOpenEvent" nicht nur aus, wenn das Menü inititalisiert wird? Also z.B. wenn ich das 1. mal in einer Form darauf klicke. Beim 2. mal drauf klicken sollte es aber doch nicht mehr auslösen!?


    Btw. steht in der API zum menuCloseEvent:
    "A menuCloseEvent is defined by the system, but it is not currently
    sent
    . If you need to perform some cleanup (such as closing a
    resource) after the menu item you added is no longer needed, do so
    in response to frmCloseEvent."


    Aber wenns funktioniert ... ;)

    • Offizieller Beitrag

    winEnter && winExit sind definitiv die richtigen. menuOpen gibt's nur einmal, beim Initialisieren. Seite 110 des PalmOS Companion.pdf schreibt dazu unter der Überschrift:


    Checking Menu Visibility


    When the operating system draws a menu, the menu’s window
    becomes the active drawing window. The operating system
    generates a winExitEvent for the previous active drawing
    window and a winEnterEvent for the menu’s window. When the
    menu is erased, the system generates a winExitEvent for the
    menu’s window and a winEnterEvent for the window that was
    active before the menu was drawn.


    [...]


    Code
    EvtGetEvent (&event, TimeUntillNextPeriod());
    if (event.eType == winExitEvent) {
    if (event.data.winExit.exitWindow == (WinHandle) FrmGetFormPtr(MainView)) {
    // stop drawing.
    }
    }


    und

    Code
    else if (event.eType == winEnterEvent) {
    if (event.data.winEnter.enterWindow ==
    (WinHandle) FrmGetFormPtr(MainView) &&
    event.data.winEnter.enterWindow ==
    (WinHandle) FrmGetFirstForm ()) {
    // start drawing
    }
    }
  • komisch???

    Zitat

    menuOpen gibt's nur einmal, beim Initialisieren


    Ich benutze ein Enable Flag welches beim öffnen der Form und beim menuOpenEvent gelöscht wird.


    Beim menuCloseEvent wird das Flag wieder gesetzt.


    Solange das Flag false ist zeige ich den String sonst nicht =>zwar nicht der OS Profi code aber geht.
    mfg mti