Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: mecoman - Febbraio 14, 2013, 05:15:47 pm

Titolo: Evidenziare testo in listbox
Inserito da: mecoman - Febbraio 14, 2013, 05:15:47 pm
Ciao a tutti.

Come da titolo vorrei che all'avvio della mia applicazione il primo testo presente in una listbox sia già evidenziato. Qualche dritta?

Grazie, ciao.
Titolo: Re:Evidenziare testo in listbox
Inserito da: Narciso - Febbraio 14, 2013, 06:58:15 pm
Guarda un po' se fa al caso tuo

procedure TForm1.FormCreate(Sender: TObject);
begin
  LISTBOX1.ITEMINDEX:=0;
end;             
Titolo: Re:Evidenziare testo in listbox
Inserito da: mecoman - Febbraio 16, 2013, 01:40:46 pm
Ciao Narcisio. Ho provato a fare come mi hai detto ma non funziona. Hai altri consigli?
Titolo: Re:Evidenziare testo in listbox
Inserito da: Stilgar - Febbraio 16, 2013, 04:36:55 pm
Cosa intendi per già evidenziato?
Se parli del testo "selezionato", devi dare il focus al controllo.
Codice: [Seleziona]
procedure TForm1.FormCreate(Sender: TObject);
begin
  LISTBOX1.ITEMINDEX:=0;
  LISTBOX1.SetFocus;
end;       
Stilgar
Titolo: Re:Evidenziare testo in listbox
Inserito da: mecoman - Febbraio 17, 2013, 11:48:34 am
Ciao Stilgar. Per evidenziato intendevo, come hai scritto tu, "evidenziato".

Ho provato con il codice che mi hai scritto (scrittomi anche da Narciso) ma all'avvio del programma mi genera questa eccezione: " Il progetto prject1 ha sollevato un'eccezione di classe 'Exception' con messaggio: TListBox Index 0 out of bounds 0..-1. In file '\include\customlistbox.inc' at line 197 ".

Dove può essere il problema?

Ciao, grazie.

Titolo: Re:Evidenziare testo in listbox
Inserito da: bonmario - Febbraio 17, 2013, 12:36:25 pm
Il problema è che nella lista devi avere almeno un elemento e, per quel che ne so io, non si può fare la SetFocus nell'OnCreate. Fai così:
Codice: [Seleziona]
procedure TForm1.FormCreate(Sender: TObject);
begin
  ListBox1.Items.Add('CIAO1');
  ListBox1.Items.Add('CIAO2');
  ListBox1.Items.Add('CIAO3');
  ListBox1.Items.Add('CIAO4');
  ListBox1.Items.Add('CIAO5');
  if (ListBox1.Items.Count > 0) then begin
    ListBox1.ItemIndex:=2;
  end;
end;

Provato e funzionante, ti evidenzia "CIAO3".

Ciao, Mario
Titolo: Re:Evidenziare testo in listbox
Inserito da: mecoman - Febbraio 17, 2013, 02:27:45 pm
Ciao Mario, grazie per la risposta. Ho provato come mi hai detto e funziona.

Quello che hai fatto tu, però, è quello di aggiungere "Ciao1-2-3-4-5" dal codice. Quello che vorrei fare io è quello di aggiungere il testo caricandolo da un file .txt.

Consigli?

Grazie, ciao.
Titolo: Re:Evidenziare testo in listbox
Inserito da: bonmario - Febbraio 17, 2013, 04:29:41 pm
Scusa, toglimi la curiosità: hai appena iniziato a programmare o hai appena iniziato ad usare Lazarus/FPC?

Per fare quello che dici, invece di aggiungere i dati con la Add, se nel tuo file di testo ogni riga del file corrisponde ad una riga della ListBox, li puoi caricare con l'istruzione
Codice: [Seleziona]
ListBox1.Items.LoadFromFile('Percorso e nome del file TXT');
Se invece non hai una corrispondenza 1 a 1, devi fare tu il ciclo di lettura dal file e, quando serve, caricare i dati nella ListBox.

Ciao, Mario
Titolo: Re:Evidenziare testo in listbox
Inserito da: mecoman - Febbraio 19, 2013, 06:06:24 pm
Ciao a tutti.

Ho risolto il problema che avevo.

Grazie per i consigli