Newsgroup: it.comp.lang.delphi
Titolo: Aiuto su ListBox

Salve raga'
Tutto bene? Spero che siate in forma, perché questa è una bella domanda e
richiede tutta la vostra esperienza. So di essere l'unico in Italia a voler
fare di queste di cose ma voi per caso sapete come togliere la proprietà
Items della ListBox dall'object inspector? Posto che la proprietà in
questione nel mio componente derivato la pongo nella sezione protected in
questo modo :
Property Items nodefault;
Il mio problema è che di default dovrebbe esserci un'altra proprietà e devo
ASSOLUTAMENTE togliere il default alla Items.
Mi è INDISPENSABILE. Proprio non ne posso fare a meno... VI PREGO !!!!!!
    AIUTATEMI !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Vi scongiuro, vi supplico in ginocchio... Sono due settimane che cerco di
far capire a Delphi quello che voglio fare...
Non ne posso più di combattere vicino a questa cosa... mi sono rotto i
cosiddetti...
Ciao e grazie
--
Andrea Raimondi
rain...@tin.it
ICQ #66008183
"Software development is as having a girlfriend :
  it delights many times but it can make u crazy..."

questione nel mio componente derivato la pongo nella sezione protected in
Da quale componente hai ereditato ?
Sei sicuro d'aver ereditato da TCustomListBox ?
Se erediti da TCustomListBox la proprieta' Items non ti compare
sull'Object Inspector.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------
#exclude <windows.h>

 wrote in message
18jjms0q756am8irq...@4ax.com...


La metto in published  ma Delphi se la prende a male .Perché ?
Mi sembra che la proprieta' Names di TStrings sia read-only.


 wrote in message
2eojmsob1qub0bj30...@4ax.com...


 cosiddetti...
Se non ricordo male devi definire il metodo "DefineProperties" dove puoi
salvare nel DFM più informazioni ma anche eliminarle...
Prova a cercare nell'help...
ciao
Solid Snake

mi sa che ti devi creare daccapo un componente.
ma poi perchè togliere items ad una listbox? mi sembra strano.
--
Gna...@Wappi.com
ICQ# 76488613
http://gnaffy.tripod.com/

E da quando TStrings ha una proprietą Names?
TStrings.Names
--------------
Indicates the name part of strings with the form Name=Value.
property Names[Index: Integer]: string;
Description
When the list of strings for the TStrings object includes strings of
the form Name=Value, read Names to access the name part of a string.
Names is the name part of the string at the position indicated by
Index. Index gives the position of the string, where 0 is the first
string, 1 is the second string, and so on. If the string at the
specified position is not of the form Name=Value, Names returns an
empty string.
Strings of the form Name=Value are commonly found in .INI files. For
example, here are a few strings taken from a DELPHI.INI file:
DisplayGrid=1
SnapToGrid=1
GridSizeX=8
GridSizeY=8
The strings that make up the Params property of a database component
(TDatabase) have this format as well.
The Name that identifies the string is to the left of the equal sign
(=), and the current Value of the Name identifier is on the right
side. There should be no spaces present before or after the equal
sign.


 La metto in published  ma Delphi se la prende a male .Perché ?
Non puoi dichiarare una Proprietà "Published" come array perchè non è ne una
classe ne un tipo semplice. Un array non puo' essere visualizzato e
MODIFICATO nell'Object Inspector.
Potresti dichiararla in "Public" ricordandoti ovviamente di dichiarare i
metodi "SetNames e GetNames".
In oltre, la dichiarazione di "default" non va' fatta dopo il ";" ma e
compresa nella dichiarazione.
Ciao Silvio


Si puo' si puo'...adesso non trovo il trucchetto, ma si puo' fare.
Si trattava di usare una varibile dummy su cui puntare la proprieta'
da nascondere...
Se trovo il tip, lo posto
--
Piero Bonanno
bop...@libero.it
pie...@tiscalinet.it
bop...@tin.it
bpie...@hotmail.com
______________________________________________
"Madame, lei ha tra le gambe uno strumento
che puo' offrire piacere a migliaia di persone,
e tutto quello che sa fare e' grattarlo"
- Sir Thomas Beechan a una violoncellista

Si puo' si puo'...adesso non trovo il trucchetto, ma si puo' fare.
???
Si puo' giocare sporco, questo si', ma e' contro lo spirito OOP
(con i puntatori si puo' anche variare il valore di una costante).
Quando si eredita, lo ribadisco, si puo' solo "espandere", non
"ridurre", perche' e' prestabilito nelle classi madri che sia cosi'.
Questo non vale solo in OP, ma in tutti i linguaggi OO.

 (con i puntatori si puo' anche variare il valore di una costante).
"Giocare Sporco" ???  Ma siamo in programmazione!! Mon ami... se la guer!!!
Quando uno mi chiede se si può fare una certa cosa.... non gli dico che non
si può fare
solo perchè non è "politically correct"... se so che esiste un metodo
*sicuro* per aggirare
quella che, a mio modesto parere, è una grossa limitazione di Delphi (e,
comunque, dei linguaggi
oop), beh... io gliela dico!!!
Ricordavo anch'io di aver letto su questo ng di un sistema per nascondere le
proprietà già ereditate
ma non ricordavo il sistema... per questo non ho risposto io.
Del resto... questo ng mica si chiama it.comp.lang.delphi.morale !! ;)
Ciao!! Davide DG

Del resto... questo ng mica si chiama it.comp.lang.delphi.morale !! ;)
Ribadisco amichevolmente il consiglio : evitiamo di dire stupidaggini.

Questo non vale solo in OP, ma in tutti i linguaggi OO.
Infatti non nascondo una variabile pubblica, ma una published :)
La differenza non e' peregrina, direbbe il mio prof..
E se non sbaglio, il C++ ANSI 2 consentiva di derivare una classe
rendendo privata una variabile pubblica del papa'...andro' a
verificare....
Ciao


verificare....
Ho dato un'occhiata rapida al Lippman: ho sbagliato versione, e' la
ANSI 3.0!
Ho trovato alcuni modi per restringere l'accessibilita' delle
proprieta' e metodi della classe babbo, per esempio derivarla come
protected (o private)
class figliuolo : protected Babbo;
Eventualmente postero' le altre cose che trovo.
Saluti


class figliuolo : protected Babbo;
Innanzitutto precisiamo che stiamo parlando di TUTTE le proprieta' e
TUTTI i metodi della classe Babbo. 
La derivazione :
class figliuolo : protected Babbo ;
fa si' che tutti i metodi e proprieta' "public" della classe Babbo
convergano a "protected" nella classe figlia.
Questo "restringimento" della visibilita' avviene al momento in cui la
classe figlia eredita dalla classe madre e SOLO in quel momento.
Non e' cioe' possibile fare in modo che una proprieta' gia' ereditata
sparisca magicamente.

verificare....
In C++ TUTTI i membri e TUTTE le proprieta' (non una sola) della
classe madre diventano "private" per default nella classe figlia, nel
momento in cui si eredita. Aggiungendo la keyword "public" di fronte
alla classe madre, si forza che tutto cio' che in essa e' "public",
rimanga tale nella classe figlia. Quest'ultimo e' il normale
comportamento che viene richiesto nel 90% dei casi. Questo avviene nel
momento in cui la classe viene definita e quindi eredita. Non e'
tuttavia possibile cambiare l'accessibilita' di una proprieta' gia'
ereditata, se non espandendola.

 Ribadisco amichevolmente il consiglio : evitiamo di dire stupidaggini.
E che ti devo dire ?  Sarò uno stupido ! :(
Ciao, Davide DG

 wrote in message
8kcjlc$g59$1...@fe1.cs.interbusiness.it...


E che ti devo dire ?  Sarņ uno stupido ! :(
Non stupido, solo un po' confuso ;)

Borland non e' affatto necessario.
Sì professore....
**************************************************************
[ raramente trovo qualcuno che discute così... complimenti ^_^ ]
Davide DG

 ... no?
la programmazione OOP e' diventata lo "standard" soppiantando la
programmazione
procedurale proprio perche' offre un grado di sicurezza maggiore e permette
di
affrontare problemi estremamente complessi con relativa semplicita'.
anche lo standard del linguaggio C negli anni e' stato evoluto nel senso che
sono state aggiunte regole piu' restrittive proprio perche' usando trucchi
a tutto spiano in progetti molto complessi si genera un pasticcio tale da
mettere a rischio la buona riuscita dell'intero progetto.
Per quanto riguarda il fatto di diminuire la visibilita' di un membro e'
un errore non perche' la borland dice di non farlo ma perche' cosi'
facendo viene meno tutto il meccanismo del polimorfismo da
quella sottogerarchia in poi...
HIH
Carlo

Ci sarà l'apposito segnale di Divieto di Sosta per quello!
Mamma mia ! con tutto il rispetto, stiamo sconfinando nelle idiozie :
La mia visuale non necessita affatto di essere ampliata, e' chiaro che
non hai capito che cosa intendevo : il mio esempio riguarda
l'indispensabilita' di dover fare qualcosa in un determinato modo, se
ti e' vietato farlo in un altro. Tutto qui.
I linguaggi di programmazione, e con questo spero di chiudere questo
thread, sono fondati su delle regole (delle "leggi") che ti piaccia o
meno, che si possono a volte aggirare, a volte no. Quando le si
aggira, non si puo' mai essere sicuri che cio' che si produce sia ben
fatto (anzi, quasi mai e' cosi'). 

Andrea,
non prendertela altrimenti ti scappa il copy & paste...   ;-)))

non prendertela altrimenti ti scappa il copy & paste...   ;-)))
Urgh ! chiedo scusa, ma dev'esserci qualcosa che non va col mio
newsreader, continua a duplicare i msg e ne spedisce qualcuno in
privato, non capisco il perche' !... provvedero' ;))
 

Andrea lascia stare questo ragazzo deve aver lavorato al programma dell'Arianne IV (o tre boh)
che a metà del lancio è esploso perchè il programmatore ha valorizzato una variabile intera con
una in virgola mobile; anzi no credo che partecipi attivamente alla codifica di windows 2000 (o
forse office 2000) ;-)
Andrea Laforgia wrote:

--
Massimo
l.sky...@iname.com
------------------------------------------
PER ME SI VA NELLA CITTA' DOLENTE
  PER ME SI VA NELL'ETTERNO DOLORE,
  PER ME SI VA TRA LA PERDUTA GENTE.
GIUSTIZIA MOSSE IL MIO ALTO FATTORE:
  FECEMI LA DIVINA POTESTATE,
  LA SOMMA SAPÏENZA E 'L PRIMO AMORE.
DINANZI A ME NON FUOR COSE CREATE
  SE NON ETTERNE, E IO ETTERNA DURO.
   LASCIATE OGNI SPERANZA, VOI CH'ENTRATE.
------------------------------------------

forse office 2000) ;-)
...io dico che se l'avessero fatto fare alle donne, tutti questi
errori non ci sarebbero stati (capisciamme')...
p.s.: scusate la polemica, ma e' il grande numero di titoli bancari
comperati in questi giorni che mi da' alla testa !!!
...(Max, prima o poi ti uccido !)...

 forse office 2000) ;-)
Questo "ragazzo" ... come tu mi chiami... non ha bisogno di sentirsi dire
che se
ha bisogno di cambiare un valore costante allora c'è qualcosa che non va a
livello di progettazione.
Nè peraltro ho mai avuto bisogno di restringere la visibilità di una
proprietà.
Nè ho mai detto che Windows è privo di bug.
Nè ho mai detto, riferendomi a Laforgia, che testare un programma significa
farlo solo sulla
propria postazione.
Cmq mi sono abbastanza stancato di discutere. E non perchè stia "esaurendo
le mie risorse"
(mica sono Windows io !!), ma perchè non capite che alla base della mia
critica iniziale non vi
è una crociata contro le "regole" della programmazione.
Quello che mi premeva invece ribadire, con tutte le ipotesi anche estreme
(la cui funzione esemplificativa Andrea sembra non riuscire a capire) che ho
portato è che non si può dire che
"lo dice la Borland" (o, come sospetto, lo dice Laforgia) e allora non si
può fare.
Non mi va di spendere altre parole per vederle poi prese a pezzi e criticate
nel loro singolo.
Per quanto mi riguarda, considero chiuso questo thread.
Davide DG.
Ah, Laforgia, evito commenti su certe tue frasi perchè non mi va di darti
del bambino viziato e
presuntuoso (ops, l'ho appena fatto...).

del bambino viziato e presuntuoso (ops, l'ho appena fatto...).
Ok, quando si scende alle offese, vuol proprio dire che si ammette
l'inconsistenza dei propri argomenti, tuttavia si ha troppo orgoglio e
troppe poche parole valide per difenderlo.
!!! AUGURI !!! ne hai bisogno ;-)

 !!! AUGURI !!! ne hai bisogno ;-)
Grazie !!
Vabbč... č tardi, ho sonno, e mi sono stancato di tentare di spiegarti che
hai torto a pensare
di avere ragione comunque. Sono convinto che tu non abbia capito il vero
fulcro del discorso.
Ma forse non č poi cosě importante... a qualcuno piace restare nella propria
saccenza.
Davide DG

sparisca magicamente.
Rimane il fatto che si puo' fare, e non e' un trucco con puntatori o
roba del genere. Anche per l'OP non c'e' affatto bisogno di usare
tecniche strane. E' un artificio banalissimo, che pero' non mi
ricordo, perche' l'ho letto ma mai usato.
Detto questo, cerchiamo di ridimensionare la questione: l'origine del
problema era di nascondere una proprieta' di una listbox. Ebbene, in
tal caso ben venga il trucchetto, anche perche' per un problemino del
genere non vale la pena di riscriversi una classe. E poi chi lo dice
che sia possibile? Potrebbero mancare i sorgenti, e toccherebbe
reimplementare un bel po' di roba.
Non stiamo parlando di gerarchie di oggetti business, e' una semplice
listbox da usare in casi straordinari.
Siamo tutti d'accordo che non si deve mai, nel bel mezzo di
un'architettura, rattoppare quanto gia' fatto per risparmiare lavoro.
Questo nell'ipotesi di avere accesso al codice dell'intera gerarchia,
o altrimenti si deve sperare che il progettista abbia lavorato bene.
In caso contrario tutte le belle parole sull'OOP rimangono tali.


modo, DEVI farlo, altrimenti rischi di produrre codice malfunzionante.
Andrea, quanto dici può essere vero nel 90% dei casi, ma tieni presente che
NON è sempre così!
Molte volte si cerca di limitare un utente per evitare di andare a mettere
le mani laddove non si dovrebbe/potrebbe...
Ti prendo un esempio stupido, apri il Win32 Programmer's reference e vai
alla voce SystemParametersInfo e cerca la flag SPI_SCREENSAVERRUNNING.
Beh al suo fianco ci troverai scritto :
" Windows 95 only: Used internally; applications should not use this flag."
Penso che tu sappia lo scopo di quel flag...
A mio avviso fra non molto la M$ dirà che "L'iniezione di thread in altre
applicazioni è estremamente pericolosa e dannosa per il sistema, e in quanto
tale 'should not be used'".
Con questo ho voluto solo dire che non sempre si cerca di fare il bene del
programmatore quando si forniscono delle indicazioni....
Con questo vi saluto e vi ricordo che esistono delle regole da rispettare e
che i cosiddetti "Flame" non sono graditi!
Ciao a tutti
--
- Carlo -

 presuntuoso (ops, l'ho appena fatto...).
Andrea lascia stare evita di rispondergli altrimenti per sbaglio gli potresti
dare del Leghista della programmazione, o peggio il braccio destro di Bill,
(accidenti scusa ma non volevo, ma chi ha fatto questo prog. si è dimenticato di
attivare il tasto di cancellazione quindi posso solo scrivere, chissà chi lo ha
programmato)


 programmato)
Ok.. una sola domanda... ti riferisci ad Outlook ? In quel caso esiste il
comando per cancellare
messaggi...
Davide DG