1) Yes, you can use a script trigger for this.
- Define a global number field ( a global variable could also be used), gCurrentRecord
- Write a script with just one line: Set Field [YourTable::gCurrentRecord ; get ( RecordID ) ]
- In Layout Setup... specify a layout script trigger, OnRecordLoad to perform this script
- Select all your fields that make up the row and apply this conditional format expression: Formula Is: Get ( RecordID ) = YourTable::gCurrentRecord
- Specify a fill color and you are done.
Note: In list or form view, you can place a single empty field behind all the layout objects and apply this conditional format to just this one field to highlight the record.
2) Yes there is, but if you need to copy the contents of multiple fields from one record to another, you likely do not have the best design for your database. Establishing a related table to which you link both record A and record B and storing the data in the related record is often a much better approach. In other cases, auto-enter settings that copy the data from a related table are a better choice.
If you insist on copying the data, a script like this will work:
Set Variable [$Field1; Value: YourTable::Field1]
Set Variable [$Field2; Value: YourTable::Field2]
Go To Record [//specify a change that takes you to Record B, you might need to perform a find instead, depending on your situation.
Set Field [YourTable::Field1 ; $Field1]
Set FIeld [YourTable::Field2 ; $Field2]