Hi Mark,
Here’s a breakdown of your questions and some suggestions. For customizing the “Invalid Input” MsgBox in a MaskEdit column, you can handle the `ValidateEdit` or `MaskInputRejected` event to show your own instructions to the user, such as reminding them of the `(##?##)` format. To convert input to uppercase as the user types, handle the `TextChanged` event of the MaskEdit inside the grid cell and update the text to uppercase while keeping the cursor at the end. For updating other rows with the same product ID, you can iterate through your dataset or grid rows and set the new value for all rows where the product ID matches, then refresh the grid. Conceptually, this is similar to a Code Cracker Solver NZ, where you propagate the solution from one input across all related cells automatically. Regarding grid redrawing and column sizing, using `QueryColWidth` is correct for auto-sizing, but combining it with `SizeChanged` and `ColWidthsChanged` can create redundant refreshes; the fact that another form doesn’t need all these handlers suggests it depends on how the grid is initialized and whether other settings or custom behaviors are applied.
Here’s a breakdown of your questions and some suggestions. For customizing the “Invalid Input” MsgBox in a MaskEdit column, you can handle the `ValidateEdit` or `MaskInputRejected` event to show your own instructions to the user, such as reminding them of the `(##?##)` format. To convert input to uppercase as the user types, handle the `TextChanged` event of the MaskEdit inside the grid cell and update the text to uppercase while keeping the cursor at the end. For updating other rows with the same product ID, you can iterate through your dataset or grid rows and set the new value for all rows where the product ID matches, then refresh the grid. Conceptually, this is similar to a, where you propagate the solution from one input across all related cells automatically. Regarding grid redrawing and Download sizing, using `QueryColWidth` is correct for auto-sizing, but combining it with `SizeChanged` and `ColWidthsChanged` can create redundant refreshes; the fact that another form doesn’t need all these handlers suggests it depends on how the grid is initialized and whether other settings or custom behaviors are applied.