Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: ffabio - Marzo 20, 2012, 02:42:16 pm

Titolo: dblistbox
Inserito da: ffabio - Marzo 20, 2012, 02:42:16 pm
Salve ragazzi sono sempre io il rompiscatole .  :)

Nella mia applicazione volevo creare una mascera per selezionare delle opzioni presenti in una tabella del db. . I nomi dei miei amici . mi sono creato una tabella amici con id e nome_amico.


Quindi ho messo una tsqlquery con campo sql select id,nome_amico from amici .

una tdatasource  e 2 dblistbox una a sx e una a dx. in mezzo due bottoni uno ->  e l' altro <-

La mia idea era caricare una list box selezionare un item  e con il bottone -> portarlo nella listbox affianco. al contrario la seleziono a dx e lo rimando nella listbox di sx

1) non mi carica i valori nella dblistbox .
2) non ho proprio idea di come spostare i valori da una all' altra listbox



idee ???

grazie.

Titolo: Re:dblistbox
Inserito da: nomorelogic - Marzo 20, 2012, 04:17:09 pm
1) non mi carica i valori nella dblistbox .

giusto per essere sicuri, da qualche parte (es: OnCreate della form) c'è la open dell'sql?


2) non ho proprio idea di come spostare i valori da una all' altra listbox

di solito, quando si tratta di operare una selezione, la listbox degli elementi selezionati non è una dblistbox ma una semplice listbox.

comunque:

a) se si tratta di dblistbox, basta inserire un record nella tabella collegata

b) se invece è una listbox, occorre qualcosa tipo:
Codice: [Seleziona]
ListBox2.Items.Add( ListBox1.Item[ListBox1.ItemIndex] );
da mettere nell'evento onclick di un bottone
Titolo: Re:dblistbox
Inserito da: ffabio - Marzo 20, 2012, 05:03:37 pm
grazie ho messo tsqlquery  e popolo una listbox come hai detto tu.

:-)

e per eliminare un valore dalla listbox sai come si fa ???


grazie mille . sono proprio alle prime armi .
Titolo: Re:dblistbox
Inserito da: nomorelogic - Marzo 20, 2012, 05:48:13 pm
potresti andare a mettere un filtro sul tsqlquery ma non mi pare una gran cosa, anzi lo eviterei

credo ti toccherà mettere 2 tlistbox semplici ed eliminare quello da spostare tipo:
Codice: [Seleziona]
ListBox2.Items.Add( ListBox1.Item[ListBox1.ItemIndex] );
ListBox1.Delete(ListBox1.ItemIndex);
Titolo: Re:dblistbox
Inserito da: ffabio - Marzo 20, 2012, 05:55:18 pm
Si grazie ho fatto così :

procedure TGestione_ricerche.Button13Click(Sender: TObject);
var
   index : integer ;
begin

index   := ListBox4.ItemIndex;
Listbox1.Items.Add(ListBox2.Items[index]);
Listbox2.items.delete(index);
end;

e funziona. ma se volessi mantenere l'ordinamento alfabetico hai qualche idea??
altrimenti me lo agginge sempre in fondo .

 

 
Titolo: Re:dblistbox
Inserito da: ffabio - Marzo 20, 2012, 05:58:23 pm
Trovato bastava mettere sorted a true :-)
Titolo: Re:dblistbox
Inserito da: ffabio - Marzo 20, 2012, 06:05:36 pm
esistono listbox a due colonne ????

nella prima metto id e nell'altra la descizione ???

grazie
Titolo: Re:dblistbox
Inserito da: nomorelogic - Marzo 20, 2012, 06:08:38 pm
non mi risulta, però ci sono le StringGrid che hanno quante colonne ti pare :)
Titolo: Re:dblistbox
Inserito da: ffabio - Marzo 20, 2012, 06:11:37 pm
e funzionano allo stesso modo ????


Titolo: Re:dblistbox
Inserito da: nomorelogic - Marzo 21, 2012, 09:23:06 am
non proprio, li ci sono righe e colonne da gestire
se vuoi continuare con le listbox puoi inserire il contenuto formattandolo

ad esempio:
Codice: [Seleziona]
ListBox1.Items.Add('[1234] Paolo Rossi');

in questo modo quando hai bisogno del codice lo estrai tranquillamente ed in più ti mantieni una gestione semplice
Titolo: Re:dblistbox
Inserito da: xinyiman - Marzo 21, 2012, 09:29:04 am
Puoi usare una stringrid con i seguenti parametri

ColCount: 1
FixedCols: 0
FixedRows: 0
AutoEdit: false
GridLineWidth: 0

Così graficamente è uguale ad una listbox, solo che la gestisci come se fosse una stringgrid. Ergo puoi avere più colonne (anche nascoste) per contenere le varie chiavi!
Titolo: Re:dblistbox
Inserito da: ffabio - Marzo 21, 2012, 09:53:09 am
Si è vero xinyiman,sono uguali  magari se riesco mi costruisco un oggetto con i tasti per spostarle.
Appena ho tempo vedo cosa riesco a fare.

Per ora continuo con le list box prendendo il suggerimento di nomorelogic .

Devo solo capire a come beccarmi il numero tra le quadre. idee ?? devo scorrermi tutta la stringa ho esiste qualche mega funzione ???

grazie a tutti



Titolo: Re:dblistbox
Inserito da: nomorelogic - Marzo 21, 2012, 10:39:53 am
usa la pos
http://lazarus-ccr.sourceforge.net/docs/rtl/system/pos.html

prima cerchi la posizione di '[' e poi quella di ']'
ottenuto inizio e fine... usi la copy
http://lazarus-ccr.sourceforge.net/docs/rtl/system/copy.html