Newsgroup: it.comp.lang.delphi
Titolo: Combobox

Salve a tutti !
ci riprovo... ho bisogno del vs. aiuto visto che sono alle prime armi...
come posso impostare gli items di un combobox in modo che inseriscano le
cartelle contenute nella directory di lavoro del programma che eseguo ?
C'è un metodo pratico per ricavarle o bisogna creare una function ? se
così come ?
Grazie a tutti per le risposte
attendo fiducioso...
Sparta
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 così come ?
Usa FindFirst e FindNext. Impostando i parametri della variabile di tipo 
TSearch rec nel modo giusto, otterrai proprio quello che cerchi.

 cartelle contenute nella directory di lavoro del programma che eseguo
?
Invece di ripostare tal quale hai provato a chiederti il perche' di
nessuna risposta?
(hint: prova a rileggere la domanda che poni e vedere se e' quello che
vuoi sapere o anche solo se ha senso: ad esempio un Item di comboBox non
puo' inserire niente in alcunche')
Saluti
Paolo Arosio

 puo' inserire niente in alcunche')
per fortuna che c'è Kernel che mi capisce...
grazie comunque per il tuo aiuto... forse avresti fatto bene a non
postare....(tu) !?!?!?
--
Sparta

cartelle contenute nella directory di lavoro del programma che eseguo ?
forse si evitava questa incomprensione, giusto? :-)
Ciao
Morde.
morde [at] programmer [.] net

 TSearch rec nel modo giusto, otterrai proprio quello che cerchi.
Grazie per l'utilissimo consiglio...
ho ancora bisogno di un aiutino...
Ho impostato sull'oncreate della mia Form questo codice... ma non riesco a
capire per quale motivo cmq nel ComboBox non vengono inserite come ITEMS le
cartelle trovate nella directory di lavoro.... dove sto sbagliando ?
Grazie per le risposte !
--
Sparta
procedure TForm1.FormCreate(Sender: TObject);
var sr: TSearchRec;
    FileAttrs: Integer;
    Name: string;
begin
  GetDir(0,Name);
  SetCurrentDir(Name);
  FileAttrs := fadirectory;
  with CBModelli do
    if FindFirst(Name,FileAttrs,sr) = 16 then //controllare bene il valore
di uscita
    begin
      repeat
        if (sr.Attr and FileAttrs) = sr.Attr then
        begin
        CBModelli.DropDownCount := CBModelli.DropDownCount + 1;
        CBModelli.Items.Add(
sr.name
);
        end;
      until FindNext(sr) <> 0;
      FindClose(sr);
    end;
end;

 CBModelli.DropDownCount := CBModelli.DropDownCount + 1;
ad ongi iterazione. Fallo direttamente in uscita.
Occhio alla quantità di cartelle, pero'
Se sono 20 va bene, ma se sono 400, e devi selezionare la n°200 prevedo una
crisi di nervi....
Bye
A

 end;
Ok.

 No, non devi vederla cosi'... Paolo non aveva semplicemente capito il tuo
messaggio.
mi è sembrato che Paolo avesse adottato un tono un po' troppo polemico...
senza motivo preciso... siccome una persona prima di lui ha intuito,
nonostante il mio pessimo modo di porre il quesito, qual'era il problema...
quindi se non avesse capito era molto più semplice chiedere un po' di
chiarezza... senza puntualizzare e per di più 'bacchettare' a mo' di
'maestrina'...
tutto qui, per me è chiuso il discorso.
--
Sparta

 postare....(tu) !?!?!?
Spero sempre di postare cose che siano utili, (si applica anche al msg a
cui hai risposto): spesso il modo migliore di ottenere la risposta che
si cerca e' porre bene la domanda.
Ora che, dall'altro ramo del thread, sono riuscito a caprire qual era lo
scopo, direi che una soluzione rapida potrebbe essere:
uses FileCtrl;
type
  THKDirList = class(TDirectoryListBox);
procedure GetChildrenOf(aPath: string; dest: TStrings);
begin
  with THKDirList.Create(nil) do try
    ReadDirectoryNames(aPath, TStringList(dest));
  finally
    Free;
  end;
end;
Saluti
Paolo Arosio

 piuttosto dal fatto che nel codice credo ci sia qualche errore.
Facendo il debug ho notato che il cursore non va oltre dopo il primo if
cioè precisamente dopo:
if FindFirst('c:\tmp',faDirectory,sr) = 16 then
passa direttamente alla fine di conseguenza resta invariato il numero degli
items nel mio combo box... o meglio non ne viene inserito nemmeno uno...
Grazie...
--
Sparta

 end;
Praticamente oro colato ! :-)
ti ringrazio sei stato gentilissimo :-)
a presto
---
Sparta

>>        CBModelli.Items.Add(
sr.name
);
ok.

     ReadDirectoryNames(aPath, TStringList(dest));
Trovo un pochino inutile limitarsi a postare del codice totalmente 
diverso da quello inizialmente proposto.
Sparta ha dimostrato di avere delle lacune nella comprensione del 
funzionamento di base del linguaggio: postargli del codice già pronto e 
per di più totalmente diverso da quello che aveva iniziato a sviluppare 
(che per altro comunque era valido) mi sembra del tutto inutile.
Ritengo sarebbe stato più utile spiegargli il funzionamento di FindFirst .

 Ritengo sarebbe stato più utile spiegargli il funzionamento di
FindFirst .
Credo che quanto postato sia un impulso a dare un occhio alla vcl: trovo
che possa essere utile anche per imparare, e non solo per fare cose che
non ti offre gia' confezionate.
Inoltre, sul funzionamento di FindFirst/Next ho visto che stavi postando
nell'altro ramo del thread.
Delphi e' notevole (anche) perche' offre un sacco di macchine semplici
(oltre ad alcune complesse), il che e' utile per non dover ogni volta
trovare il pezzo di legno da lavorare fino a farlo diventare una ruota.
Certo, una conoscenza approfondita di tutti i rami della vcl non e' cosa
che si possa raggiungere in pochi mesi di uso di Delphi (io lo uso da
D2 e di molte cose so a malapena che esistono), ma il sapere che
esistono certe funzionalita' aiuta.
Saluti
Paolo Arosio