whats new ¦  programming tips ¦  indy articles ¦  intraweb articles ¦  informations ¦  links ¦  interviews
 misc ¦  tutorials ¦  Add&Win Game

Tips (1541)

Database (90)
Files (137)
Forms (107)
Graphic (114)
IDE (21)
Indy (5)
Internet / LAN (130)
IntraWeb (0)
Math (76)
Misc (126)
Multimedia (45)
Objects/
ActiveX (51)

OpenTools API (3)
Printing (35)
Strings (83)
System (266)
VCL (242)

Top15

Tips sort by
component


Search Tip

Add new Tip

Add&Win Game

Advertising

26 Visitors Online


 
...change the OnClick behavior of a TRadioButton, TCombobox?
Autor: P. Below
Homepage: http://www.teamb.com
[ Print tip ]  

Tip Rating (9):  
     


// Q: It appears that programatically setting Item.Index for the Radio Button
// fires the onClick event.  It also appears  doing the same for the
// ComboBox does NOT fire the OnClick event. Does another property the two
// control effect this behavior.

// A: No, it is caused by the way Windows sends the notifications that fire the
// event when the control state is changed by a program action.

// Q: I have an instance where I need each of
// the control to exhibit the opposite behavior.

// A: For a TRadiobutton you can disconnect the OnClick handler, change the
// state, then reconnect the handler.

procedure ChangeRadiobuttonState(ARadiobutton: TRadiobutton;
  checkit: Boolean);
var
  
oldhandler: TNotifyEvent;
begin
  
oldhandler := ARadiobutton.Onclick;
  ARadiobutton.Onclick := nil;
  ARadiobutton.Checked := checkit;
  ARadiobutton.OnClick := oldhandler;
end;


// To make the combobox "click" after setting the item index simply call its
// Click method. The control inherits this method from TControl, but it is
// protected. So you need a bit of hoop-jumping:

Type
  
TComboCracker = class(TCombobox);

procedure SetComboboxIndex(ACombobox: TCombobox; Index: Integer);
begin
  
ACombobox.ItemIndex := Index;
  TCombocracker(ACombobox).Click;
end;


 

Rate this tip:

poor
very good


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners