Newsgroup: it.comp.lang.delphi
Titolo: Impossibile, ma è così

Succede una cosa incomprensibile e da cui non riesco ad uscire. Ho l' 
ItemIndex di un comboBox che da qualsiasi impostazione maggiore di zero 
RITORNA A -1 se questa istruzione:
   MyEdit2.Enabled:= false;
la faccio seguire da una istruzione di MessageDlg o ShowMessage.
Esempio:
     MyEdit1.Enabled:= false;                                          // 
MyComboBox.ItemIndex è zero
     MyEdit2.Enabled:= false;                                          // 
MyComboBox.ItemIndex è zero
     showmessage(inttostr(MyComboBox.ItemIndex));   //  mostra zero
     .............................................................. 
//  Ora MyComboBox.ItemIndex è -1
- Senza lo ShowMessage, l'ItemIndex rimane invariato.
- E' solo MyEdit2.Enabled (combinato con ShowMessage) che ha questo effetto.
Infatti ho provato a disattivare la istruzione MyEdit2.. lasciando il resto; 
ho provato a disattivare solo lo ShowMessage e non c'è problema, l' 
ItemIndex di MyComboBox rimane inalterato. Altrimenti viene resettato a -1.
E' un'intera giornata che ci sto combattendo. Lo so che non c'entra una cosa 
con l'altra, però posso seguire il valore ItemIndex nella WatchList e cambia 
dopo le due istruzioni di cui sopra inequivocabilmente diventa -1.
Qualcuno ha qualche idea ?

 ha scritto nel messaggio 
news:48abd204$0$18154$4faf...@reader3.news.tin.it...

Prova dopo lo ShowMessage a ridare il fuoco alla combobox, con .SetFocus, 
Giorgio 

 ha scritto nel messaggio 
news:48abfc22$0$1085$4faf...@reader2.news.tin.it...


 ha scritto nel messaggio 
news:48abfc22$0$1085$4faf...@reader2.news.tin.it...


 succitata...
Sicuramente il problema č altrove, dato che ho provato a fare un nuovo 
form, piazzarci una edit, un combobox con 2 items e un button.
Facendo cosě:
ComboBox1.ItemIndex := 1;
showmessage(inttostr(ComboBox1.ItemIndex));
Edit1.Enabled := False;
showmessage(inttostr(ComboBox1.ItemIndex));
Edit1.Enabled := True;
showmessage(inttostr(ComboBox1.ItemIndex));
Mi mostra sempre 1 (o il valore che ho messo a design time se ometto la 
prima istruzione).
Domanda scema: ma il combobox, dopo lo showmessage, diventa vuoto oppure no?
Posta un po' piů di codice, se puoi.
-- 
Jax

 Jax 

 continua ad apparire impostato sulla riga scelta.
Dunque, da quello che mi dici il contenuto del combobox, dopo lo 
showmessage incriminato, rimane comunque correttamente visualizzato, 
solo la sua proprietà itemindex è = -1, giusto?
Se così fosse, potrebbe essere l'ottimizzatore del compilatore di delphi 
che, ritenendo (probabilmente a ragione) che l'itemindex non ti serva in 
quel contesto, lo setta al valore di default, cioè -1.
Prova a disabilitare l'ottimizzatore (Project / Options / Compiler / 
Optimization) e facci sapere.
Se in questo modo funziona vuol dire che nel tuo codice c'è qualcosa che 
non va... personalmente non mi è mai capitato che l'ottimizzatore 
sbagliasse :) ma ovviamente finché non vediamo il codice non possiamo 
aiutarti nello scoprire cos'è...
Se invece anche facendo così il risultato è -1, allora con tutta 
probabilità c'è qualche automatismo (di cui magari di sei dimenticato o 
dai per scontato, o peggio ancora che non sai che avviene) nella tua 
applicazione che va a impostare quell'itemindex... di solito i più 
subdoli sono gli eventi OnEnter e OnExit, peggio ancora gli 
OnMouseOver... in questo caso fai così: cerca nel codice (in *tutte* le 
unit) combobox, e ad ogni occorrenza mettici un breakpoint. Sarà un po' 
palloso, ma forse ne vieni a capo.
-- 
Jax

 quel contesto, lo setta al valore di default, cioč -1.
Anche se, ripensandoci, non mi sembra che l'optimizer lo faccia con le 
proprietŕ degli oggetti..... mah.
E, per quanto riguarda la seconda ipotesi, se fosse cosě, il combobox a 
fine elaborazione sarebbe vuoto... ri-mah.
A questo punto l'unica soluzione č vedere il codice. Se puoi/vuoi 
spedirmelo in privato, il mio indirizzo senza _toglimi č valido.
-- 
Jax