ajtsoukalas
asked on
How does one create a Delphi Editmask for M/F or F/P or Y/N?
I am using Delphi 7 and mysql 5.0 with MySQLDAC.
I am creating an app which uses a 3rd party component (DBPanelEdit) which automatically generates the edit controls based on the table fields. I don't want to change the component code to handle Y/N, M/F and other one of two character inputs. I have EE'd and googled TEDITMASK but have not found a way to mask this although I have found useful OnKeyPress and other events but again I would have to edit the components code and I really don't want to do that.
I know it is probably something simple but I can't spend any more time searching.
Thanks
John
I am creating an app which uses a 3rd party component (DBPanelEdit) which automatically generates the edit controls based on the table fields. I don't want to change the component code to handle Y/N, M/F and other one of two character inputs. I have EE'd and googled TEDITMASK but have not found a way to mask this although I have found useful OnKeyPress and other events but again I would have to edit the components code and I really don't want to do that.
I know it is probably something simple but I can't spend any more time searching.
Thanks
John
just by using the editmask, you can't. but you can use a mask of "L;1;_" (without quotes) and then then onkeypress event to make sure only your desired characters will be pressed
ASKER
Geert_Gruwez;
As I understand this website, I would still have to modify dbPanelEdit to add calls to tha component. Is that accurate?
John
As I understand this website, I would still have to modify dbPanelEdit to add calls to tha component. Is that accurate?
John
yeah, is there an OnValidate routine ?
Usually that's the place to put the test
like
Usually that's the place to put the test
like
procedure TForm1.OnValidate(Sender: TObject; EditText: string; var IsValid: boolean);
begin
// true if string AInputString match regular expression ARegExpr
// ! will raise exeption if syntax errors in ARegExpr
IsValid := ExecRegExpr ('\d*', EditText);
// test if EditText is all numbers
end;
ASKER
Thank you for your time but I as said in the original post that I didn't want to edit the component to accomplish this task.
It appears that I might have to consider it so I will give 100 points to each of you for your effort as I have already found examples to use for that.
AJ
It appears that I might have to consider it so I will give 100 points to each of you for your effort as I have already found examples to use for that.
AJ
using events does not mean thaht you change the component. that is normal. s I don't see why you consider the above solutions as changing/edit the component....
ASKER
Correct me if I am wrong,
but because the Component creates its own edit controls, I would have have generalized code in each routine to handle the specific edit control. As this would mean cycling through the objects on the form to find the right one, a better solution would be to modify the component directly would it not?
AJ
but because the Component creates its own edit controls, I would have have generalized code in each routine to handle the specific edit control. As this would mean cycling through the objects on the form to find the right one, a better solution would be to modify the component directly would it not?
AJ
no. in worse case scenario (if you don't wat to manually or dynamically assign the event (I dont' see any reasons why you would not want that)) you can alway subclass the control like:
type
TCheckBox=class(stdctrls.T CheckBox)/ / use the same name here
overwrite whatever methods you need here
end;
type
TCheckBox=class(stdctrls.T
overwrite whatever methods you need here
end;
ASKER
ciuly:
I'm sorry to be so dense, but I do not understand.
The panel component creates the edits dynamically based on the datasource. If I use a form event, I don't necessarily know what edit control called that event unless I cycle though the form objects or use the sender field to determine what control was created. If I have more than one 1of2 edit controls on the page, I would still have to figure out which one applies and what unique info it requires. Wouldn't it be better to change the components edit control creation to add the mask and event code in the edit control the panel creates?
I'm sorry to be so dense, but I do not understand.
The panel component creates the edits dynamically based on the datasource. If I use a form event, I don't necessarily know what edit control called that event unless I cycle though the form objects or use the sender field to determine what control was created. If I have more than one 1of2 edit controls on the page, I would still have to figure out which one applies and what unique info it requires. Wouldn't it be better to change the components edit control creation to add the mask and event code in the edit control the panel creates?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
ciuly:
Thanks
I will try your suggestion.
AJ
Thanks
I will try your suggestion.
AJ
ASKER
thanks