Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[vb.net 2005] - Création & Récupération de propriété

9 réponses
Avatar
Scottmat
Bonsoir à tous
Franchement merci aux personnes qui me répondront pcq je suis en panique
total !!!
Sa doit être tout simple, une petit bout de ligne de code mais j'arrive pas
à voir comment
je l’ai poster à nombreuse reprise un peu partout, mais sans résultat :(
Voici mon petit problème :
Je voulais insérer une image dans un Richtextbox tout simplement
et j'ai voulu rajouter une propriété "Emplacement" (qui enregistrerai
l’emplacement de l’image qui à été insérer)

D’abord une classe générale (avec ma nouvelle propriété) :

Public Interface Element
Property Emplacement() As String
End Interface

Puis propre à l’objet image :
Imports System.ComponentModel
<Serializable()> Public MustInherit Class IMGElement
Implements Element
Dim _sEmplacementImG As String = ""
Dim ImG As New System.Drawing.Rectangle

Public Property EmplacementImG() As String Implements Element.EmplacementImG
Get
Return _sEmplacementImG
End Get
Set(ByVal value As String)
_sEmplacementImG = value
End Set
End Property
End Class

Ensuite la class qui définit l’ajout dans le Richtextbox de l’élément :

Public Class RectangleSimple
Inherits IMGElement
Public Sub add_pictures_to_rtb(ByVal pic As Image, ByVal rtb As RichTextBox,
ByVal index As Integer)
Dim a As Integer
Dim b As Integer
Dim tmpobj As Object
tmpobj = Clipboard.GetDataObject
Clipboard.SetDataObject(pic)
a = rtb.SelectionStart
b = rtb.SelectionLength
rtb.SelectionLength = 0
rtb.SelectionStart = index
rtb.Paste()
Clipboard.SetDataObject(tmpobj)
If index >= a Then a += 1
rtb.SelectionStart = a
rtb.SelectionLength = b
End Sub
End Class

Et pour terminer le code qui insérera l’élément à l’aide d’une boite de
dialogue (sur un événement bouton) :
Private Sub BtnInsertImg_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnInsertImg.Click
Try
Dim a As New RectangleSimple ()
Dim OpenFiles As New OpenFileDialog

OpenFiles.Filter = "Tous les Fichiers (*.*)|*.*"

OpenFiles.FilterIndex = 2
OpenFiles.RestoreDirectory = True
OpenFiles.Title = "Inserer une image"

If OpenFiles.ShowDialog = Windows.Forms.DialogResult.OK Then
a.EmplacementImG = OpenFiles.FileName
a.add_pictures_to_rtb(New Bitmap(OpenFiles.FileName), Richtextbox,
Richtextbox.SelectionStart)
End If

Catch ex As Exception
MessageBox.Show("Impossible d'inserer cette image !", MessageBoxButtons.OK,
MessageBoxIcon.Warning)
End Try
End Sub

Donc j’ai créé ma propriété EmplacementImG. J’ai affecté la valeur de cette
propriété par l’emplacement d’origine de l’image quand l’on clique sur OK de
la boite de dialogue " Inserer une image".

Le problème c’est que je n’arrive pas à récupéré cette propriété lorsque
l’utilisateur sélectionne une image.
=> Un Object (Class image) créer dans un autre objet (richtextbox) ! Comment
faire ???? Je crack j'ai passer trop de nuit & d'heure dessus et je n'arrive
pas a comprendre comment récupéré cette valeur !!

Sa doit etre tout béte à mon avis ...

Merci par avance en tout cas, à celui ou celle qui m’aidera

9 réponses

Avatar
Millox Frédéric
Salut Scottmat,

Tes différentes classes d'abord ( avec une petite modification ) :

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

Public Interface Element
Property Emplacement() As String
End Interface

<Serializable()> Public MustInherit Class IMGElement
Implements Element
Dim _sEmplacementImG As String = ""
Dim ImG As New System.Drawing.Rectangle

' MODIF : Implements Element.Emplacement au lieu de Implements
Element.EmplacementImG
Public Property EmplacementImG() As String Implements Element.Emplacement
Get
Return _sEmplacementImG
End Get
Set(ByVal value As String)
_sEmplacementImG = value
End Set
End Property
End Class

Public Class RectangleSimple
Inherits IMGElement
Public Sub add_pictures_to_rtb(ByVal pic As Image, ByVal rtb As
RichTextBox, ByVal index As Integer)
Dim a As Integer
Dim b As Integer
Dim tmpobj As Object
tmpobj = Clipboard.GetDataObject
Clipboard.SetDataObject(pic)
a = rtb.SelectionStart
b = rtb.SelectionLength
rtb.SelectionLength = 0
rtb.SelectionStart = index
rtb.Paste()
Clipboard.SetDataObject(tmpobj)
If index >= a Then a += 1
rtb.SelectionStart = a
rtb.SelectionLength = b
End Sub
End Class

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

puis une Windows form de base avec un richtextbox et deux boutons : un pour
insérer une image et l'autre pour afficher son emplacement.

Private a As New RectangleSimple

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Try
Dim OpenFiles As New OpenFileDialog

OpenFiles.Filter = "Tous les Fichiers (*.*)|*.*"

OpenFiles.FilterIndex = 2
OpenFiles.RestoreDirectory = True
OpenFiles.Title = "Inserer une image"

If OpenFiles.ShowDialog = Windows.Forms.DialogResult.OK Then
a.EmplacementImG = OpenFiles.FileName
a.add_pictures_to_rtb(New Bitmap(OpenFiles.FileName),
Richtextbox, Richtextbox.SelectionStart)
End If

Catch ex As Exception
MessageBox.Show("Impossible d'inserer cette image !",
MessageBoxButtons.OK, MessageBoxIcon.Warning)
End Try
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
MsgBox(a.EmplacementImG)
End Sub

Je bosse sous Visual Studio 2003 et ça a l'air de marcher.....

Tiens moi au courant.

A+

--
fmillox


"Scottmat" a écrit :

Bonsoir à tous
Franchement merci aux personnes qui me répondront pcq je suis en panique
total !!!
Sa doit être tout simple, une petit bout de ligne de code mais j'arrive pas
à voir comment
je l’ai poster à nombreuse reprise un peu partout, mais sans résultat :(
Voici mon petit problème :
Je voulais insérer une image dans un Richtextbox tout simplement
et j'ai voulu rajouter une propriété "Emplacement" (qui enregistrerai
l’emplacement de l’image qui à été insérer)

D’abord une classe générale (avec ma nouvelle propriété) :

Public Interface Element
Property Emplacement() As String
End Interface

Puis propre à l’objet image :
Imports System.ComponentModel
<Serializable()> Public MustInherit Class IMGElement
Implements Element
Dim _sEmplacementImG As String = ""
Dim ImG As New System.Drawing.Rectangle

Public Property EmplacementImG() As String Implements Element.EmplacementImG
Get
Return _sEmplacementImG
End Get
Set(ByVal value As String)
_sEmplacementImG = value
End Set
End Property
End Class

Ensuite la class qui définit l’ajout dans le Richtextbox de l’élément :

Public Class RectangleSimple
Inherits IMGElement
Public Sub add_pictures_to_rtb(ByVal pic As Image, ByVal rtb As RichTextBox,
ByVal index As Integer)
Dim a As Integer
Dim b As Integer
Dim tmpobj As Object
tmpobj = Clipboard.GetDataObject
Clipboard.SetDataObject(pic)
a = rtb.SelectionStart
b = rtb.SelectionLength
rtb.SelectionLength = 0
rtb.SelectionStart = index
rtb.Paste()
Clipboard.SetDataObject(tmpobj)
If index >= a Then a += 1
rtb.SelectionStart = a
rtb.SelectionLength = b
End Sub
End Class

Et pour terminer le code qui insérera l’élément à l’aide d’une boite de
dialogue (sur un événement bouton) :
Private Sub BtnInsertImg_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnInsertImg.Click
Try
Dim a As New RectangleSimple ()
Dim OpenFiles As New OpenFileDialog

OpenFiles.Filter = "Tous les Fichiers (*.*)|*.*"

OpenFiles.FilterIndex = 2
OpenFiles.RestoreDirectory = True
OpenFiles.Title = "Inserer une image"

If OpenFiles.ShowDialog = Windows.Forms.DialogResult.OK Then
a.EmplacementImG = OpenFiles.FileName
a.add_pictures_to_rtb(New Bitmap(OpenFiles.FileName), Richtextbox,
Richtextbox.SelectionStart)
End If

Catch ex As Exception
MessageBox.Show("Impossible d'inserer cette image !", MessageBoxButtons.OK,
MessageBoxIcon.Warning)
End Try
End Sub

Donc j’ai créé ma propriété EmplacementImG. J’ai affecté la valeur de cette
propriété par l’emplacement d’origine de l’image quand l’on clique sur OK de
la boite de dialogue " Inserer une image".

Le problème c’est que je n’arrive pas à récupéré cette propriété lorsque
l’utilisateur sélectionne une image.
=> Un Object (Class image) créer dans un autre objet (richtextbox) ! Comment
faire ???? Je crack j'ai passer trop de nuit & d'heure dessus et je n'arrive
pas a comprendre comment récupéré cette valeur !!

Sa doit etre tout béte à mon avis ...

Merci par avance en tout cas, à celui ou celle qui m’aidera


Avatar
Scottmat
salut Millox Frédéric et merci de m'avoir répondu (aussi vite en plus :) )
non cela ne marche pas ! enfin sa marche, mais pour la derniére image
insérer, essai d'inserer une deuxiéme image puis revient sur la 1° tu verra
que l'emplacement que l'on obtient est celui de la derniére image inserer
Avatar
Millox Frédéric
Salut Scottmat,

Je ne comprends pas très bien...
J'ouvre la boîte de dialogue, je sélectionne une image -> elle apparaît dans
le RichTextBox.
Je réuvre la boîte de dialogue, je sélectionne une image différente de
l'image selectionnée précedenment -> elle apparaît dans le RichTextBox à la
suite de l'autre image.
Quand tu me dis " revient sur la 1ère ", cela veut dire que je réouvre la
boîte de dialogue et je resélectionne la 1ère image...ou cela veut dire autre
chose...

Bonne journée.
A+

--
fmillox


"Scottmat" a écrit :

salut Millox Frédéric et merci de m'avoir répondu (aussi vite en plus :) )
non cela ne marche pas ! enfin sa marche, mais pour la derniére image
insérer, essai d'inserer une deuxiéme image puis revient sur la 1° tu verra
que l'emplacement que l'on obtient est celui de la derniére image inserer


Avatar
Scottmat
1 - Tu inserer une premiére image (dans le richtextbox bien entendu)
2 - Tu clique sur le bouton pour obtenir l'emplacement de l'image (la
propriété que j'ai rajouter sur l'objet), il s'affiche dans une msgbox
3 - Tu REinserer une seconde image à coter de la 1°
4 - Tu clique sur le bouton et tu obtien l'emplacement de la 2° image !
en fait dans la variable est stocker l'emplacement de la derniére image
insérer, donc impossible de récupéré l'emplacement de la 1° image insérer,
alors que je voudrais que cette valeur soit attaché à l'élément image et
qu'elle soit rechercher au moment ou l'on clique sur le bouton !
Avatar
Mathieu Francesch
Bonsoir ScottMat,

En lisant votre code, il me semble normal que vous n'ayez que le dernier
emplacement car c'est la même instance qui est chargée de mettre l'image dans
le RichtextBox et de stocker son emplacement ... 1 seul objet, un champ de
type scalaire, cela me parait à première vue impossible de faire ce que vous
demandez.

En ce qui me concerne je ne comprends pas comment vous pouvez identifier
l'image que vous sélectionnez dans le RichTextBox. Stocker son index au
chargement de l'image ? (Qu'en est t'il si l'utilisateur décide de rajouter
des espaces entre les images ....), par rapport à la dimension (et si nous
avons deux images de même dimensions ....) j'ai beau cherché, je ne trouve
pas de solution.

Peut être de la stéganographie ? Vous pouvez toujours stocker l'emplacement
directement dans le fichier ! Ce n'est pas très difficile à faire, je
pourrais vous aidez mais bon ... est ce la solution optimale ?

Que voulez vous faire exactement ? Je vous pose cette question pour savoir
si il n'est pas possible de s'orienter vers une autre solution ?


--
Cordialement,

Mathieu Francesch



"Scottmat" a écrit :

1 - Tu inserer une premiére image (dans le richtextbox bien entendu)
2 - Tu clique sur le bouton pour obtenir l'emplacement de l'image (la
propriété que j'ai rajouter sur l'objet), il s'affiche dans une msgbox
3 - Tu REinserer une seconde image à coter de la 1°
4 - Tu clique sur le bouton et tu obtien l'emplacement de la 2° image !
en fait dans la variable est stocker l'emplacement de la derniére image
insérer, donc impossible de récupéré l'emplacement de la 1° image insérer,
alors que je voudrais que cette valeur soit attaché à l'élément image et
qu'elle soit rechercher au moment ou l'on clique sur le bouton !


Avatar
Scottmat
bonjours
je voudrai en fait', convertir ce texte au format RTF en page HTML, pour le
moment TOUT se converti sans probléme, mais ma méthode ne prend pa en compte
les images, voila pourquoi je voudrais sauvegarder l'emplacement de l'image
qui sera REutiliser au moment de la conversion
Avatar
Mathieu Francesch
Bonjour ScottMath,

Je ne sais pas ce que vous en pensez, mais si j'étais vous, comme il s'agit
d'un texte qui est amené à être converti, je ne mettrais pas l'image dans le
richtextbox mais simplement son emplacement balisé par <img> afin de le
distinguer d'un autre chemin qui pourrait être présent dans le fichier de
destination html. Ce n'est certe pas très visuel mais pour arranger ce
problème esthétique, j'imagine 2 onglets l'un Source RTF , l'autre Aperçu
HTML afin que l'utilisateur final puisse voir le résultat. Ou, sélectionner
l'emplacement balisé et , lorsque l'on cliquerait sur un bouton, on pourrait
visualier l'image ... Je ne sais pas si cela pourra vous aider mais dans tous
les cas ces solutions me semblent moins coûteuses. Qu'en pensez vous ?

En attendant, de mon côté je cherche une solution qui correspondrait plus à
vos attentes et qui sait, Frédéric Millox aura peut-être une bonne idée à
vous soumettre.

A bientôt,

--
Cordialement,

Mathieu Francesch



"Scottmat" a écrit :

bonjours
je voudrai en fait', convertir ce texte au format RTF en page HTML, pour le
moment TOUT se converti sans probléme, mais ma méthode ne prend pa en compte
les images, voila pourquoi je voudrais sauvegarder l'emplacement de l'image
qui sera REutiliser au moment de la conversion


Avatar
Scottmat
Merci de vous souciez de mon problème, merci beaucoup
Oui oui voila ! C'est ce que j'ai fais !
Une Parti HTML & Aperçu mais également une partie Rtf pour les utilisateurs
qui ne savent pas manier le code HTML : comme Dreamweaver en fait !
J’ai développé une méthode qui converti le texte (Rtf) en HTML en gardant la
mis en forme, et je voudrais qu'elle prenne en charge les images en ajoutant
un balise <img> avec son emplacement, voila pourquoi je souhaite accéder a la
propriété Emplacement de chaque image existante.
Je souhaiterai absolument garder l'Editeur Rtf
Avatar
Scottmat
bonjours Mathieu, j'ai continuer à chercher mais en vain, j'ai donc fait
comme tu me la conseiller au lieu d'une image.... du code HTML que pour les
images ! C'est sur que niveau esthétique ce n'est pas top mais au moin sa
marche, niquel
je vais utiliser cela pour l'instant en attendant de trouver de gérer les
images.
en tous cas, je voulais te remercier à toi et à tous ceux qui on essayer de
m'aider sur ce sujet qui à durer des mois et des mois

Merci beaucoup à tous ;)

Bon week'end

"Mathieu Francesch" a écrit :

Bonjour ScottMath,

Je ne sais pas ce que vous en pensez, mais si j'étais vous, comme il s'agit
d'un texte qui est amené à être converti, je ne mettrais pas l'image dans le
richtextbox mais simplement son emplacement balisé par <img> afin de le
distinguer d'un autre chemin qui pourrait être présent dans le fichier de
destination html. Ce n'est certe pas très visuel mais pour arranger ce
problème esthétique, j'imagine 2 onglets l'un Source RTF , l'autre Aperçu
HTML afin que l'utilisateur final puisse voir le résultat. Ou, sélectionner
l'emplacement balisé et , lorsque l'on cliquerait sur un bouton, on pourrait
visualier l'image ... Je ne sais pas si cela pourra vous aider mais dans tous
les cas ces solutions me semblent moins coûteuses. Qu'en pensez vous ?

En attendant, de mon côté je cherche une solution qui correspondrait plus à
vos attentes et qui sait, Frédéric Millox aura peut-être une bonne idée à
vous soumettre.

A bientôt,

--
Cordialement,

Mathieu Francesch



"Scottmat" a écrit :

> bonjours
> je voudrai en fait', convertir ce texte au format RTF en page HTML, pour le
> moment TOUT se converti sans probléme, mais ma méthode ne prend pa en compte
> les images, voila pourquoi je voudrais sauvegarder l'emplacement de l'image
> qui sera REutiliser au moment de la conversion