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/

Reply via email to