keyDownEvent (Enter bzw. '/n') auf Popuptrigger Event umleiten?

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 zusammen,


    Vorab:
    ich programmiere in C mit Codewarrior 9.3
    die aktuelles Palm OS SDK ist installiert


    Alle Felder, Popuptrigger, Listen etc. sind definiert und funktionieren einwandfrei. Wird der Popuptrigger ausgelöst, wird der Inhalt des Feldes ausgelesen, die entsprechende Liste aus der DB ausgelesen, das Listenfenster angezeigt und, je nach Eingabe, an die Position im Listenfenster gesprungen.


    Nun möchte ich möglichst folgendes einbauen:
    Wir bei der Eingabe im Feld ein Enter ('\n') ausgeführt (per Grafitti oder Taste) soll automatisch der oben beschriebene Popuptrigger Event aufgerufen werden. Dies würde die Eingabe (meiner Meinung nach) sehr vereinfachen.


    Den Event abzufangen ist nicht das Thema:


    switch (eventP->eType)
    {
    case keyDownEvent:
    if (eventP->data.keyDown.chr == '\n'){
    Field = GetFocusObjectId();
    ...


    Danach muss der kompletten Popuptrigger Event generiert werden (controlID, ControlType etc.), nur wie mach ich das?


    Zusammengefasst: kann man, bzw. wie kann man Events "von Hand" auslösen?


    Danke


    Punx

    • Offizieller Beitrag

    Man kann zumindest CtrlSelect events generieren und dann in die EventQueue senden:


    EventType event;


    // select event
    event.eType = (eventsEnum) ctlSelectEvent;
    event.data.ctlSelect.controlID = id;
    event.data.ctlSelect.pControl = FrmGetObjectPtr(frm, i);
    event.data.ctlSelect.on = true;
    EvtAddEventToQueue(&event);


    Am Besten erzeugt man noch alle anderen Events in der Richtigen Reihenfolge, die dazu gehören: PenDown, PenUp. Das sieht man gut im PalmSimulator: Contextmenü->View->Events
    Wie das mit PopupTriggern aussieht, weiß ich nicht. Aber Du könntest auch die Liste einfach von Hand enablen (LstPopupList) und dann das Label des PopupTriggers hinterher setzen (CtlSetLabel).


    Gruß
    Henk