I have an app that scrolls a client list table just fine. I have two repeat
buttons just as in the address book "ListView". The only problem is that
when I press my scroll buttons up or down there is a square around the arrow
button that stays highlighted after the release; other than that they work
fine. I want it to look clean like the address book scroll listview. I have
even looked at the code and seem to be doing the same for repeatevents and
ctlenter events.

If I put the update form code in the default case where I think a nil event
is happening, the square highlight goes away, but my button presses on the
scroll buttons don't get detected very well (every 5 or 6 presses).

Any ideas?

Here's the relevant code:

static Boolean CustomerFormEventHandler(EventPtr e)
{
        Boolean handled = false;
    FormPtr frmP = FrmGetActiveForm();
    Char tmpstr[25];

#ifdef __GNUC__
   CALLBACK_PROLOGUE
#endif

switch(e->eType)
   {
    case frmOpenEvent:
          //frmP = FrmGetActiveForm();
      // Insert code here to fill CustTable with database
      // records when form is loaded
          //LoadCustTab( frmP);
          InitializeClientListTable();
      FrmDrawForm( frmP);
      handled = true;
          break;

        case ctlSelectEvent:
          switch (e->data.ctlEnter.controlID)
            {
                case ClientListFormOKButton:
                  SwitchForm(MainForm);
                  handled = true;
                  break;

                case ClientListFormAddButton:
                  SwitchForm(NewClientForm);
                  handled = true;
                  break;

            default:
              handled = false;

            }
          break;

    case ctlEnterEvent:
    switch (e->data.ctlEnter.controlID)
            {
            case ClientListFormDownRepeatButton:
            case ClientListFormUpRepeatButton:
              //leave unhandled for repeat
              //handled = true;
              break;
            }
    FrmUpdateScrollers ( frmP, FrmGetObjectIndex(frmP,
ClientListFormUpRepeatButton),

FrmGetObjectIndex(frmP,ClientListFormDownRepeatButton),
                              true, true);
    FrmDrawForm( frmP);
        break;

    case ctlRepeatEvent:
      switch (e->data.ctlRepeat.controlID)
            {
            case ClientListFormDownRepeatButton:
              ScrollClientList(0);
              //leave unhandled for repeat
              //handled = true;
              break;

            case ClientListFormUpRepeatButton:
              ScrollClientList(1);
              //leave unhandled for repeat
              //handled = true;
              break;

            default:
              handled = false;
              break;
            }

     FrmUpdateScrollers ( frmP, FrmGetObjectIndex(frmP,
ClientListFormUpRepeatButton),

FrmGetObjectIndex(frmP,ClientListFormDownRepeatButton),
                              true, true);
     FrmDrawForm( frmP);
     break;

    default:
      //nil event is here I think.
      break;
   }

#ifdef __GNUC__
   CALLBACK_EPILOGUE
#endif

   return handled;

}

Reply via email to