PALM开发教程-第八章 表和滚动条 |
| 作者:palmheart 来源:palmheart.net 发布时间:2005-12-21 3:35:05 |
|
E ) { CtlSetLabel( getObject( form, ContactDetailTimeSelTrigger ), " " ); } else // CH.6 If there is a time { Char timeString[timeStringLength]; // CH.6 Get the time string TimeToAscii( dateTime.hour, dateTime.minute, (TimeFormatType)PrefGetPreference( prefTimeFormat ), timeString ); // CH.6 Set the selector trigger label CtlSetLabel( getObject( form, ContactDetailTimeSelTrigger ), timeString ); } // CH.6 We're done return; } // CH.6 Set the controls in the Enter Time form based on dateTime static void setTimeControls( void ) { FormPtr form; ControlPtr hourButton; ControlPtr minuteTensButton; ControlPtr minuteOnesButton; ControlPtr amButton; ControlPtr pmButton; ControlPtr noTimeCheckbox; Char labelString[3]; SWord hour; // CH.6 Get the form form = FrmGetActiveForm(); // CH.6 Get the control pointers hourButton = getObject( form, EnterTimeHoursPushButton ); minuteTensButton = getObject( form, EnterTimeMinuteTensPushButton ); minuteOnesButton = getObject( form, EnterTimeMinuteOnesPushButton ); amButton = getObject( form, EnterTimeAMPushButton ); pmButton = getObject( form, EnterTimePMPushButton ); noTimeCheckbox = getObject( form, EnterTimeNoTimeCheckbox ); // CH.6 If there is a time if( dateTime.hour != NO_TIME ) { // CH.6 Update the hour hour = dateTime.hour % 12; if( hour == 0 ) hour = 12; CtlSetLabel( hourButton, StrIToA( labelString, hour ) ); // CH.6 Update the minute tens CtlSetLabel( minuteTensButton, StrIToA( labelString, dateTime.minute / 10 ) ); // CH.6 Update the minute ones CtlSetLabel( minuteOnesButton, StrIToA( labelString, dateTime.minute % 10 ) ); // CH.6 Update AM CtlSetValue( amButton, (dateTime.hour < 12) ); // CH.6 Update PM CtlSetValue( pmButton, (dateTime.hour > 11) ); // CH.6 Uncheck the no time checkbox CtlSetValue( noTimeCheckbox, false ); } else // If there is no time { // CH.6 Update the hour CtlSetValue( hourButton, false ); CtlSetLabel( hourButton, "" ); // CH.6 Update the minute tens CtlSetValue( minuteTensButton, false ); CtlSetLabel( minuteTensButton, "" ); // CH.6 Update the minute ones CtlSetValue( minuteOnesButton, false ); CtlSetLabel( minuteOnesButton, "" ); // CH.6 Update AM CtlSetValue( amButton, false ); // CH.6 Update PM CtlSetValue( pmButton, false ); // CH.6 Uncheck the no time checkbox CtlSetValue( noTimeCheckbox, true ); } // CH.6 We're done return; } // CH.7 This function is called by Palm OS to sort records static Int sortFunc( CharPtr precord1, CharPtr precord2, Int sortBy ) { Int sortResult; // CH.7 Switch based on sort criteria switch( sortBy ) { // CH.7 Sort by date and time case SORTBY_DATE_TIME: { DateTimePtr pdateTime1; DateTimePtr pdateTime2; Long lDiff; pdateTime1 = (DateTimePtr)(precord1 + DB_DATE_TIME_START); pdateTime2 = (DateTimePtr)(precord2 + DB_DATE_TIME_START); // CH.7 Compare the dates and times lDiff = (Long)(TimDateTimeToSeconds( pdateTime1 ) / 60 ) - (Long)(TimDateTimeToSeconds( pdateTime2 ) / 60 ); // CH.7 Date/time #1 is later if( lDiff > 0 ) sortResult = 1; else // CH.7 Date/time #2 is later if( lDiff < 0 ) sortResult = -1; else // CH.7 They are equal sortResult = 0; } break; // CH.7 Sort by first name case SORTBY_FIRST_NAME: { sortResult = StrCompare( precord1 + DB_FIRST_NAME_START, precord2 + DB_FIRST_NAME_START ); } break; // CH.7 Sort by last name case SORTBY_LAST_NAME: { sortResult = StrCompare( precord1 + DB_LAST_NAME_START, precord2 + DB_LAST_NAME_START ); } break; } // CH.7 We're done return( sortResult ); } // CH.8 Draw our list of choices using a table object static void drawTable( void ) { FormPtr form; TablePtr table; Int column; Int count; ControlPtr upArrow; ControlPtr downArrow; // CH.8 Get the form pointer form = FrmGetActiveForm(); // CH.8 Get the table pointer table = getObject( form, ContactListTableTable ); // CH.8 For all columns for( column = 0; column < TABLE_NUM_COLUMNS; column++ ) { // CH.8 Set the draw routine TblSetCustomDrawProcedure( table, column, drawCell ); // CH.8 Make the column visible TblSetColumnUsable( table, column, true ); } // CH.8 Initialize the table styles for( count = 0; count < TABLE_NUM_ROWS; count++ ) { // CH.8 If there is data if( count < numRecords ) { // CH.8 Show the row TblSetRowUsable( table, count, true ); // CH.8 Set the cell styles for( column = 0; column < TABLE_NUM_COLUMNS; column++ ) TblSetItemStyle( table, count, column, customTableItem ); } else // CH.8 Hide unused rows if any TblSetRowUsable( table, count, false ); } // CH.8 Draw the table TblDrawTable( table ); // CH.8 Get pointers to the arrow buttons upArrow = getObject( form, ContactListRecordUpRepeating ); downArrow = getObject( form, ContactListRecordDownRepeating ); // CH.8 Update the arrow buttons and scrollbars if( numRecords > TABLE_NUM_ROWS ) { // CH.8 Show the up arrow if( cursor > 0 ) { CtlSetLabel( upArrow, BLACK_UP_ARROW ); CtlSetEnabled( upArrow, true ); } else { |
| [] [返回上一页] [打 印] |
|
文章评论 |
