Newsgroup: it.comp.appl.access
Titolo: Copia Incolla con pulsante

Ho la necessità di effettuare un Copia incolla tra due caselle di controllo
tramite apposito comando di pulsante. Ho associato al pulsante copia (evento
on clik) l'istruzione:
 SendKeys "^(C)", True
 ed al comando incolla
 SendKeys "^(V)", True
Ma non funziona.
Chi mi può dare una mano?
Grazie.

 ha scritto nel messaggio
news:0LAH6.16576$0t6.5...@news.infostrada.it...

La sintassi  prevede che questo tipo di comandi siano racchiusi tra
parentesi graffe.
IL codice correto è:
SendKeys "{^(C)}", True
SendKeys "{^(V)}", True
Ciao

 Ma non funziona.
In alternativa puoi usare
Runcommand acCmdCopy  x copiare
Runcommand acCmdPaste x incollare
--
Silvio
il sito comune di it.comp.appl.access:
http://www.sitocomune.com

 ha scritto nel messaggio
news:v5BH6.16954$0t6.5...@news.infostrada.it...

Mi spiace ma con SendKeys non funziona ... la sintassi esatta non mi sembra
comunque essere quella che mi hai indicato.
Ho risolto il problema utilizzando il suggerimento di Silvio Berruti

 Silvio
Ti ringrazio.
Per far funzionare il comando ho dovuto precederlo con l'istruzione
Me.NomeControllo.SetFocus

 ha scritto nel messaggio
news:rLUH6.26064$0t6.1...@news.infostrada.it...

Of Course  :-)


 Silvio
Scusami se ritorno sull'argomento ma non ho risolto il mio problema in
quanto nel modo descritto viene copiato l'intero contenuto del campo, mentre
io ho bisogno di copiarne solo una parte che vado ad evidenziare con il
mouse (la procedura ovviamente funziona manualmente con CTL C - CTL V ma non
mi soddisfa). Si potrebbe fare nel seguente modo
Me.NomeControllo.SetFocus
'  1.passa comando a mouse
'  2.legge punto inizio e punto fine della stringa
'  3.attribuisce alle variabili x e y inizio e fine stringa
Me.[NomeControllo].SelStart = x
Me.[NomeControllo].SelLength = y
Il problema è che non so come realizzare gli steps da 1 a 3.
Mi puoi aiutare ?
Massimo

 Mi puoi aiutare ?
Ci provo anche se non ho mai usato SelStart e SelLenght.
Supponiamo di avere nella maschera 2 controlli, ctrPrimo e ctrSecondo, e di
creare un pulsante di comando, SelParteCtl, per selezionare in ctrPrimo, a
partire dal 3° carattere, 5 caratteri e di volerli copiare in ctrSecondo.
Il codice seguente è Su click di SelParteCtl
Private Sub SelParteCtl_Click()
  Dim t As String
  Me.ctrPrimo.SetFocus
  Me.ctrPrimo.SelStart = 3
  Me.ctrPrimo.SelLength = 5
  t = Me.ctrPrimo.SelText
  Me.ctrSecondo = t
End Sub


 partire dal 3° carattere, 5 caratteri e di volerli copiare in ctrSecondo.
a partire dal 4° carattere, ...


 >
OK funziona ma chiarisco che il mio problema é:
- selezionare con il mouse solo una  parte di ctr.Primo (non predeterminata)
e trasferire in ctrSecondo solo la parte selezionata; nella routine indicata
invece  i valori del SelStart e del SelLenght vengono fissati a monte (E'
possibile far leggere al mouse il punto di partenza e la lunghezza ?)
In effetti a differenza del sistema manuale in cui seleziono con il mouse la
parte di ctrPrimo, digito CTR C, posiziono il cursore si ctrSecondo e digito
CTRV copiando solo la parte selezionata,  utilizzando invece sia SendKeys "
che RunCommand acCmdCopy sono costretto a copiare l'intero contenuto di
ctrPrimo in quanto sia l'uno che l'altro comando necessitano dell SetFocus
sul controllo.

 sul controllo.
Il problema ti si presenta perché sei costretto ad attivare un evento
esterno al controllo: x ovviare a questo ho scelto l'evento "Su pulsante
mouse su", cioè l'evento che viene attivato quando, dopo aver selezionato il
testo nel controllo, smetti di premere il tasto sx del mouse.
Proviamo se va meglio questo codice:
Private Sub ctrPrimo_MouseUp(Button As Integer, Shift As Integer, X As
Single, Y As Single)
  Dim inizio As Long, lung As Long
  If Me.ctrPrimo.SelLength > 0 Then
    inizio = Me.ctrPrimo.SelStart
    lung = Me.ctrPrimo.SelLength
    RunCommand acCmdCopy
    Me.ctrSecondo.SetFocus
    RunCommand acCmdPaste
    Me.ctrPrimo.SetFocus
    Me.ctrPrimo.SelStart = inizio
    Me.ctrPrimo.SelLength = lung
  End If
End Sub
Ciao



Perfetto ! E' proprio quello che volevo ottenere. Ti ringrazio anche perchè
mi hai fatto scoprire le potenzialità dell'evento Mouse Up/Down.