realbasic-nug.it
[Top] [All Lists]

Re: Contenitore di dati

To: REALbasic NUG Italian <realbasic-nug.it@lists.realsoftware.com>
Subject: Re: Contenitore di dati
From: Ivano Monti <ivanomonti@libero.it>
Date: Tue, 16 Jun 2009 01:14:16 +0200
Authentication-results: mx.google.com; spf=neutral (google.com: 74.124.194.228 is neither permitted nor denied by best guess record for domain of realbasic-nug.it-bounces@lists.realsoftware.com) smtp.mail=realbasic-nug.it-bounces@lists.realsoftware.com
Delivered-to: listarchive@realsoftware.com
In-reply-to: <26d1d61d0906151245n6ca92b0br8ad026efe1a9b126@mail.gmail.com>
References: <26d1d61d0906121045k6d489f46v167bcc8f83cd3d19@mail.gmail.com> <3EF4A47C-222C-4F02-8720-AB66DA2C5F61@libero.it> <26d1d61d0906122336u72fc1284l4d0a65f9d9860870@mail.gmail.com> <DB4E051A-7743-4F3E-A5DF-B65A36BBAE62@yahoo.it> <26d1d61d0906150213q432db3cdrc74975dd8213fdbb@mail.gmail.com> <AC4B207C-B0CC-4ADF-8988-187DE34492A3@system-i.it> <26d1d61d0906150744x2de97fdcjcc07942644417813@mail.gmail.com> <04A982BD-D22F-41A5-8B34-59D2F27D774F@system-i.it> <26d1d61d0906151245n6ca92b0br8ad026efe1a9b126@mail.gmail.com>
Reply-to: REALbasic NUG Italian <realbasic-nug.it@lists.realsoftware.com>
Sender: realbasic-nug.it-bounces@lists.realsoftware.com
Io ho scritto quanto segue, utilizzando le freccie su/giu/sx/dx

Function CellKeyDown(row as Integer, column as Integer, key as String) As Boolean
  if Asc(key) = 29 then
    if indexC = Listbox1.ColumnCount-1 then
      indexC = 0
    else
      indexC = column+1
    end if
    Listbox1.CellType(row,indexC)=Listbox1.TypeEditable
    Listbox1.editCell(row,indexC)
    Listbox1.ActiveCell.SelStart=0
    Listbox1.ActiveCell.SelLength=len(ListBox1.Cell(row,indexC))
  end if

  if Asc(key) = 28 then
    if indexC = 0 then
      indexC = Listbox1.ColumnCount-1
    else
      indexC = column-1
    end if
    Listbox1.CellType(row,indexC)=Listbox1.TypeEditable
    Listbox1.editCell(row,indexC)
    Listbox1.ActiveCell.SelStart=0
    Listbox1.ActiveCell.SelLength=len(ListBox1.Cell(row,indexC))
  end if

  if Asc(key) = 30 then
    if indexR = 0 then
      indexR = Listbox1.ListCount-1
    else
      indexR = row-1
    end if
    Listbox1.CellType(indexR,column)=Listbox1.TypeEditable
    Listbox1.editCell(indexR,column)
    Listbox1.ActiveCell.SelStart=0
    Listbox1.ActiveCell.SelLength=len(ListBox1.Cell(indexR,column))
  end if

  if Asc(key) = 31 then
    if indexR = Listbox1.ListCount-1 then
      indexR = 0
    else
      indexR = row+1
    end if
    Listbox1.CellType(indexR,column)=Listbox1.TypeEditable
    Listbox1.editCell(indexR,column)
    Listbox1.ActiveCell.SelStart=0
    Listbox1.ActiveCell.SelLength=len(ListBox1.Cell(indexR,column))
  end if
End Function

prova e fammi sapere se ti va bene.

cordiali saluti Ivano Monti

Il giorno 15/giu/09, alle ore 21:45, Massimo Lista ha scritto:

Scusa se ritorno sull'argomento, ma il problema che incontro sull'evento
CellKeyDown non é nella selezione riga,colonna ma nel fatto che
l'istruzione:
 If Key = chr(13) then
   ListBox1.CellType(row,1)=Listbox1.TypeEditable
   ListBox1.editCell(row,1)
   ListBox1.ActiveCell.SelStart=0
   ListBox1.ActiveCell.SelLength=len(ListBox1.Cell(row,1))

 End if

non viene eseguita (la riga corrente non viene resa editabile), a differenza
di quel che accade con l'evento CellClick con il click del mouse.

Io uso la versione 5. Non è per caso un bug ?





Il giorno 15 giugno 2009 19.29, Sergio Tamborini <ml_sergio@system-i.it > ha
scritto:

Allora, ovviamente l'evento hai ragione tu... è cellkeydown (keydown è
riferito all'evento di pressione di un tasto su tutta la listbox).

Io comunque mi sono fatto un piccolo metodo che chiamo dall'evento
cellkeydown, al quale passo quale riga e quale colonna (in pratica quale
cella) intendo rendere editabile:

Sub SelezionaUltimaRIgaInserita(riga As integer, colonna As integer)
me.editCell(riga,colonna)
me.ActiveCell.SelStart=0
me.ActiveCell.SelLength=len(me.Cell(riga,colonna))
End Sub

...Sono poi 3 righe :)

Spero di essere stato utile!

Il giorno 15/giu/09, alle ore 16:44, Massimo Lista ha scritto:


Ho seguito il tuo consiglio.

Su evento KeyDown
 if key=chr(13) then
 Me.CellType(row,1)=Listbox1.TypeEditable
 Me.EditCell(row, 1)
 return True
end if

---ma su row mi segnala "Questo metodo o proprietà non esiste"

Invece su evento CellKeyDown ho inserito:
if key=chr(9) then
 Me.CellType(row,1)=Listbox1.TypeEditable
 Me.EditCell(row,1)
 return True
end if

e row viene accettato, con la freccia si ottiene lo scorrimento delle
righe
ma il campo della colonna 1 non viene reso editabile (come invece avviene
con CellClick.

Perchè ?




Il giorno 15 giugno 2009 11.24, Sergio Tamborini <ml_sergio@system-i.it >
ha
scritto:

Nell'evento keydown metti chr(13) che è l'invio (puoi anche valutare il
chr(12) che è l'invio del tastierino numerico) e dici di editare la cella sotto... puoi anche valutare il key chr(9) che è il tab per spostarti
alla
cella a destra :) con qualche if puoi anche fare in modo che se arrivi
all'ultima coolonna vada alla prima cella della riga sotto. E'
fattibilissimo, ce l'ho fatta io :)

Il giorno 15/giu/09, alle ore 11:13, Massimo Lista ha scritto:


Grazie per il suggerimento.In questo modo riesco a editare i campi di una

colonna:

On CellClick
Me.CellType(Val(str(row)),1)=Listbox1.TypeEditable
Me.EditCell(Val(str(row)),1)

però non riesco a gestire l'evento su invio, facendo in modo tale che il focus vada sulla stessa colonna al rigo successivo rendendola editabile. Devo necessariamente posizionarmi con il mouse al rigo successivo, la
qual
cosa sarebbe molto scomodo in caso di inserimento di molti dati (quali
ad
esempio i dati di un bilancio).





Il giorno 13 giugno 2009 9.30, Massimo Valle <maxduepuntozero@yahoo.it >
ha
scritto:


Contrariamente a quanto sembri, la listbox funge anche da contenitore.
Utilizzi il metodo Listbox.cell(row, column) sia per recuperare che per assegnare un valore. Se devi farlo inserire direttamente all'utente
puoi
rendere editabile la cella e di conseguenza questa si comporta come un
editfield.

Massimo Valle



On 13/giu/09, at 08:36, Massimo Lista wrote:

Ma è possibile inserire direttamente un valore in una cella di una
listbox

?Io
ho capito che la listbox è solo un visualizzatore di dati.
Non riesco ad inserire alcun dato direttamente in una listbox.
Per modificare un campo di una listbox devo trasferire il valore di
quel
campo in un editfield, modificarlo e ripopolare la listbox.
A me invece serve inserire direttamente il valore nel campo della
listbox
(tipo griglia di un file excel).
E' possibile ?
Esiste un controllo ad hoc ?
Il plugin DataGrid può fungere allo scopo ?




Il giorno 12 giugno 2009 21.12, Ivano Monti <ivanomonti@libero.it > ha
scritto:

che io sappia no, ma puoi usare una listbox cmq, legata ad un database
o

un
recordset credo che il limite sia nelle colonne, se non erro 64
colonne
come
max, ma non vorrei dire una scemenza, le maschere viewer di una query
che
in
realbasic non esistono se non con la listbox.

Poi puoi fare scatenare una serie di modifica e salva a secondo di
come
vuoi muoverti nelle celle della stessa, se posso dare un contributo
più
che
volentieri.

Ivano Monti
Developer for Mac and Windows

Email:          ivanomonti @ libero.it
Url:                    http://www.ivanomonti.eu

Skype:          ivanomonti
AIM:                    ivanomonti
iChat:                  ivanomonti

Mobile Phone:   +39-392-9824007
Phone:          +39 02 36648804

Google Map              45.62224,9.107407



Il giorno 12/giu/09, alle ore 19:45, Massimo Lista ha scritto:


Ho l'esigenza di un controllo che si presenti come un editfield , ma
che

sia

anche un contenitore di dati.
Mi spiego meglio:
Mi sembra di capire che listbox e editfield sono solo dei
visualizzatori
di
dati, a me serve invece un controllo
collegato ad un database che mi consenta di inserire dei valori in
un
campo
(tipo foglio di Excell)
In Microsoft Access ci sono le maschere con visualizzazione
continua.
In RealBasic ?





--
Massimo







--
Massimo



------

Sergio Tamborini
Brescia
http://www.system-i.it









--
Massimo



------

Sergio Tamborini
Brescia
http://www.system-i.it









--
Massimo




<Prev in Thread] Current Thread [Next in Thread>