here is the form code
the Scrollbar is set to usable
should work, so I must be missing something
static Boolean frmHistory_fldScroll_OnScrollbarRepeat(EventPtr event)
{
// Insert code for fldScroll
ScrollLines(FrmGetActiveForm(), fldHistory, fldScroll,
event->data.sclRepeat.newValue - event->data.sclRepeat.value, false);
return true;
}
static Boolean frmHistory_fldHistory_OnfldChanged(EventPtr event)
{
// Insert code for fldHistory
UpdateScrollbar(FrmGetActiveForm(),fldHistory,fldScroll);
return true;
}
static Boolean frmHistory_cmdDone_OnSelect(EventPtr event)
{
// Insert code for cmdDone
FrmReturnToForm(0);
return true;
}
/***********************************************************************
*
* FUNCTION: frmHistory_HandleEvent
*
* DESCRIPTION: Handles a Form event
*
* PARAMETERS: event pointer to an event structure
*
* RETURNED: returns handled/not handled
*
* REVISION HISTORY:
* Name Date Description
* ---- ---- -----------
* DOn 9/2/2007 6:06:08 PM Created
*
***********************************************************************/
Boolean frmHistory_HandleEvent(EventPtr event)
{
FormPtr form;
Boolean handled = false;
switch (event->eType)
{
case fldChangedEvent:
switch (event->data.fldChanged.fieldID)
{
// fldHistory receives an event
case fldHistory:
handled = frmHistory_fldHistory_OnfldChanged(event);
break;
}
break;
case sclRepeatEvent :
switch (event->data.sclRepeat.scrollBarID)
{
// fldScroll receives an event
case fldScroll:
handled = frmHistory_fldScroll_OnScrollbarRepeat(event);
break;
}
break;
case ctlSelectEvent:
switch (event->data.ctlSelect.controlID)
{
// cmdDone receives an event
case cmdDone:
handled = frmHistory_cmdDone_OnSelect(event);
break;
}
break;
case frmOpenEvent:
// Repaint form on open
form = FrmGetActiveForm();
FrmDrawForm(form);
UpdateScrollbar(FrmGetActiveForm(),fldHistory, fldScroll);
handled = true;
break;
default:
break;
}
return handled;
}
void UpdateScrollbar(FormPtr form, UInt16 fieldID, UInt16 scrollbarID)
{
ScrollBarPtr scroll;
FieldPtr field;
UInt16 currentPosition;
UInt16 textHeight;
UInt16 fieldHeight;
UInt16 maxValue;
field = (FieldPtr) FrmGetObjectPtr(form,FrmGetObjectIndex(form, fieldID));
FldGetScrollValues(field, ¤tPosition, &textHeight, &fieldHeight);
// if the field is 3 lines, and the text height is 4 lines
// then we can scroll so that the first line is at the top
// (scroll position 0) or so the second line is at the top
// (scroll postion 1). These two values are enough to see
// the entire text.
if (textHeight > fieldHeight)
maxValue = textHeight - fieldHeight;
else if (currentPosition)
maxValue = currentPosition;
else
maxValue = 0;
scroll = (ScrollBarPtr) FrmGetObjectPtr(form, FrmGetObjectIndex(form,
scrollbarID));
// on a page scroll, want to overlap by one line (to provide context)
SclSetScrollBar(scroll, (Int16) currentPosition, 0, (Int16) maxValue, (Int16)
fieldHeight - 1);
}
void ScrollLines(FormPtr form, UInt16 fieldID, UInt16 scrollbarID, Int16
numLinesToScroll, Boolean redraw)
{
FormPtr frm = FrmGetActiveForm();
FieldPtr field;
field = (FieldPtr) FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, fieldID));
if (numLinesToScroll < 0) FldScrollField(field, (UInt16) -numLinesToScroll,
winUp);
else
FldScrollField(field, (UInt16) numLinesToScroll, winDown);
// if there are blank lines at the end and we scroll up, FldScrollField
// makes the blank lines disappear. Therefore, we've got to update
// the scrollbar
if ((FldGetNumberOfBlankLines(field) && numLinesToScroll < 0) || redraw)
UpdateScrollbar(form, fieldID, scrollbarID);
}
void PageScroll(FormPtr form, UInt16 fieldID, UInt16 scrollbarID,
WinDirectionType direction)
{
FieldPtr field;
field = (FieldPtr) FrmGetObjectPtr(form, FrmGetObjectIndex(form, fieldID));
if (FldScrollable(field, direction))
{
Int16 linesToScroll = (Int16) FldGetVisibleLines(field) - 1;
if (direction == winUp)linesToScroll = -linesToScroll;
ScrollLines(form, fieldID, scrollbarID, linesToScroll, true);
}
}
---------------------------------
Building a website is a piece of cake.
Yahoo! Small Business gives you all the tools to get online.
--
For information on using the ACCESS Developer Forums, or to unsubscribe, please
see http://www.access-company.com/developers/forums/