Comment en dragAndDrop mettre un curseur ? [Résolu]

ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 29 déc. 2011 à 11:34 - Dernière réponse : ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention
- 30 déc. 2011 à 12:18
Bonjour,

Comment dragAndDrop mettre un curseur ?

Je fais un drag and drop entre deux listes (1 et 2), ceci comme indiqué dans le code qui suit, en partant pour chaque liste d'un MouseDown (exemple que j'ai pris sur le Net), tout fonctionne sauf que je n'arrive pas à y mettre un curseur lors de l'opération, enfin, j'y arrive, mais il s'efface une demie seconde après que j'aie cliqué sur le mouseDown, remplacé par un sens interdit qui vient tout seul, puis lors du déplacement il n'y a plus rien que le petit carré en pointillés par défaut. J'ai donc totalement effacé ce code.

Principe banal du programme : listbox1 liste de produit, listBox2 liste de courses, donc on glisse de 1 vers 2, mais en cas d'erreur on peut faire le contraire, d'où deux type de curseur :
va qui va de 1 en 2
viens qui viens de 2 en 1
Trois types d'images pour curseur (32*32 en 16 couleurs) et en ressources :

vaIco.ico
viensIco.ico

vaCur.cur
viensCur.cur

vaBmp.bmp
viensBmp.bmp

J'ai fait ceci car je ne sais pas lequel va le mieux fonctionner?

Voici mon code :

Sub ListBox1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
    If ListBox1.Items.Count < 1 Or ListBox1.SelectedIndex < 0 Then Exit Sub
    concerne = 1
    lindexOrigine = ListBox1.SelectedIndex
    Try
      ListBox1.DoDragDrop(ListBox1.Items(ListBox1.IndexFromPoint(e.X, e.Y)), DragDropEffects.Move)
    Catch ex As Exception ' si clique sur ligne puis dans vide de la liste = index -1
      concerne = 0
    End Try
  End Sub
  Sub ListBox2_DragOver(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles ListBox2.DragOver
    If concerne <> 1 Then
      e.Effect = DragDropEffects.None
      Exit Sub
    End If
    If Not (e.Data.GetDataPresent(GetType(System.String))) Then
      e.Effect = DragDropEffects.None
    Else
      lindex = ListBox2.IndexFromPoint(ListBox2.PointToClient(New Point(e.X, e.Y)))
      e.Effect = DragDropEffects.Move
    End If
  End Sub
  Sub ListBox2_DragDrop(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles ListBox2.DragDrop
    If concerne <> 1 Then Exit Sub
    Dim item As Object = CType(e.Data.GetData(GetType(System.String)), System.Object)
    ListBox2.Items.Add(item)
    ListBox1.Items.RemoveAt(lindexOrigine)
    Call afficheCompteurs()
  End Sub


  Sub ListBox2_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles ListBox2.MouseDown
    If ListBox2.Items.Count < 1 Or ListBox2.SelectedIndex < 0 Then Exit Sub
    concerne = 2
    lindexOrigine = ListBox2.SelectedIndex
    Try
      ListBox2.DoDragDrop(ListBox2.Items(ListBox2.IndexFromPoint(e.X, e.Y)), DragDropEffects.Move)
    Catch ex As Exception ' si clique sur ligne puis dans vide de la liste = index -1
      concerne = 0
    End Try
  End Sub
  Sub ListBox1_DragOver(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragOver
    If concerne <> 2 Then
      e.Effect = DragDropEffects.None
      Exit Sub
    End If
    If Not (e.Data.GetDataPresent(GetType(System.String))) Then
      e.Effect = DragDropEffects.None
    Else
      lindex = ListBox1.IndexFromPoint(ListBox1.PointToClient(New Point(e.X, e.Y)))
      e.Effect = DragDropEffects.Move
    End If
  End Sub
  Sub ListBox1_DragDrop(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragDrop
    If concerne <> 2 Then Exit Sub
    Dim item As Object = CType(e.Data.GetData(GetType(System.String)), System.Object)
    ListBox1.Items.Add(item)
    ListBox2.Items.RemoveAt(lindexOrigine)
    Call afficheCompteurs()
  End Sub


  Sub afficheCompteurs()
    ListBox1.Refresh()
    ListBox2.Refresh()
    Label1.Text = ListBox1.Items.Count
    Label2.Text = ListBox2.Items.Count
    Label5.Text = ListBox1.Items.Count + ListBox2.Items.Count
    concerne = 0
  End Sub



Voici le lien de chargement zippé en dossier de ce code vbNet :

Cliquer ici pour charger le code

Alors de grâce j'ai assez cherché, il doit falloir des procédures évènementielles et des conversions de type à cause des ressources que je ne maîtrise pas en vbNet, donc, merci de m'intégrer un petit exemple (testé) qui fonctionne, au moins dans un sens ?

Au plaisir, cordialement, Joe.
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 30 déc. 2011 à 08:17
3
Merci
Voilà le code complet (avec icones) :

Option Explicit On

Imports System
Imports System.IO
Imports System.Text
Imports System.Windows.Forms

Partial Public Class Form1
    Sub Form1_Load(ByVal sender As System.Object, ByVal e As EventArgs) Handles MyBase.Load
        ListBox1.SelectionMode = SelectionMode.MultiSimple
        ListBox2.SelectionMode = SelectionMode.MultiSimple
        ListBox1.AllowDrop = True
        ListBox2.AllowDrop = True
        Call moulinette()
        Call litProduits()
        Call afficheCompteurs()
    End Sub

    Private Sub ListBox_MouseMove(ByVal source As ListBox, ByVal e As MouseEventArgs) Handles ListBox1.MouseMove, ListBox2.MouseMove
        If e.Button = MouseButtons.Left Then
            source.SelectedIndex = source.IndexFromPoint(e.Location)
            If source.SelectedIndex >= 0 Then '# Si un element est survollé
                source.DoDragDrop(source, DragDropEffects.Move)
            End If
        End If
    End Sub

    Sub ListBox_DragOver(ByVal destination As ListBox, ByVal e As DragEventArgs) Handles ListBox1.DragOver, ListBox2.DragOver
        If e.Data.GetDataPresent(GetType(ListBox)) Then
            Dim source As ListBox = e.Data.GetData(GetType(ListBox))
            '# On quitte si on survolle le ListBox de départ
            If source Is destination Then
                e.Effect = DragDropEffects.None
            Else
                e.Effect = DragDropEffects.Move
            End If
        End If
    End Sub

    Sub ListBox_DragDrop(ByVal destination As ListBox, ByVal e As DragEventArgs) Handles ListBox1.DragDrop, ListBox2.DragDrop
        If e.Data.GetDataPresent(GetType(ListBox)) Then
            Dim source As ListBox = e.Data.GetData(GetType(ListBox))
            For Each item In source.SelectedItems
                destination.Items.Add(item)
            Next
            Do Until (source.SelectedIndex < 0)
                source.Items.RemoveAt(source.SelectedIndex)
            Loop
            Call afficheCompteurs()
        End If
    End Sub

    Sub ListBox_GiveFeedback(ByVal sender As ListBox, ByVal e As GiveFeedbackEventArgs) Handles ListBox1.GiveFeedback, ListBox2.GiveFeedback
        e.UseDefaultCursors = False
        If sender Is ListBox1 Then
            Cursor.Current = New Cursor(My.Resources.vaIco.Handle) '# Depuis une icone
        Else
            Cursor.Current = New Cursor(My.Resources.viensBmp.GetHicon) '# Depuis un BMP (devrait fonctionner avec un PNG)
        End If
    End Sub

    Sub afficheCompteurs()
        Label1.Text = ListBox1.Items.Count
        Label2.Text = ListBox2.Items.Count
        Label5.Text = ListBox1.Items.Count + ListBox2.Items.Count
    End Sub

    Sub litProduits()
        ListBox1.Items.Clear()
        '# Ajoute directement chaque ligne du fichier texte en tant qu'Item de la ListBox
        ListBox1.Items.AddRange(File.ReadAllLines("produits.txt", Encoding.Default))
    End Sub

    '# Version "classique"
    Sub ecritProduit()
        With New StreamWriter("produits.txt", False, Encoding.Default)
            For Each Item As String In ListBox1.Items
                .WriteLine(Item)
            Next
            .Close()
        End With
    End Sub

    '# Version Linq, pas ma favorite, bien qu'efficace
    'Sub ecritProduit()
    '    Dim Items(Me.ListBox1.Items.Count - 1) As Object
    '    Me.ListBox1.Items.CopyTo(Items, 0)
    '    System.IO.File.WriteAllLines("produits.txt", Items.Select(Function(Item) Item.ToString()).ToArray(), Encoding.Default)
    'End Sub

    Sub moulinette()
        For Each line As String In File.ReadAllLines("base.txt", Encoding.Default)
            '# Découpe les lignes qui seraient trop longues...
            If line.Length > 22 Then
                line = line.Substring(0, 22).Trim()
            End If
            '# Ajoute l'element dans la liste1
            ListBox1.Items.Add(line.ToUpper)
        Next
        ecritProduit()
    End Sub
End Class



Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de Renfield
Utilisateur anonyme - 29 déc. 2011 à 12:02
0
Merci
Bonjour EhJoe,

As-tu autorisé les opérations DragDrop en affectant la propriété AllowDrop de tes listes à True ?
Commenter la réponse de Utilisateur anonyme
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 29 déc. 2011 à 12:36
0
Merci
Bonjour Banana n°32,

Merci... affirmatif :

ListBox1.AllowDrop = True
ListBox2.AllowDrop = True


' courses form1
Option Explicit On
Public Class Form1
  Dim lindex As Integer
  Dim lindexOrigine As Integer
  Dim concerne As Byte

  Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim i As Integer
    ListBox1.Items.Clear() ' 32 maxi
    ListBox2.Items.Clear()
    ListBox3.Items.Clear()
    ListBox1.AllowDrop = True
    ListBox2.AllowDrop = True
    For i = 65 To 90
      ListBox3.Items.Add(Chr(i))
    Next i
    Me.Left = 10
    Me.Top = 10
    concerne = 0
    'Call moulinette()
    Call litProduits()
  End Sub


Cordialement.
Commenter la réponse de ehjoe
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 29 déc. 2011 à 14:42
0
Merci
Pas regardé l'icone, mais nettoyé un peu le code ; pas etonnant que tu trouves .Net lourd ^^

Option Explicit On

Imports System.IO
Imports System.Text

Partial Public Class Form1
    Private Structure DDS
        Public ListBox As ListBox
        Public Item As String
        Public Index As Integer
    End Structure

    Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        AddHandler ListBox1.MouseDown, AddressOf ListBox_MouseDown
        AddHandler ListBox2.MouseDown, AddressOf ListBox_MouseDown

        AddHandler ListBox1.DragOver, AddressOf ListBox_DragOver
        AddHandler ListBox2.DragOver, AddressOf ListBox_DragOver

        AddHandler ListBox1.DragDrop, AddressOf ListBox_DragDrop
        AddHandler ListBox2.DragDrop, AddressOf ListBox_DragDrop

        ListBox1.Items.Clear() ' 32 maxi
        ListBox2.Items.Clear()
        ListBox3.Items.Clear()
        ListBox1.AllowDrop = True
        ListBox2.AllowDrop = True
        For Each c As Char In "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
            ListBox3.Items.Add(c)
        Next c
        Me.Left = 10
        Me.Top = 10
        Call moulinette()
        Call litProduits()
    End Sub

    Sub ListBox_MouseDown(ByVal sender As ListBox, ByVal e As System.Windows.Forms.MouseEventArgs)
        If sender.Items.Count > 1 Then
            Dim data As DDS
            data.Index = sender.IndexFromPoint(e.X, e.Y)
            If data.Index >= 0 Then
                sender.SelectedIndex = data.Index

                data.ListBox = sender
                data.Item = sender.SelectedItem.ToString()
                Try
                    sender.DoDragDrop(data, DragDropEffects.Move)
                Catch
                End Try
            End If
        End If
    End Sub

    Sub ListBox_DragOver(ByVal sender As ListBox, ByVal e As System.Windows.Forms.DragEventArgs)
        If e.Data.GetDataPresent(GetType(DDS)) Then
            Dim data As DDS = e.Data.GetData(GetType(DDS))
            If data.ListBox Is sender Then
                e.Effect = DragDropEffects.None
                Exit Sub
            End If
            e.Effect = DragDropEffects.Move
        End If
    End Sub

    Sub ListBox_DragDrop(ByVal sender As ListBox, ByVal e As System.Windows.Forms.DragEventArgs)
        If e.Data.GetDataPresent(GetType(DDS)) Then
            Dim data As DDS = e.Data.GetData(GetType(DDS))
            sender.Items.Add(data.Item)
            data.ListBox.Items.RemoveAt(data.Index)
            Call afficheCompteurs()
        End If
    End Sub
[...]
End Class


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 29 déc. 2011 à 16:11
0
Merci
Cher Renfield,

Ça ne marche pas !

Tu fais tout sauf ce que je cherche

MARCHE PAS !
Quand il reste un élément dans la liste de droite e(0), il ne veut plus retourner chez lui !

MON EXEMPLE
Ben comme je ne sais pas le faire avec des listes en vbNet j'ai cherché sur le Net le modèle de "Philippe Lassère", certes il n'est pas informaticien il est médecin :


X-K-2 - Exemple N° 2 (plus complexe)
Glisser déplacer une ligne d'une listBox 'ListBox1' vers une listBox 'ListBox2'.
Créer une ListBox1
Créer une listBox2 avec sa propriété AllowDrop=True 'listBox2 accepte le 'lâcher'
Dans l'en-tête du module ajouter:

Public IndexdInsertion As Integer ' Variable contenant l'index ou sera inséré la ligne
'Eventuellement pour l'exemple charger les 2 ListBox avec des chiffres pour pouvoir tester.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase
Dim i As Integer
For i = 1 To 100
ListBox1.Items.Add(i.ToString)
Next
For i = 1 To 100
ListBox2.Items.Add(i.ToString)
Next
End Sub

'Dans le listBox de départ, l'évènement MouseDown déclenche le glisser déplacer par DoDragDrop.
Private Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
_Handles ListBox1.MouseDown
ListBox1.DoDragDrop(ListBox1.Items(ListBox1.IndexFromPoint(e.X, e.Y)), _
DragDropEffects.Copy Or DragDropEffects.Move)
End Sub

'ListBox1.IndexFromPoint(e.X, e.Y) retourne l'Index de l'item ou se trouve la souris
'à partir des coordonnées e.x et e.y du pointeur)
'DoDragDrop a 2 arguments: l'élément à draguer et le mode
'DragOver qui survient quand la souris se balade sur le contrôle d'arrivé, vérifie
'si le Drop reçoit bien du texte et met dans IndexdInsertion le listItem qui est sous la souris.
'Noter que e.x et e.y sont les coordonnées écran , il faut les transformer en coordonnées client (du contrôle) par
PointToClient afin d'obtenir l'index de l'item ou se trouve la souris (en utilisant IndexFromPoint.

Cours VB.NET par Philippe Lasserre
- 685 -
Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation
de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © - . Aucune reproduction, même partielle, ne peut
être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://plasserre.developpez.com/cours/vb-net/

Private Sub ListBox2_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
_Handles ListBox2.DragOver
If Not (e.Data.GetDataPresent(GetType(System.String))) Then
e.Effect = DragDropEffects.None
Else
IndexdInsertion = ListBox2.IndexFromPoint(ListBox2.PointToClient(New Point(e.X, e.Y)))
e.Effect = DragDropEffects.Copy
End If
End Sub

'Enfin dans DragDrop, on récupère le texte dans Item et on ajoute un item après l'item pointé.
Private Sub ListBox2_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
_Handles ListBox2.DragDrop
Dim item As Object = CType(e.Data.GetData(GetType(System.String)), System.Object)
ListBox2.Items.Insert(IndexdInsertion + 1, item)
End Sub



AU MOINS TROIS ERREURS DANS SON CODE

-1-
En plus ça marchait pas non plus son truc, les listes elles se mélangeaient les pédales, elles se recopiaient sur elle-même, j'ai été obligé de les distinguER par une variable booléen selon la liste de départ.

-2-
Y avait encore un autre problème, quand on cliquait dans un élément de liste puis ensuite dans le blanc de la liste ça plantait (-1).

-3-
Et y avait un troisième problème, au lieu de faire un add lors de la réception, il faisait un genre index + 1, je sais plus, enfin bref, ça voulait entrer l'index d'une liste dans l'autre qui avait déjà cet index, et ça plantait encore.

J'ai découvert à l'usage trois fautes dans son code, ou incompatibilités avec un retour depuis une autre liste selon la méthode, faut le faire pour un mec qui veut écrire des didacticiels, je n'irai pas le voir comme médecin celui-là, sauf si je veux mourir.

-------------


TON CODE
Je reprends ce que je ne connais pas tellement ou pas du tout :

- Les entêtes, oui, ça diminue les répétitions et la longueur des lignes, mais en faisant ça, au bout d'un moment on les oublie et ça ne marche plus, et on ne sait plus quoi y mettre, et faut chercher, tandis que là ça maintien le cervelet en état?

- "Partial" je ne connais pas, c'est utile au moins dans mon cas ?

- Private Structure DDS
Public ListBox As ListBox
Public Item As String
Public Index As Integer
End Structure

Je ne connais pas, mais je présume qu'ensuite tu vas appeler DDS(0) à 2?

- Ça
For Each c As Char In "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Je n'ai jamais appris, mais j'en ai pas besoin puisque la preuve je sais faire autrement?

- Ceci
Sub ListBox_MouseDown(ByVal sender As ListBox, ByVal e As System.Windows.Forms.MouseEventArgs)
If sender.Items.Count > 1 Then

Je crois que ton erreur est là, ce doit être "> 0" ?

Je ne connais pas le reste, tu sais vb6 n'allait pas si loin, ça se limitait à :
sub list1_click()
Alors moi, ce qui est après la première parenthèse je m'en moque, sauf si j'en ai besoin, le "e" souvent?

Oui mais, en faisant ça, est-ce que ça ne va pas concerner toutes les listes, or moi j'ai d'autres listes qui ne veulent pas faire du drag and drop, ah ?

Etc, après je ne comprends que vaguement mais comme je ne connais pas ces directives, que je vais sans doute utiliser dans ce cas précis une fois tous les deux ans, donc que je vais oublier, donc je prends les directives que je connais, car ça va plus vite pour coder et je ne les oublie pas?
-fin-

Je te remercie pour ce drag and drop, bien que je ne sois pas certain de tout comprendre, faute de connaître, à voir?

[b]Bon, merci, évidemment, mais mon curseur, t'aurais une idée, car en fait la question portait sur lui l'air de rien ?
/b

Au plaisir, cordialement, Joe
Commenter la réponse de ehjoe
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 29 déc. 2011 à 22:52
0
Merci
Bonjou à tous,

Ça y est c'est trouvé :

Sub ListBox1_GiveFeedback(sender As Object, e As System.Windows.Forms.GiveFeedbackEventArgs) Handles ListBox1.GiveFeedback
    e.UseDefaultCursors = False
    Cursor.Current = New Cursor(My.Resources.vaBmp.GetHicon)
End Sub


Et c'est seulement l'image BMP dans ce cas qui est accepté (en ressource).

Merci encore (hum), cordialement, Joe.
Commenter la réponse de ehjoe
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 30 déc. 2011 à 05:19
0
Merci
Content que tu aies trouvé.

J'étais au boulot, et une urgence de Prod m'est tombé dessus, je t'ai filé le code as-is

concernant les Imports
pas utile de les connaitre par coeur.
si tu ne les mets pas, Visual Studio completera pour toi en cas d'ambiguité

Partial est normalement mit pour les classes codées dans plusieurs fichiers
c'est le cas avec ce qui se passe avec le designer... étrange que VB.Net par rapport a C# le cache...

l'Item tout seul inbougeable ?
"pas un bug, une feature" ^^
y'a un test qui gère cela, mauvaise lecture de ton code de base


Drag & Drop que sur certaines listes ?
no soucy, on cible bien les AddHandler en tête de _Load
et on évite les repetitions de code.
e => arguments de l'event
sender => objet déclencheur de l'évent
du coup, plus souple que les groupe de controles ^^

Tu vois que ton code est bien plus long que ce qu'on peut faire en .Net ^^

Et encore, je t'ai pas filé ton code autour des .txt
ton code fait froid dans le dos
Je dis pas qu'il ne fonctionne pas, je dis qu'il n'est pas pensé autour de .Net

dommage, quand on code dans ce langage...

pour la structure, m'évitait de laisser trainer concerne et autres variables.
tout rentre dans le Data de mon Drag&Drop


Encore une fois, pas regardé l'icone, mais j'ai géré l'urgence au taff ...

je te re-soumet le code .Net-isé dans la journée


For Each c As Char In "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Je n'ai jamais appris, mais j'en ai pas besoin puisque la preuve je sais faire autrement?

pas besoin puisque...
avoue que cette boucle est élégante ^^


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 30 déc. 2011 à 10:44
0
Merci
Bonjour Renfield,

Mezrci

Soyons francs, je n'ai pas trouvé, on m'a trouvé sur MSFT, car je posais le bon code, pour le curseur, mais ça ne tournait pas avec un .cur, il fallait mettre un .bmp (enfin, image), heureusement dans le doute j'avais prévu les 3 (cur, ico et bmp).

Reste deux détails dont je me moque, le curseur ainsi fait, sort de la liste sans dommage, et n'est pas transparent au passage entre les deux listes, mais pour ce que je veux en faire ça va.

----

Tu programmes manifestement très bien, mieux que moi et tu maîtrises à la perfection l'utilisation rationnelle de ton code, c'est excellent...

Toutefois, je n'ai aucune intention d'entrer dans vbNet si le code vb6 ou son principe tourne, car j'en ai marre de changer : Mon but est la création de logiciels individuels pour PC, ludiques ou utilitaires, mais statiques ; et je fais ça très bien avec ce que je connais, le reste je men moque, non pas par mépris, mais parce que je ne vais pas passer ma vie à apprendre la même chose de différentes façons sous prétexte que celui qui m'oblige à faire ça, le fait juste pour ramasser du blé... Preuve en est, à quatorze ans d'intervalle, j'aurais pu faire le même petit utilitaire en vb6, que celui là en vbNet, et ils fonctionneraient exactement de la même façon pour l'utilisateur, alors moi, le progrès à rebours, non merci !

Tu sais très bien, bien que tu ne veuilles le concéder, qu'on pouvait adapter la Framework pour qu'elle avale tous le code vb6 (qu'on aurait mis en vb7 avec une uniformatisation d'appellation des objets et propriétés et le codage de nouvelles technologie), à la place ils ont décidé d'arrêter le code le plus répandu sur Terre, ce n'est pas rien, mais moi je ne suis plus la mode, désolé, je conserve le Jean?

J'ai fait du basic sous CPM, puis j'ai du faire du BAL (ProloguE de Bull France), multi-postes, tâches et imprimantes en 1984, alors que MsDos savait à peine qu'il existait, puis j'ai du faire du Qbasic, du TC3++ et de l'ASM5 (oubliés) pour aller vers Windows qui avait rattrapé Bull et avait donc plus d'audience, de logiciels, de facilités. Et enfin, à la première vraie réussite de MST avec windows 95, je suis passé au vb4 (je crois). Et durant 17 ans j'ai développé dans ce langage, et tu voudrais désormais que j'en change, ben tu peux toujours courir, faudra que j'y sois obligé !
Plus on avance et plus on recule et plus le code est complexe sans utilité autres que des stratégies financières, je ne veux pas passer mon temps là dedans !

Alors je ne bougerai pas, je poursuivrai la programmation de code, en faisant mes bases de données, ou mes fichiers indexés en txt ou en bin, en code, à la main, car je sais que ces fichiers tournent aussi bien en CPM qu'en vbNet2011, car je sais que le but de la programmation c'est de faire le maximum en code durables des dizains d'années, c'est d'obtenir le résultat voulu à une vitesse satisfaisante, la mode du dernier code je m'en balance.

D'autant que je n'ai, ni le niveau en math, ni en anglais, alors mon plaisir c'est de coder, de créer, de trouver une solution rationnelle à un problème, que cette solution soit optimisée ou non n'a aucune importance pour l'utilisateur, du moment que ça tourne dans les temps et que ça reste acceptable, in nomine patris, et filii, et spiritus sancti?

Mais merci encore, à bientôt avec plaisir, cordialement, Joe.
Commenter la réponse de ehjoe
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 30 déc. 2011 à 11:04
0
Merci
ico / bmp.... donc .cur surement aussi...
voir :
New Cursor(My.Resources.vaIco.Handle)

pour la transparence, prévoir surement non pas un bmp mais un png, devrait fonctionner (pas testé)

question, pourquoi ne pas poursuivre le codage en VB6, au final ?
il est toujours dispo au téléchargement sur le site de Microsoft...

NB. Je ne cherche pas a te faire changer fondamentalement, mais du code corrigé, c'est pas plus mal pour la maintenance de celui-ci ^^

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 30 déc. 2011 à 12:18
0
Merci
Renfield,


question, pourquoi ne pas poursuivre le codage en VB6, au final ?
il est toujours dispo au téléchargement sur le site de Microsoft...


Non, je l'ai acheté le vb6, j'ai la version "pro".

Je ne poursuis pas avec pour trois raisons :
- Quasiement plus de support forum.
- Peur que MST le rende lentement caduc indirectement pr l'OS ou la Framework.
- Adaptation difficile aux nouvelles technologies du fait qu'il n'évolue plus.

Cordialement, Joe.
Commenter la réponse de ehjoe

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.