* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Maggio 02, 2024, 05:21:24 pm

Inserisci il nome utente, la password e la durata della sessione.

507 Visitatori, 1 Utente
 

Autore Topic: StringGrid  (Letto 8213 volte)

Nicola

  • Full Member
  • ***
  • Post: 201
  • Karma: +0/-0
StringGrid
« il: Aprile 29, 2015, 07:02:52 pm »
Dovrei fare questa operazione se  inserisco un carattere in una LabelEdit
mi vengono proposte in una List Box affiancata tutti i dati che iniziano per quel carattere:
esempio se digito 's' ho tutti in nomi che iniziano per s (Stefano, Sandro ecc..), se digito
'sa' solo Sandro, Salvatore; tramite l'evento OnChange ogni volta che cambia quanto presente
nella LabelEdit1.Text cambia anche l'elenco della ListBox. Il problema è che se utilizzo una
StringGrid editabile, non ho l'evento (o non lo trovo) on change; ho provato con "KeyPressed",
ma se assegno ad una variabile
Codice: [Seleziona]
text1:=StringGrid1.Cells[cl,rg];
il valore di text1 è sempre vuoto.
Grazie per l'aiuto
La disumanità del computer sta nel fatto che una volta
programmato e messo in funzione, si comporta in
maniera perfettamente onesta.

Legolas

  • Global Moderator
  • Sr. Member
  • *****
  • Post: 366
  • Karma: +3/-0
Re:StringGrid
« Risposta #1 il: Aprile 29, 2015, 10:23:42 pm »
Prova a dare un'occhiata all'evento setedittext. Tramite aRow e aCol individui la cella che viene modificata, mentre quello che digiti nella cella lo ritrovi in value. Tieni presente che l'evento viene "sparato" alla pressione di qualsiasi tasto.

Nicola

  • Full Member
  • ***
  • Post: 201
  • Karma: +0/-0
Re:StringGrid
« Risposta #2 il: Aprile 30, 2015, 11:14:06 am »
Perfetto, ciò che mi serviva, grazie
La disumanità del computer sta nel fatto che una volta
programmato e messo in funzione, si comporta in
maniera perfettamente onesta.

Nicola

  • Full Member
  • ***
  • Post: 201
  • Karma: +0/-0
Re:StringGrid
« Risposta #3 il: Aprile 30, 2015, 11:33:20 am »
Altra domanda: è possibile avere solo alcune colonne editabili? ad esempio su una StringGrid
4*4 la colonna 2 e 4?
La disumanità del computer sta nel fatto che una volta
programmato e messo in funzione, si comporta in
maniera perfettamente onesta.

Legolas

  • Global Moderator
  • Sr. Member
  • *****
  • Post: 366
  • Karma: +3/-0
Re:StringGrid
« Risposta #4 il: Aprile 30, 2015, 03:48:37 pm »
Sì, sfruttando l'evento onSelectCell

Codice: [Seleziona]
procedure TForm1.StringGrid1SelectCell(Sender: TObject; aCol, aRow: Integer;
  var CanSelect: Boolean);
begin
  if aCol in [2, 4] then
    StringGrid1.Options := StringGrid1.Options + [goEditing]
  else
    StringGrid1.Options := StringGrid1.Options - [goEditing];
end;

Nicola

  • Full Member
  • ***
  • Post: 201
  • Karma: +0/-0
Re:StringGrid
« Risposta #5 il: Aprile 30, 2015, 03:50:45 pm »
Quindi la StringGrid nell'ispettore oggetti deve rimanere Options/GoEditing=false, giusto?
La disumanità del computer sta nel fatto che una volta
programmato e messo in funzione, si comporta in
maniera perfettamente onesta.

Legolas

  • Global Moderator
  • Sr. Member
  • *****
  • Post: 366
  • Karma: +3/-0
Re:StringGrid
« Risposta #6 il: Aprile 30, 2015, 03:52:57 pm »
Sì, oppure lasciarlo a true e invertire la logica nell'evento on SelectCell ;)

Nicola

  • Full Member
  • ***
  • Post: 201
  • Karma: +0/-0
Re:StringGrid
« Risposta #7 il: Aprile 30, 2015, 10:21:18 pm »
Perfetto, va benissimo. Avrei un altro quesito  :-[
sempre nella StringGrid con 4 colonne, se sono ad esempio sulla prima colonna della prima riga
,premo il tasto enter, si sposta sulla 2 colonna prima riga, ecc; quando sono sull'ultima colonna
della prima riga, vorrei che andasse "a capo" cioè prima colonna seconda riga, ma il cursore rimane
sulla colonna 4 prima riga, a meno che non cliki col mouse; c'è un modo per spostarlo forzatamente?
La disumanità del computer sta nel fatto che una volta
programmato e messo in funzione, si comporta in
maniera perfettamente onesta.

Legolas

  • Global Moderator
  • Sr. Member
  • *****
  • Post: 366
  • Karma: +3/-0
Re:StringGrid
« Risposta #8 il: Maggio 01, 2015, 09:24:10 pm »
Se ho capito bene quello che intendi, imposta la proprietà AutoAdvance della stringgrid su aaRightDown.

Nicola

  • Full Member
  • ***
  • Post: 201
  • Karma: +0/-0
Re:StringGrid
« Risposta #9 il: Maggio 04, 2015, 01:51:40 pm »
Hai capito perfettamente, grazie.
La disumanità del computer sta nel fatto che una volta
programmato e messo in funzione, si comporta in
maniera perfettamente onesta.

Nicola

  • Full Member
  • ***
  • Post: 201
  • Karma: +0/-0
Re:StringGrid
« Risposta #10 il: Maggio 06, 2015, 07:19:26 pm »
Altro problema:
ho una StringGrid1, al doppio click in una riga si apre una seconda StringGrid2;
il focus va sulla Cella [1,1]; inserisco i dati e torno sulla StringGrid1;
ripeto il doppio click su un'altra riga della StringGrid1, questa volta il focus mi va
sulla StringGrid2, ma non sulla Cella[1,1], ma sulla cella successiva, e cosi' via;
c'è un modo perchè il focus al click della StringGrid1 mi vada si sulla StringGrid2,
ma esattamente sulla Cella[1,1]; io ho usato il comando StringGrid2.SetFocus
ma non è sufficiente.
Grazie
La disumanità del computer sta nel fatto che una volta
programmato e messo in funzione, si comporta in
maniera perfettamente onesta.

Legolas

  • Global Moderator
  • Sr. Member
  • *****
  • Post: 366
  • Karma: +3/-0
Re:StringGrid
« Risposta #11 il: Maggio 06, 2015, 09:40:38 pm »
Prova a selezionare la cella prima di passare il focus:

Codice: [Seleziona]
stringgrid2.col := 1;
stringgrid2.row := 1;
stringgrid2.setfocus;

Nicola

  • Full Member
  • ***
  • Post: 201
  • Karma: +0/-0
Re:StringGrid
« Risposta #12 il: Maggio 07, 2015, 11:47:12 am »
Ottimo, grazie. :D
La disumanità del computer sta nel fatto che una volta
programmato e messo in funzione, si comporta in
maniera perfettamente onesta.

Nicola

  • Full Member
  • ***
  • Post: 201
  • Karma: +0/-0
Re:StringGrid
« Risposta #13 il: Maggio 08, 2015, 12:11:44 pm »
Ancora una domanda sempre su StringGrid editabile; inserisco dei dati ad esempio nella
cella 2,2 e in automatico in base a quanto inserito mi viene compilata la cella 3,2;
proseguo su altre celle, e se torno sulla cella 2,2 e cambio il valore la cella 3,2 non viene
aggiornata con il nuovo valore; avevo intercettato l'output con "OnEditingDone"; in sostanza
al primo inserimento parte l'evento, ma al secondo no; infatti ho provato a fare un debug inserendo
un punto di stop, e al primo si ferma sul codice, mentre la seconda volta viene ignorato.
Da cosa potrebbe dipendere?
La disumanità del computer sta nel fatto che una volta
programmato e messo in funzione, si comporta in
maniera perfettamente onesta.

Legolas

  • Global Moderator
  • Sr. Member
  • *****
  • Post: 366
  • Karma: +3/-0
Re:StringGrid
« Risposta #14 il: Maggio 08, 2015, 08:54:56 pm »
Uhm... ho provato a fare una cosa del genere:
Codice: [Seleziona]
procedure TForm1.StringGrid1EditingDone(Sender: TObject);
begin
  StringGrid1.Cells[3,2] := '';
  StringGrid1.Cells[3,2] := StringGrid1.Cells[2,2] + ' - editato';
end;
e funziona come dovrebbe. Riesci a fare un esempio minimo con il bug che hai riscontrato e postarlo qui?

 

Recenti

How To

Utenti
Stats
  • Post in totale: 18785
  • Topic in totale: 2237
  • Online Today: 543
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 1
Guests: 507
Total: 508

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.