2005. október 1., szombat
How to reset the content of a TDBMemo
Problem/Question/Abstract:
I have a form with a TDBMemo control. I also have an "Abort" button which, when pressed, will reset the contents of the TDBMemo control. I know that if you hit the escape key in a TDBMemo this will reset the contents. However, my users are used to hitting the Esc key to exit forms, so I disabled this feature so that they would not lose everything they entered. I did this by changing the value of the Key code in the OnKeyPress event:
if key = #27 then
begin
key := #0;
I have looked in the VCL and have noticed that when ESC is pressed FDataLink.Reset is invoked. However, this is private, so there is not way to reset the contents. Is there another way around this?
Answer:
All DbCtrls have a "procedure CMGetDataLink(var Message: TMessage); message CM_GETDATALINK;" which can be executed to return the TFieldDataLink as follows:
procedure TForm1.SpeedButton1Click(Sender: TObject);
{must be TSpeedButton so Focus change does take place first}
var
fDataLink: TFieldDataLink;
begin
fDataLink := TFieldDataLink(DBMemo1.Perform(CM_GETDATALINK, 0, 0));
if assigned(fDataLink) then
fDataLink.Reset;
end;
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése