Thank you for you assistance. I have changed my code like you said (at least
I thought I did). I am still having the same problem. When the StartTime
code is befor the EndTime code, I get the "Object not in form" error.
Below is the code with changes. This time I included the entire function.
Thank you again,
Todd
static void ServicePeriodFormOpen(FormPtr)
{
MemHandle currentRecordH;
ServDBRecord *currentRecordP;
FormPtr frmP;
static Char datelbl[20];
Char *startTime;
Char *endTime;
static Char *startlbl;
static Char *endlbl;
FieldType *datefldP;
frmP = FrmGetActiveForm();
// Get ServicePeriod record
currentRecordH = DmQueryRecord(gServDB, gCurrentIndex);
currentRecordP = MemHandleLock(currentRecordH);
// Save current record in global for later reference
gCurrentRecord = *currentRecordP;
// Move date to screen
DateToDOWDMFormat(gCurrentRecord.start.month,
gCurrentRecord.start.day,gCurrentRecord.start.year,
sysPrefs.longDateFormat,datelbl);
datefldP = (FieldType *)FrmGetObjectPtr(frmP,FrmGetObjectIndex(frmP,
ServicePeriodDateField));
FldSetTextPtr(datefldP, datelbl);
// Move start time to screen
startTime = MemPtrNew(timeStringLength);
(const Char*)startTime =
CtlGetLabel(GetObjectPtr(ServicePeriodStartSelTrigger));
TimeToAscii(gCurrentRecord.start.hour,
gCurrentRecord.start.minute,sysPrefs.timeFormat, startTime);
startlbl = MemPtrNew(StrLen(startTime)+1);
StrCopy(startlbl, startTime);
CtlSetLabel(GetObjectPtr(ServicePeriodStartSelTrigger),startlbl);
// Move end time to screen
// If new record with no end time, use default label label; else end time
if (gCurrentRecord.end.hour != noTime)
{
endTime = MemPtrNew(timeStringLength);
(const Char*)endTime=
CtlGetLabel(GetObjectPtr(ServicePeriodEndSelTrigger));
TimeToAscii(gCurrentRecord.end.hour,
gCurrentRecord.end.minute,sysPrefs.timeFormat, endTime);
endlbl = MemPtrNew(StrLen(endTime)+1);
StrCopy(endlbl, endTime);
CtlSetLabel(GetObjectPtr(ServicePeriodEndSelTrigger),endlbl);
}
MemHandleUnlock(currentRecordH);
gNewRecord = false;
}
"David Fedor" <[EMAIL PROTECTED]> wrote in message
news:72545@palm-dev-forum...
> I'm pretty sure the problem is that you're calling TimeToAscii, putting
the
> results into endTime, but not making sure that endTime is a big enough
> buffer to fit the time value... it is only as big as whatever was in the
> trigger before.
>
> Do a MemPtrNew to allocate a buffer of at least "timeStringLength" bytes,
> then call TimeToAscii, then call CtlSetLabel. More efficient and correct
> too, how about that? :-) (Don't forget to free the memory that you
> allocate, though...)
>
> -David Fedor
> Palm, Inc.
>
>
--
For information on using the Palm Developer Forums, or to unsubscribe, please see
http://www.palmos.com/dev/tech/support/forums/