Aide - Recherche - Membres - Calendrier
Version complète : Fonctions cut(), paste() & copy()
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS > Développement HB++
D2P
Je suppose que je n'ai pas encore les yeux en face des trous, mais il me semblait qu'une ligne avec cut(), ou encore call cut() devrait suffire mais... Non icon_cry.gif

L'identifiant cut n'est pas reconnu...
Payalba
C'est quoi ton pb ?

L'appel d'un procedure sans paramètre ?

alors

CODE
cut


devrait suffir?
D2P
Mon problème est que je pense que cette procédure est définie dans HB++ non ?

A la compil, j'ai le message :
CITATION
error #2201 : identifier 'cut' is not defined
Payalba
Si tu veux utiliser la sub cut de HB++, il faut au moins un champs Field et faire

CODE
field2.Cut
D2P
CITATION(Payalba @ 17/12/2006 à 21:25 ) *
Si tu veux utiliser la sub cut de HB++, il faut au moins un champs Field et faire

CODE
field2.Cut

Je disais bien que...mes yeux... Merci anim_wink.gif

Je pensais en fait que la fonction s'appliquait automatiquement sur le texte sélectionné anim_wink.gif
Payalba
Et non c'est de l'objet anim_wink.gif , il faut connaitre celui sur lequel on applique la méthode.
snark
L'aide de HB++ pour la propriété Focus de Form propose le code suivant:

CODE
Private Sub Form_Load()
  Set Focus = Field1
End Sub

Private Sub mnuPaste_Click()
  Dim c as Control

  Set c = Focus
  If Not c Is Nothing And c.Implements(TypeID(Field)) Then c.Paste
End Sub

Je trouve ça très bien pour l'implémenter le cut/copy/paste sur un Form qui a plusieurs Fields.
D2P
Je me posais justement la question. Merci à vous anim_wink.gif
D2P
CITATION(snark @ 18/12/2006 à 00:16 ) *
L'aide de HB++ pour la propriété Focus de Form propose le code suivant:

CODE
Private Sub Form_Load()
  Set Focus = Field1
End Sub

Private Sub mnuPaste_Click()
  Dim c as Control

  Set c = Focus
  If Not c Is Nothing And c.Implements(TypeID(Field)) Then c.Paste
End Sub

Je trouve ça très bien pour l'implémenter le cut/copy/paste sur un Form qui a plusieurs Fields.

Aie...
Un code semblable chez moi :
CODE
Private Sub Couper_Click()
  dim champ as Control
  Set champ = Focus
  If Not champ Is Nothing And champ.Implements(TypeID(Field)) Then champ.paste
End Sub

me retourne le message d'erreur suivant :
CITATION
error #2208 : 'Control' has no member named 'paste'
Payalba
C'est normal le type control n'a pas la méthode paste.

Il faudrait faire un cast de ta variable c pour la transformer en field

Sans avoir regarder dans l'editeur.

CODE
Private Sub Couper_Click()
  dim champ as Control
dim f as field
  Set champ = Focus
  If Not champ Is Nothing And champ.Implements(TypeID(Field)) Then
    set f = champ
    f.paste
   end if
End Sub


Je ne trouve pas cela très joli.
D2P
CITATION(Payalba @ 24/12/2006 à 09:57 ) *
C'est normal le type control n'a pas la méthode paste.

J'ai juste repris l'exemple donné icon_bla.gif
CITATION(Payalba @ 24/12/2006 à 09:57 ) *
CODE
Private Sub Couper_Click()
  dim champ as Control
dim f as field
  Set champ = Focus
  If Not champ Is Nothing And champ.Implements(TypeID(Field)) Then
    set f = champ
    f.paste
   end if
End Sub


Je ne trouve pas cela très joli.

Une autre idée pour faire du copier coller dans une form ou il y a plusieurs fields question.gif
snark
CITATION(D2P @ 24/12/2006 à 10:24 ) *
Une autre idée pour faire du copier coller dans une form ou il y a plusieurs fields question.gif
La méthode ci-dessus ne te convient pas? C'est pourtant la plus générique.
D2P
CITATION(snark @ 24/12/2006 à 10:28 ) *
La méthode ci-dessus ne te convient pas? C'est pourtant la plus générique.

Si... Moi elle me convient... C'est juste que Payalba a écrit qu'il ne trouve pas ça joli, alors je voudrais savoir si il voit autre chose anim_wink.gif
Payalba
A toi de faire un truc plus joli !

Je n'aime jamais les méthodes ou il faut determiner le type d'un objet puis faire des select case ou des if sur ce type. Ca ne fait jamais très "objet".

Dans mes softs j'utilise ça comme code pour les copier/coller. Ca ne resoudra pas ton pb mais bon ca permet de faire des copier/coller sur tout les champs. (Il faut adpater le coller car dans le cas présent il colle des doubes); En plus il faudrait l'apdapter à HB2 en utilisant les exceptions.

CODE
private const clipboardText as Integer =0

Public Const sysTrapClipboardAddItem As Long = &HA10A
Public Const sysTrapClipboardAppendItem As Long = &HA370
Public Const sysTrapClipboardGetItem as Long = &HA10C

'Buffer Memory Handle locking / unlocking functions
Public Declare Function MemHandleLock(ByVal hMem as Long) as Pointer Trap &HA021
Public Declare Sub MemHandleUnlock(ByVal hMem as Long) Trap &HA022

Public Declare Sub MemMoveToString(ByRef sString As String, ByVal lPointer As Long, ByVal lSize As Long) Trap &HA026

'Clipboard functions
Public Declare Sub ClipboardAddItem(byval ClipboardFormatType as Integer, byval sm as StreamMemory, byval length as Integer) Trap sysTrapClipboardAddItem
Public Declare Function ClipboardGetItem (byval ClipboardFormatType as Integer,   byref length as Integer) as Pointer  Trap sysTrapClipboardGetItem
Public Declare Function ClipboardAppendItem (byval ClipboardFormatType as Integer, byval sm as StreamMemory, byval length as Integer) as Integer Trap sysTrapClipboardAppendItem

public Sub ToClipboard(ByVal data as String)
    Dim s as new StreamMemory
    write s,data
    ClipBoardAddItem clipBoardText,s,Len(data)
End Sub

public Sub FromClipboard(ByRef data as String)
    dim n as Integer
  dim h as long
  Dim MyPtr as Long

  h=ClipboardGetItem(0,n)

  If n=0 then
    data = "0"
  Else
    'Lock the ressource
    MyPtr=MemHandleLock(h)
    'allocate the string
    data=space(n)
    'copy the string
    MemMoveToString data,MyPtr,n
    'unlock the ressource
    MemHandleUnlock h

  End if
    on error Goto erreurPaste
        data = CDbl(Data)
        exit sub
erreurPaste:
    data = "0"

End Sub
D2P
Oui... icon_bla.gif Là j'ai du boulot siffle.gif
jpa
Salut,

Et bon Noel!

Le code de Payalba est correct, mais depuis la V2 de HB++, il existe maintenant un propriete qui permet d'acceder (get/let) au clipboard directement. Ce n'est pas tres orginal, cette propriete s'appelle Clipboard

CODE
Private Sub Button1_Click()
  'Ou l'on ecrit dans le Clipboard
  Clipboard="Hi there!"

  'Ou l'on lit le contenu du clipboard
  MsgBox Clipboard()
End Sub


Plus d'infos dans la rubrique de la doc a cette page:
Home > Language Reference > Functions > System functions > Clipboard Property


JPA

PS:
v2.0 new features
V2.11 new features
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.