Newsgroup: it.comp.lang.delphi
Titolo: Focus su edit

Buongiorno al Ng
Vorrei chiederVi come è possibile impostare il focus sul primo controllo
attivo del form in un determinato momento. Vorrei creare una funzione
generale da richiamare sull'activate delle varie form che mi spostasse il
focus sul primo controllo libero da vincoli e cioè con TabStop = true
ReadOnly = false enabled = true e con tabOrder inferiore....
Vi sarei grato se mi aiutaste ad impostare una funzione generica.
--
Alberto Menghini
alb...@asoft.it

 ReadOnly = false enabled = true e con tabOrder inferiore....
Adesso non ho ben presente la soluzione, cmq a mio avviso puoi fare un ciclo
dei componenti della form, ne analizzi le proprietà ed infine scegli a quale
dare il focus (Metodo SetFocus)
Ciao!
--
- Carlo -

 ha scritto nel messaggio
news:mRGG5.27304$Nz.8...@news.infostrada.it...


 ha scritto nel messaggio
news:xTIG5.28518$Nz.8...@news.infostrada.it...
| qualcosa del genere ?
esattamente
|   for nTmp := 0 to ComponentCount - 1 do
|       if (Components[nTmp] is TDBEdit ) and ((Components[nTmp] as
| TDbEdit).TabOrder = 0 ) and ((Components[nTmp] as TDbEdit).TabStop ) and
| ((Components[nTmp] as TDbEdit).Enabled ) and not ((Components[nTmp] as
| TDbEdit).ReadOnly ) then begin
|          (Components[nTmp] as TDbEdit).SetFocus;
|          Break;
|       end;
|   except
|   end;
|
| però mi piacerebbe generalizzarlo non al semplice TEdit...
usa TWinControl al posto di TEdit
(poi va bene per tutti i TWiControl, che sono quelli che ti servono..)
Ciao! :)
Alan Solo

 | perņ mi piacerebbe generalizzarlo non al semplice TEdit...



E' una cosa che interessa anche a me, non ho molta esperienza in delphi per
cui non so se possa andare bene ma provo a darti questo suggerimento (sempre
si possa fare qualcosa). Potresti ottenere la lista degli oggetti della
pagina attiva in ordine di taborder in questa maniera
pagecontrol.activepage.gettaborderlist(list:tlist) poi si potrebbe fare un
loop su questa lista partendo dal primo oggetto vedere le caratteristiche
che servono (readonly,enabled,tabstop) e agire di conseguenza. Spero di
esserti stato utile, fammi sapere se trovi qualcosa.

 Suggerimenti....
Non ho provato (quindi non so se funzioni), ma perchè non costruisci una
procedura che abbia come parametro un ClassName?
Poi fai un controllo simile :
for nTmp := 0 to ComponentCount - 1 do
   if (Components[nTmp] is Parametro) then ...
OK?
Nel caso in cui non funzioni possiamo cercare altre soluzioni!
Bye!
--
- Carlo -

    if (Components[nTmp] is Parametro) then ...
if (Components[nTmp].ClassName is Parametro) then ...
Ovviamente! :)
--
- Carlo -

| E' una cosa che interessa anche a me, non ho molta esperienza in delphi
per
| cui non so se possa andare bene ma provo a darti questo suggerimento
(sempre
| si possa fare qualcosa). Potresti ottenere la lista degli oggetti della
| pagina attiva in ordine di taborder in questa maniera
| pagecontrol.activepage.gettaborderlist(list:tlist) poi si potrebbe fare un
| loop su questa lista partendo dal primo oggetto vedere le caratteristiche
| che servono (readonly,enabled,tabstop) e agire di conseguenza. Spero di
| esserti stato utile, fammi sapere se trovi qualcosa.
hmmm, gettaborderlist mai usata, mi sembra una buona idea! :)
mumble mumble................................
..........
boh, ci ho pensato e non ho trovato di meglio..
resta il "problema" che ci possone essere due controlli con TabOrder=0,
mah, scusa ti saluto va, non mi viene niente... :(

 wrote in message
news:8si8p2$kpdc1$1...@ID-44131.news.cis.dfn.de...

dopo svariati tentativi sono riuscito nel mio scopo ora dovresti adattarlo
alle tue condizioni
procedure tform.setfcs;
var
  a:integer;
  list:tlist;
begin
  list:=tlist.Create;
  try
    try
      self.PageControl.ActivePage.GetTabOrderList(list);
      for a:=0 to list.Count-1 do
      begin
        if (twincontrol(list.Items[a]).TabStop=true) then
        begin
          twincontrol(list.Items[a]).SetFocus;
          break;
        end;
      end;
    except
    end;
  finally
    list.Free;
  end;
end;

 ha scritto nel messaggio
news:5%_G5.33873$Nz.10...@news.infostrada.it...
