Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: petrusic - Settembre 15, 2021, 10:57:18 pm

Titolo: come inserire una riga intermedia in una ListBox
Inserito da: petrusic - Settembre 15, 2021, 10:57:18 pm
Sto cercando una soluzione per inserire una riga intermedia in una ListBox.
Facendo riferimento a quanto letto qui (http://www.lazaruspascal.it/index.php?topic=227.msg1485#msg1485), ho scritto:
Codice: [Seleziona]
...
var
  ixListBoxAdd: Integer;    // indice di puntamento alla riga per l'inserimento

  dtListBoxAdd: String = '';         // Stringa da inserire
...
begin
...
 LBGgAperte.AddItem(dtListBoxAdd, ixListBoxAdd);     
ma il compilatore mi restituisce il seguente messaggio d'errore
Citazione
frm7.pas(536,60) Error: Incompatible type for arg no. 2: Got "LongInt", expected "TObject"

Ho cercato come trasformare il mio Integer in un TObject, ma ho capito (se non erro) di dovere costruire un array particolare che funzioni da puntamento alle righe della mia ListBox.
Se le cose stanno veramente così, allora mi conviene creare un array duplicato del contenuto della ListBox e caricare ogni volta ex novo la ListBox, con gli elementi dell'array, con esclusione dell'ultima riga cancellata nella ListBox, per effetto del DblClick (l'effetto non si vede perchè non ho voluto inserire istruzioni non direttamente legate al mio problema).

Tuttavia non capisco perchè l'esempio riportato nella fonte linkata funziona e la mia prova non debba funzionare.

Ho provato anche :
Codice: [Seleziona]
LBGgAperte.ItemIndex:= ixListBoxAdd;
BGgAperte.AddItem(dtListBoxAdd, LBGgAperte.ItemIndex);   
ma ricevo sempre lo stesso messaggio d'Errore per la riga di esecuzione dell'AddItem.
Titolo: Re:come inserire una riga intermedia in una ListBox
Inserito da: nomorelogic - Settembre 15, 2021, 11:22:10 pm
se vuoi inserire una riga intermedia non devi usare AddItem (che aggiunge un elemento alla fine della lista) ma una tra

nel tuo caso devi usare: ListBox1.Items.Insert();


un suggerimento:
se ti metti tra le parentesi aperte e schiacci: Ctrl+Shift+Spazio
ti vengono mostrati i parametri della funzione/procedura


Titolo: Re:come inserire una riga intermedia in una ListBox
Inserito da: petrusic - Settembre 18, 2021, 10:51:30 am
Grazie, anche per il suggerimento, molto utile.

Ho completato la modifica e la relativa prova. L'inserimento ha funzionato alla perfezione.