Delphi tips:

Disable and Enable an Event Handler

Sometimes you want to disable an event handler after the FIRST time that the event is "fired". Example: you want to disable all clicks on Label1 after it has been clicked:

procedure TForm1.Label1OnClick(Sender: TObject);
begin
  // Code to execute, e.g.:
  Label1.Caption := 'Label1 has been clicked';
  //...
  // Disable future clicks on Label1:
  Label1.OnClick := nil;
end;   

Maybe at some later time, you want to re-enable the label's OnClick event handler. Code it like this:

procedure TForm1.Button1OnClick(Sender: TObject);
begin
  // Code to execute, e.g.:
  Label1.Caption := 'Click on this text';
  //...
  // Re-enable click events for Label1:
  Label1.OnClick := Label1OnClick;
end;

For a Button, Checkbox, RadioGroup... you can obtain the same effect by disabling the component itself, for example: Button1.Enabled := FALSE;  -- at the same time, you give visual feedback to the user. The trick above makes only sense for other components, such as Panel, Label, Form,...


TOP   DelphiLand Club Membership  DC Library  Forum  Forum Archives  Crash Course Delphi  Tips  Source Code  Downloads  Links