i am trying to add text to a table which has been read
from a database. The text is already in the database.
Main form is openend first, when button selected on
main form, opens 2nd form called about form, where my
table is. The table should then diplay , but isn't
can anyone have a look at this and tell me were i'm
going wrong
cheers
adam
more info can be supplied
codewarrior c programming
#include<Pilot.h>
#include"main_res.h"
static Boolean MainHandleEvent(EventPtr event);
static Boolean AboutHandleEvent(EventPtr event);
/*start up forms*/
static VoidHand hchoices;
static VoidHand hpchoices;
static void newRecord(void);
static VoidPtr getObject(FormPtr,Word);
static DmOpenRef OrderDB;
static ULong numRecords;
static UInt cursor;
static Boolean isDirty;
static VoidHand hrecord;
static void drawTable( void );
static void drawCell( VoidPtr table, Word row,
Word column, RectanglePtr bounds );
/* Constants that define the Order Line database
record */
#define DB_ID_START 0
#define DB_ID_SIZE (sizeof(ULong))
/*#define DB_ITEM_START (DB_ID_START + DB_ID_SIZE)
#define DB_ITEM_SIZE 16
#define DB_SEAT_START (DB_ITEM_START + DB_ITEM_SIZE)
#define DB_SEAT_SIZE 16
#define DB_QUANT_START (DB_SEAT_START + DB_SEAT_SIZE)
#define DB_QUANT_SIZE 16
#define DB_MOD_START (DB_QUANT_START + DB_QUANT_SIZE)
#define DB_MOD_SIZE 16
#define DB_LEVEL_START (DB_MOD_START + DB_MOD_SIZE)
#define DB_LEVEL_SIZE 16
#define DB_HOLD_START (DB_LEVEL_START + DB_LEVEL_SIZE)
#define DB_HOLD_SIZE 16
#define DB_RECORD_SIZE (DB_HOLD_START + DB_HOLD_SIZE)
/* */
#define TABLE_NUM_COLUMNS 6
#define TABLE_NUM_ROWS 4
#define TABLE_COLUMN_ITEM 0
#define TABLE_COLUMN_SEAT 1
#define TABLE_COLUMN_QUANT 2
#define TABLE_COLUMN_MOD 3
#define TABLE_COLUMN_LEVEL 4
#define TABLE_COLUMN_HOLD 5
///////////////////////////////////////////////////////////////////////////////////////////
DWord PilotMain(Word cmd,Ptr,Word)//start up forms
{
FormPtr form;
EventType event;
Word error;
Word x;
if(cmd!=sysAppLaunchCmdNormalLaunch)
return(0);
if(((error=DmCreateDatabase(0,"OrderDB-PPGU",
'PPGU',
'ordr',false))!=dmErrAlreadyExists)&&(error!=0))
{
FrmAlert(DBCreationErrorAlert);
return(0);
}
OrderDB=DmOpenDatabaseByTypeCreator('ordr',
'PPGU',dmModeReadWrite);
numRecords=DmNumRecords(OrderDB);
cursor=0;
for (x = 0;x < 3; x++)
{
newRecord();
}
FrmGotoForm(MainForm);
do
{
EvtGetEvent(&event, -1);
if(SysHandleEvent(&event))
continue;
if(event.eType==frmLoadEvent)
switch(event.data.frmLoad.formID)
{
case MainForm:
form=FrmInitForm(MainForm);
FrmSetEventHandler(form,MainHandleEvent);
break;
case AboutForm:
form=FrmInitForm(AboutForm);
FrmSetEventHandler(form,AboutHandleEvent);
break;
} // end switch
FrmSetActiveForm(form);
FrmDispatchEvent(&event);
} while (event.eType != appStopEvent);
FrmCloseAllForms();
DmCloseDatabase(OrderDB);
return(false);
}
////////////////////////////////////////////////////////////////////////////////////////////
static Boolean MainHandleEvent(EventPtr event) //main
form handler
{
FormPtr form;
switch(event->eType)
{
case frmOpenEvent:
form=FrmGetActiveForm();
{
FrmDrawForm(form);
}
break;
}
switch(event->eType)
case ctlRepeatEvent:
{
Word ctrlID=event->data.ctlRepeat.controlID;
ControlPtr ctrlPtr=event->data.ctlRepeat.pControl;
if(ctrlID==MainOrderRepeating)//pop up order form
from main form order button
{
event->eType=frmCloseEvent;
event->data.frmClose.formID=MainForm;
FrmPopupForm(AboutForm);
}
break;
}
return(false);
}
////////////////////////////////////////////////////////////////////////////////////////////
static Boolean AboutHandleEvent(EventPtr event)
//order menu form handler, known as about
{
FormPtr form;
switch(event->eType)
{
case frmOpenEvent:
form=FrmGetActiveForm();
{
FrmDrawForm(form);
drawTable();
}
break;
case ctlSelectEvent: //back to menu form from order
form
{
Word ctrlID=event->data.ctlSelect.controlID;
ControlPtr ctrlPtr=event->data.ctlSelect.pControl;
if(ctrlID==AboutBackButton)
{
event->eType=frmCloseEvent;
event->data.frmClose.formID=AboutForm;
FrmPopupForm(MainForm);
}
}
break;
}
return(false);
}
static void drawTable( void )
{
FormPtr form;
TablePtr table;
Int column;
Int count;
/*ControlPtr upArrow;
ControlPtr downArrow;*/
form = FrmGetActiveForm();
table = getObject( form, AboutItemsTable );
for (column = 0; column < TABLE_NUM_COLUMNS; column++
)
{
TblSetCustomDrawProcedure( table, column, drawCell
);
TblSetColumnUsable( table, column, true);
}
for( count = 0; count < TABLE_NUM_ROWS; count++ )
{
if( count < numRecords )
{
TblSetRowUsable( table, count, true );
for( column = 0; column < TABLE_NUM_COLUMNS;
column++ )
{
TblSetItemStyle( table, count, column,
labelTableItem );
}
}
else
TblSetRowUsable( table, count, false );
}
TblDrawTable( table );
}
static void drawCell( VoidPtr table, Word row, Word
column, RectanglePtr bounds )
{
Int record;
CharPtr precord;
Char string[DB_ID_SIZE];
SWord width;
SWord len;
Boolean noFit;
record = cursor + row;
hrecord = DmQueryRecord(OrderDB, record );
precord = MemHandleLock( hrecord);
switch( column )
{
case TABLE_COLUMN_ITEM:
{
StrCopy( string, "-" );
}
break;
case TABLE_COLUMN_SEAT :
{
StrCopy( string, "-" );
}
break;
case TABLE_COLUMN_QUANT :
{
StrCopy( string, "-" );
}
break;
case TABLE_COLUMN_MOD :
{
StrCopy( string, "-" );
}
break;
case TABLE_COLUMN_LEVEL :
{
StrCopy( string, "-" );
}
break;
case TABLE_COLUMN_HOLD :
{
StrCopy( string, "-" );
}
break;
}
MemHandleUnlock( hrecord );
WinSetUnderlineMode( noUnderline );
FntSetFont( stdFont );
width = bounds->extent.x;
len = StrLen( string );
noFit = false;
FntCharsInWidth( string, &width, &len, &noFit );
WinEraseRectangle( bounds, 0 );
WinDrawChars( string, len, bounds->topLeft.x,
bounds->topLeft.y);
return;
}
/*=======================================================================*/
static void newRecord( void )
{
VoidPtr precord; // CH.5 Pointer to the record
// Create the database record and get a handle to it
hrecord = DmNewRecord( OrderDB, &cursor, DB_ID_SIZE
);
// Lock down the record to modify it
precord = MemHandleLock( hrecord );
// Clear the record
DmSet( precord, 0, DB_ID_SIZE, 0 );
// Unlock the record
MemHandleUnlock( hrecord );
// Clear the busy bit and set the dirty bit
DmReleaseRecord( OrderDB, cursor, true );
// Increment the total record count
numRecords++;
// Set the dirty bit
isDirty = true;
// We're done
return;
}
/*=================================================================================*/
static VoidPtr getObject(FormPtr form, Word objectID)
{
Word index;
index = FrmGetObjectIndex(form, objectID);
return(FrmGetObjectPtr(form, index));
}
/*===================================================================================*/
__________________________________________________
Do You Yahoo!?
Get email at your own domain with Yahoo! Mail.
http://personal.mail.yahoo.com/
--
For information on using the Palm Developer Forums, or to unsubscribe,
please see http://www.palmos.com/dev/tech/support/forums/
______________________________________________
FREE Personalized Email at Mail.com
Sign up at http://www.mail.com/?sr=signup
--
For information on using the Palm Developer Forums, or to unsubscribe, please see
http://www.palmos.com/dev/tech/support/forums/