|
|
hi all
its been a while since i've worked on a VB program and im currently facing difficulties with the following code.I'm trying to create a diagram with nodes which you can manipulate and enter data.So far the program creates the nodes with numbered text by dragging the node and moves them by right click them.I want to be able to go back and delete any node i want plus to be able to access the nodes(enter text,extra form with info that the user will give)
If you can provide pointers or links to example code or literature, it
would be appreciated.
just copy-paste the code on a class module and a form with an image control-index property must be set to 0
' [ Class1 ] ------------------------------------------------
Option Explicit
Public X As Long
Public Y As Long
Public Text As String
Public Handle As Image
Again Thanks
Public Kids As New Collection
Friend Sub RenderLines(Surface As Variant)
Dim Item As Class1
'Connect lines first, then do circles/text
For Each Item In Kids
Surface.Line (X, Y)-(Item.X, Item.Y), vbBlack
Item.RenderLines Surface
Next
End Sub
Friend Sub RenderText(Surface As Variant)
Dim Item As Class1
' draw the circles and text
Surface.Circle (X, Y), 500, vbBlack
Surface.CurrentX = X - Surface.TextWidth(Text) \ 2
Surface.CurrentY = Y - Surface.TextHeight(Text) \ 2
Surface.Print Text;
For Each Item In Kids
Item.RenderText Surface
Next
Handle.Move X - 500, Y - 500, 1000, 1000
End Sub
Public Function Locate(ByVal Index As Long) As Class1
Dim kid As Class1
Dim test As Class1
' reutrns the class whose handle has a certain Index
If Handle.Index = Index Then
Set Locate = Me
Else
For Each kid In Kids
Set test = kid.Locate(Index)
If Not test Is Nothing Then
Set Locate = test
Exit For
End If
Next
End If
End Function
' [ Form1 ] -------------------------------------------------------
Option Explicit
Private Node As Class1
Private Drawing As Boolean
Private StartX As Long, StartY As Long
Private OldX As Long, OldY As Long
Private StartNode As Class1
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
DropIt Source, X, Y
End Sub
Private Sub Form_Load()
Me.FillStyle = vbFSSolid
Me.FillColor = vbWhite
Me.DrawWidth = 2
Set Node = NewItem(ScaleWidth \ 2, ScaleHeight \ 2, "Root", Image1(0))
End Sub
Private Sub Form_Paint()
Node.RenderLines Me
Node.RenderText Me
End Sub
Private Sub Image1_DragDrop(Index As Integer, Source As Control, X As Single, Y As Single)
Dim img As Image
Set img = Node.Locate(Index).Handle
DropIt Source, img.Left + X, img.Top + Y
End Sub
Private Sub Image1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
'Select Draw Mode
Drawing = True
DrawMode = vbInvert
DrawStyle = vbDot
'Store start values
Set StartNode = Node.Locate(Index)
StartX = StartNode.X
StartY = StartNode.Y
OldX = X + StartNode.Handle.Left
OldY = Y + StartNode.Handle.Top
Else
OldX = X
OldY = Y
Node.Locate(Index).Handle.Drag vbBeginDrag
End If
End Sub
Private Sub Image1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim XX As Long, YY As Long
If Drawing Then
' Convert Image click to Form coordinates
XX = X + StartNode.Handle.Left
YY = Y + StartNode.Handle.Top
'Erase old line
Line (StartX, StartY)-(OldX, OldY), vbBlack
'Draw new line
Line (StartX, StartY)-(XX, YY), vbBlack
OldX = XX
OldY = YY
End If
End Sub
Private Sub Image1_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Drawing Then
Drawing = False
DrawMode = vbCopyPen
DrawStyle = vbSolid
' Create a new Image control, make it visible
Load Image1(Image1.Count)
Image1(Image1.Count - 1).Visible = True
' Add a new item to the node
Node.Locate(Index).Kids.Add NewItem(X + StartNode.Handle.Left, _
Y + StartNode.Handle.Top, CStr(Image1.Count - 1), _
Image1(Image1.Count - 1))
Refresh
End If
End Sub
Private Function NewItem(ByVal X As Long, ByVal Y As Long, Text As String, Handle As Image) As Class1
Set NewItem = New Class1
With NewItem
.X = X
.Y = Y
.Text = Text
Set .Handle = Handle
End With
End Function
Private Sub DropIt(Source As Image, ByVal X As Long, ByVal Y As Long)
Dim This As Class1
' Drops item
Set This = Node.Locate(Source.Index)
This.X = X - (OldX - 500)
This.Y = Y - (OldY - 500)
Source.Drag vbEndDrag
Refresh
End Sub
|
|
|
|
|
Hi all,
In the treeview , when clicking at the A: drive tells
There is no disk in Drive Please insert the disk to continue.Can u help me to find whether the disk is already inserted or not.
Bye
|
|
|
|
|
There is no way to tell unless you try to access the root directory of the drive.
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
constantinejones wrote: In the treeview , when clicking at the A: drive tells
There is no disk in Drive Please insert the disk to continue.Can u help me to find whether the disk is already inserted or not.
I used to see this demonstration from AppDev training CD about VB.Net on the section of working with error handling. They test with the diskette in the drive. I think you should learning to use error handling[^] in vb.net then you would be able to learn what you need.
|
|
|
|
|
Hi All,
I would like to create an activex control which should change the browser settings , like enabling the javascript etc.
Regards
Srinivasa Rao. S
|
|
|
|
|
|
Hi, I have a question relate to open file dialog and list box in vb.net. Currently I have:
One text box
One browse button
and one list box
My purpuse is:
1. Click on browse button and multiple select the file that I need.
2. When user click open, return the file path to text and display all file name that i multiple select in list box.
I could do the step 1 but I could not do the step 2. Here is my code that didn't work as my expectation:
Private Sub btnBrowse_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnBrowse.Click
Try
With ofdOpenData
' Start to open file in My document folder by default.
.InitialDirectory = System.Environment.GetFolderPath( _
Environment.SpecialFolder.Personal)
.Filter = "All Files (*.*)|*.*|Microsoft Access Database " & _
"(*.mdb)|*.mdb"
.DefaultExt = "mdb"
.ShowDialog()
Dim dlgResult As DialogResult
If dlgResult <> DialogResult.Cancel Then
' Clear the list box to get the new itmes.
lstFilesList.Items.Clear()
txtBrowse.Text = .FileName
lstFilesList.Items.AddRange(.FileNames)
End If
End With
Catch ex As Exception
MsgBox(Err.Description.ToString, , "Error")
End Try
End Sub
What i get is all file name with its folder path display in the list box and the text box display the last select file name and its path.
Can anyone help me?
|
|
|
|
|
Hi,
I am automating MS Word using VB .Net . What I want is that I want some text to be inserted on the word document that I have opened. Once I have done this when my mouse moves above this line of text, the cursor should change to hand cursor and the text should behave like a hyperlink i.e. when that text is clicked, it should take the user to some other location.
How can I achieve this.
Thanks in advance,
Aryan.
|
|
|
|
|
aakar wrote: I am automating MS Word using VB .Net . What I want is that I want some text to be inserted on the word document that I have opened. Once I have done this when my mouse moves above this line of text, the cursor should change to hand cursor and the text should behave like a hyperlink i.e. when that text is clicked, it should take the user to some other location.
Try to check this resource[^] and look at the final section that import data from ms access to word. This might give you some idea to insert your own data.
|
|
|
|
|
how to create the MDB programmatically?
|
|
|
|
|
|
Thanks. exactly what i was seraching for.
|
|
|
|
|
changeez wrote: Thanks.
You are welcome, I'm very happy to support you
|
|
|
|
|
HI
Can anyone tell me, From where can I get the VB.NET AND ASP.NET E-BOOKS OR TUTORIALS free in PDF format using Visual Studio.NET 2003...?
Thank You
|
|
|
|
|
|
|
|
I create a DataGrid1, the data from a database table.
A column it is called ID, the data type is integer =1,2,3,4,5,6 ….
Now I just want to convert the integer to a string.
Select id
Case 1
DataGrid1.Item(i)=”aaaaa”
Case 2
DataGrid1.Item(i)=”bbbbb”
Case 3
DataGrid1.Item(i)=”ccccc”
Case 4
DataGrid1.Item(i)=”ddddd”
Case 5
DataGrid1.Item(i)=”eeeee”
.
.
.
End select
The error message is “cannot be converted to type 'String'”
Email me:xuweiying@yahoo.com or wxu@stantec.com
Wayne Xu
|
|
|
|
|
I need a file dialog that I can set to browse files on a remote machine. How can I limit (or set the root folder) what the users sees so that it only displays the remote machines info?
I'm looking for functionality similar to sql server ent mgr create db dialog. When you specify the sql server db mdf/ldf file paths it restricts you to the folders on the remote sql server machine.
How can i do this?
Thanks
Glenn
|
|
|
|
|
isgrom wrote: I need a file dialog that I can set to browse files on a remote machine. How can I limit (or set the root folder) what the users sees so that it only displays the remote machines info?
Try to read an article relate to Open File dialogbox[^] check the properties of IntialDirectory and set it it in the run time code to point to any remote machine that you prefer (Exp: \\RemoteHost\ )
|
|
|
|
|
Yes I can set the initial directory but how to I set its root also to that location so the user is restricted to directories on the remote machine (do I don't see my current machines dir info) Figure that one out. I can't.
Thanks
Glenn
|
|
|
|
|
isgrom wrote: Yes I can set the initial directory but how to I set its root also to that location so the user is restricted to directories on the remote machine (do I don't see my current machines dir info) Figure that one out. I can't
You have to know the share name of the folder that share resource to you. Without the appropriate share name your user will see a list of share in the remote machine that he is access too. If possible, you should define a policies of creating a share name convention which point to only the specific resource. But if you want to make it dynamic based on the requirement of your user, i suggest you to prompt the user with inputbox function to allow the user to enter the specific naming convention to the share resource that he or she need to access to.
|
|
|
|
|
Hi
I have a combobox which should show folders+files when user types (like Run in windows) I use SHAutoComplete API to give it this ability.
The problem is that in most occasions (!!) when I complie the program (written in vb6) the AutoComplete window (which is shown as user types in the combobox) only shows folders while I set the flag to 0x0 which should show Folders and files. The strange part is that in some occasions this works perfect!
I am totally mixed up!
I'd be glad if someone could help me.
|
|
|
|
|
Try to read this article[^], it might give you some idea relate to your issue.
|
|
|
|