Newsgroup: it.comp.lang.delphi
Titolo: ComboBox con separatori

Ho scovato un semplice componente che subclassa il normale ComboBox per 
consentire di introdurre tra gruppi di righe o una linea separatrice o una 
riga comunque non cliccabile.
Ho scoperto che non funziona se glielementi delComboBox hanno associati 
degli oggetti, cioč se il comboBox č creato con AddObject.
Non capisco perchč, anche se mi pare che la chiave sia nella property 
Enabled, che č sviluppata come segue (evito cosě di proporvi tutto il 
codice):
 
property Enabled[Index: Integer]: Boolean read GetIsEnabled write 
SetIsEnabled;
 
function TComboBoxWSep.GetIsEnabled(Index: Integer): Boolean;
begin
  if Boolean(Items.Objects[Index]) then
    Result := false
  else
    Result := true;
end;
 
procedure TComboBoxWSep.SetIsEnabled(Index: Integer; Value: Boolean);
begin
  if Value then
    Items.Objects[Index] := TObject(false)  // questo non lo capisco !!
  else
    Items.Objects[Index] := TObject(true);  // questo non lo capisco !!
end;
 
La property Enabled(x) a false indica quale riga non č cliccabile.
 
Avete idea del perchč, se le righe del comboBox sono create con AddObject, 
questo congegno non funziona (o come farlo funzionare) ? O c'č in giro 
qualcosa di analogo ? 
 
 
---
Questa e-mail č priva di virus e malware perché č attiva la protezione avast! Antivirus.
https://www.avast.com/antivirus
 
 

Tutti in ferie, o nessuno ha idea ?
 
---
Questa e-mail è priva di virus e malware perché è attiva la protezione avast! Antivirus.
https://www.avast.com/antivirus
 
 


Bisognerebbe vedere anche come tu stai usando AddObject(), ma basandosi
su quello che hai mostrato, la combobox usa la proprieta' Objects[]
per gestire l'enable delle righe.
Chiaramente se anche il tuo codice utilizza la stessa proprieta'
e' ovvio che vi pestate i piedi a vicenda.
 
L'unica soluzione che vedo e' che o tu usi qualcosa di diverso da 
Objects[] oppure modifichi la combobox,  magari inserendo una proprieta' 
apposita per gestire l'enabled.
 
ciao
Giacomo 

"Giacomo Degli Esposti"  ha scritto nel messaggio 
news:c3f0e240-f0df-4fc7...@googlegroups.com...

........
Uso AddObject per costruire il comboBox, reiterando la seg istruzione:
ComboBox1.Items.AddObject (Ptr.getStringaCb,Ptr);   // dove Ptr è un oggetto 
di una mia classe
 
Cos'è questa proprietà  Objects[]  ? 
 
 
---
Questa e-mail è priva di virus e malware perché è attiva la protezione avast! Antivirus.
https://www.avast.com/antivirus
 
 

 Cos'è questa proprietà  Objects[]  ? 
 
Quando tu fai Combo.Items.AddObject() gli passi due parametri: il 
primo e' il testo visualizzato nella combo, il secondo viene
inserito in un "array" di oggetti, appunto Objects[]. 
 
Una votla inseriti gli oggetti con AddObject() come fai
a leggere l'oggetto associato all'item corrente? Non usi
combo.items.Objects[ combo.itemindex ] o una cosa del genere?
 
ciao
Giacomo
 
 
 
 

> Cos'è questa proprietà  Objects[]  ? 
 
 
ehm..f1? 
 
A.

"Giacomo Degli Esposti"  ha scritto nel messaggio 
news:c6670a95-2ac9-420f...@googlegroups.com...

-------
Si, è questo che non capivo:
Items.Objects[Index] := TObject(false);
E' il modo di attribuire un valore "false" all'oggetto associato a 
quell'Index ?
