Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

scroll bar doesn't work...

0 views
Skip to first unread message

RAB

unread,
Oct 28, 2005, 2:02:08 PM10/28/05
to
I am using C++ within Codewarrior for the palm os.

I am opening Form3 from Form2. Form3 has a field and a scrollbar.
Here is the my code:


Boolean Form2Handler( EventPtr eventP)
{
Boolean handled = false;
switch (eventP->eType)
{


case ctlSelectEvent:
{

frmP = FrmInitForm (Form3);

FrmSetEventHandler (frmP,
Form3EventHandler);

FrmSetActiveForm(frmP);

FrmDoDialog (frmP);

FrmDeleteForm (frmP);
}

}

return handled;
}


Boolean Form3EventHandler(EventPtr eventP)
{

Boolean handled = false;
switch (eventP->eType)
{

case fldChangedEvent:
{
updateScrollbar();
handled = true;
break;
}

case sclRepeatEvent:
{

scrollLines(eventP->data.sclRepeat.newValue -
eventP->data.sclRepeat.value, false);

break;

}

}
return handled;
}


void updateScrollbar()
{
FormPtr frm = FrmGetActiveForm();
ScrollBarPtr scroll;
FieldPtr field;
UInt16 currentPosition;
UInt16 textHeight;
UInt16 fieldHeight;
UInt16 maxValue;
field = (FieldPtr)FrmGetObjectPtr(frm, FrmGetObjectIndex
(frm, FieldID));
FldGetScrollValues(field, &currentPosition, &textHeight,
&fieldHeight);

if (textHeight > fieldHeight)
maxValue = textHeight - fieldHeight;
else if (currentPosition)
maxValue=currentPosition;
else
maxValue=0;

scroll = (ScrollBarPtr)FrmGetObjectPtr(frm,
FrmGetObjectIndex (frm, ScrollID));
SclSetScrollBar(scroll, currentPosition, 0, maxValue,
fieldHeight-1);
}

void scrollLines(Int16 numLinesToScroll, Boolean redraw)
{
FormPtr frm = FrmGetActiveForm();
FieldPtr field;
field = (FieldPtr)FrmGetObjectPtr( frm, FrmGetObjectIndex
(frm, FieldID));

if(numLinesToScroll < 0)
FldScrollField(field, -numLinesToScroll, winUp);
else
FldScrollField(field, numLinesToScroll, winDown);

if ((FldGetNumberOfBlankLines(field)&& numLinesToScroll<0)
|| redraw)
updateScrollbar();
}


My problem is that the scrollbar doesn't function properly. I have
isolated the bug to the following code:
scrollLines(eventP->data.sclRepeat.newValue -
eventP->data.sclRepeat.value, false);

eventP->data.sclRepeat.newValue = 0 (always)
and
eventP->data.sclRepeat.value = what newValue should be.


Does anyone know why this behavior might be occuring?

Thanks,
RABMissouri

0 new messages