Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#11

Re: Cursor in Editfeld setzen

  Alt 14. Jun 2007, 19:09
Hallo,

du hast Recht. Es gibt Probleme, wenn man einfach nur die Fokusierung auf Windows-Ebene durchführt. Da kein Ereignis nach dem Seitenwechsel ausgelöst wird, führe ich eine Custom Message ein:

Delphi-Quellcode:
const
  UM_SETFOCUS = WM_USER;

type
  TDemoForm = class(TForm)
    TabbedNotebook: TTabbedNotebook;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure TabbedNotebookChange(Sender: TObject; NewTab: Integer;
      var AllowChange: Boolean);
  private
    procedure UMSetFocus(var Msg: TMessage); message UM_SETFOCUS;
  end;

var
  DemoForm: TDemoForm;

implementation

{$R *.dfm}

procedure TDemoForm.UMSetFocus(var Msg: TMessage);
begin
  TWinControl(Msg.LParam).SetFocus;
end;

procedure TDemoForm.TabbedNotebookChange(Sender: TObject; NewTab: Integer;
  var AllowChange: Boolean);
begin
  case NewTab of
    0: PostMessage(Handle, UM_SETFOCUS, 0, Integer(Edit1));
    1: PostMessage(Handle, UM_SETFOCUS, 0, Integer(Edit3));
  end;
end;
Freundliche Grüße
  Mit Zitat antworten Zitat