PDA

Visualizza la versione completa : [delphi] componente con focus


123delphi321
16-03-2010, 10:00
Ciao,

in una form l'utente si puo spostare tra diversi pannelli,
talvolta questo spostamento non deve avvenire a secondo di determinate condizioni.

quindi, io, sull'evento onenter del nuovo pannello verifico tali condizioni, e nel caso le condizioni non lo permetto devo inviare il focus sul componente che lo aveva in precedenza.

come posso fare per sapere quale componente aveva il fuoco?

grazie

ESSE-EFFE
17-03-2010, 17:38
A parte che bisognerebbe capire cosa intendi con "pannello", ecco alcune idee:

1) Se il pannello non deve ricevere il focus, tanto vale disabilitarlo, così, tra l'altro, eviti all'utente di accedere ad un pannello che non può utilizzare.

2) Utilizzi TWinControl::SelectNext. Questo metodo però serve per forzare il focus sul controllo precedente/successivo in base al tab order.

3) Intercetti il messaggio WM_SETFOCUS che ha come parametro l'handle della finestra che sta per perdere il focus e reimposti il focus su tale finestra. In base alla tua applicazione, puoi valutare se è conveniente creare un apposito componente o utilizzare un hook (ad esempio).

HTH,

123delphi321
19-03-2010, 08:26
Originariamente inviato da ESSE-EFFE
A parte che bisognerebbe capire cosa intendi con "pannello", ecco alcune idee:

1) Se il pannello non deve ricevere il focus, tanto vale disabilitarlo, così, tra l'altro, eviti all'utente di accedere ad un pannello che non può utilizzare.

2) Utilizzi TWinControl::SelectNext. Questo metodo però serve per forzare il focus sul controllo precedente/successivo in base al tab order.

3) Intercetti il messaggio WM_SETFOCUS che ha come parametro l'handle della finestra che sta per perdere il focus e reimposti il focus su tale finestra. In base alla tua applicazione, puoi valutare se è conveniente creare un apposito componente o utilizzare un hook (ad esempio).

HTH,

grazie...

pannelle e' un tpanel nel quale inserisco diversi oggetti come ttextedit tbutton etc etc

non utilizzo TWinControl... adesso cerco sto componente nella palette di delphi


grazie

ESSE-EFFE
19-03-2010, 09:27
Originariamente inviato da 123delphi321
non utilizzo TWinControl... adesso cerco sto componente nella palette di delphi

Non lo troverai. Però tutti i controlli che possono ricevere il focus sono derivati da TWinControl, quindi, per ereditarietà, troverai il metodo SelectNext anche nei componenti derivati da esso.

Loading