|
Hi,
i find your control very useful, but I need more columns with checkboxes.
Can you include the possibility to add not only text-columns but checkboxes too?
Thanks
T_uRRiCA_N
With the things I don't know, I could fill libraries
|
|
|
|
|
Hello,
Could you please tell how to double-click the column edge line to resize column width for fiting the maximal string width in this column? thank you.
|
|
|
|
|
The Tools.vb TruncateString function tries to work out the string that will fit in a given rectangle, it does this by measuring the string, if it does not fit it removes a char and measures again until it does. This is very slow for large strings, and I've seen it throw out of memory exceptions.
The following function converges on the result and is much faster.
I'm sure there should be a windows API to do this, but after a fair bit of looking nothing presented itself...
Let me know if there is a nice API that says the first x chars from this string will fit in this rect.
Public Shared Function TruncateString(ByVal aText As String, ByVal fontVal As Font, ByVal aWidth As Integer, ByVal aOffSet As Integer, ByVal aGr As Graphics) As String
Dim Sz As SizeF
' This function was very slow if large amounts of data were added
' This algorthum converges on teh solution, and is MUCH faster
Dim min As Integer = 0
Dim max As Integer = aText.Length
Dim testValue As Integer = Math.Min(200, max)
While (min < max)
Dim lastTestValue As Integer = testValue
Sz = aGr.MeasureString(aText.Substring(0, testValue), fontVal)
If Sz.Width > (aWidth - aOffSet) Then
If testValue = CInt(min + ((max - min) / 2)) Then
max = testValue - 1
End If
testValue = CInt(min + ((max - min) / 2))
ElseIf Sz.Width < (aWidth - aOffSet) Then
If testValue = CInt(min + ((max - min) / 2)) Then
min = testValue + 1
End If
testValue = CInt(min + ((max - min) / 2))
Else
' result
Return aText.Substring(0, testValue)
End If
End While
Return aText.Substring(0, testValue)
End Function
|
|
|
|
|
I don't know where the problem occurs but when i scroll using the mouse button or even clicking on the vertical scrollbar i have an error in my project using this control.
The message in Visual Studio is "NullReferenceException was undhandled". I try the tips for this kind of error i found in the VB troubleshoot database, but nothing work.
Each time the value in the controls are more then it's width, and that i use the vertical scrollbar i have an error.
If i resize the window in order to display all the lines in one single view everything seems to work fine.
Can someone help me understand and maybe correct this problem?
Best regards
|
|
|
|
|
I had the same problem. After several try and inspecting the code, I understood that RowHeight property shows unexpected behaviour. It works ok with default size of 16, you might have changed it to some other value. Keep it 16, it will work.
Thanks.
|
|
|
|
|
Yes i have the same Problem.
Default hight 16 works but all other crashs.
Its also the same in the sample.
I am not able to fix it. Usually anyone else?
|
|
|
|
|
hello,
try this fix, in the Function _findFirstNode in TreeListView.vb module, correct the bug
Return Me._findFirstNode(aStartingNode.NextSiblingNode, aStartingPoint - ((KidsCount + 1) * 16))
to:
Return Me._findFirstNode(aStartingNode.NextSiblingNode, aStartingPoint - ((KidsCount + 1) * Me.RowHeight))
in order to adapt for RowHeight property
|
|
|
|
|
This is very good programs.
Can you tell me how to find specific text.
Sadavarte U.S.
|
|
|
|
|
Is it possible to assign a specific image to a cell in the table rather than to the main tree portion?
Thanks
|
|
|
|
|
Hello,
i found a problem with myself.
I can´t found the "SelectedNode"-Property in the Treelistview.
The property doesn´t exist, and the "SelectedItems" haven´t got any property for "ParentNode" or something
else.
Now, how can i get the item? I wanted to remove the selected (sub-)node, but i can´t get it :-/
Thanks for help!
TBR
|
|
|
|
|
You have to cast the SelectedItem to a TreeListNode as the 'SelectedItems' property is inherited from the base class:
DirectCast(Me.SelectedItems(0), TreeListNode).ParentNode
|
|
|
|
|
Thanks,
i didn´t know i have to cast it
TBR
|
|
|
|
|
Very nice job. I've been looking for something like this.
In my search for a good open-source treelistview control I also came across this commercial one:
http://www.devcomponents.com/dotnetbar/treeviewcontrol.aspx[^]
The capability they have that is pretty cool is to define separate columns (with column header visible or not) for child nodes.
Any chance of something similar making it into your TreeListView?
|
|
|
|
|
I am very interested in using the control under VB6, as it is listed to work with this version, but found no way to register it.
Can someone help me?
Regards
|
|
|
|
|
You might be better off just use those that create just for VB6
http://www.vbaccelerator.com/home/VB/Code/Controls/TreeView/Multi-Column_TreeView_Control/article.asp
|
|
|
|
|
There is a possibility to change the size of the image?
|
|
|
|
|
How to add custom control to the subitems? I have used the "subitems.add(control ctrl)" method to add, but it doesn't work. the result shows "subtems -1" in the cells.
|
|
|
|
|
I have fixed this bug, if anyone is interested I can give a copy of the fixed DLL's and/or Source.
|
|
|
|
|
Can you send me a copy of fixed source.
My Email is rqx110@163.com.
Thanks.
|
|
|
|
|
Hi!
can you send the DLLs and the source to:
alsiggi2@googlemail.com
Many thanks in advance ...
|
|
|
|
|
I would be glad, if you could send me the dll to sven (dot)laufersweiler (at) web (dot) de
|
|
|
|
|
if you couldn't upload the bugfix here, please send the files to b.o.c.k.y at web dot de.
Thanks
|
|
|
|
|
Is it too much to just post the code change here?
If so, please send source to tsrymer "at" hotmail "dot" com
|
|
|
|
|
Just to reply to my own post and for anyone else's benefit...
The changes required to show the actual control instead of "SubItems -1" are:
In the ContainerListViewObject class, the actual control isn't being assigned to the _ChildControl variable. Change:
Public Sub New(ByVal aControl As Control)
Me._constructControl(aControl)
End Sub
to
Public Sub New(ByVal aControl As Control)
Me._ChildControl = Me._constructControl(aControl)
End Sub
In the TreeListView usercontrol class, you need to clear the controls before it gets redrawn. Change/add a line:
Me._TotalRend = 0
Me._NodeRowRects.Clear()
Me._PlusMinusRects.Clear()
MyBase._CheckBoxRects.Clear()
Me._ImageRects.Clear()
to
Me._TotalRend = 0
Me._NodeRowRects.Clear()
Me._PlusMinusRects.Clear()
MyBase._CheckBoxRects.Clear()
Me._ImageRects.Clear()
Me.Controls.Clear()
I think that's all I did...
|
|
|
|
|
I use this TreeLisView within a solution of mainly c# projects, and do not have any experience with vb.
I applied these changes and fill some Test data in and now have following Problem:
If I add a String
TreeListNode1.SubItems.Add("87%")
everything still works fine but if I want to add a ProgressBar:
ProgressBar battery_1 = new ProgressBar();
battery_1.Value = 87;
tuer1.SubItems.Add(battery_1);
Only the Progressbar will be shown, everything else is replaced by a single one red x. So far I figured out that this is part of exception handling within Winforms and that for some reason the Sub "OnDrawRows"
in TreeListView.vb is called again while computing this while-Loop:
Me._TotalRend = 0
Me._NodeRowRects.Clear()
Me._PlusMinusRects.Clear()
MyBase._CheckBoxRects.Clear()
Me._ImageRects.Clear()
Me.Controls.Clear()
While (NodeDraw IsNot Nothing AndAlso MaxRend > RenderedSoFar)
Me._renderNodeRows(NodeDraw, aGr, Rect, RenderedSoFar)
RenderedSoFar += 1
Me._TotalRend += 1
NodeDraw = Me.GetNextNode(NodeDraw)
End While
and therefore trying to draw the same elements twice, resulting in this problem.
I might add:
.net Framework 4.5
Visual Studio Express 2012
Any help is appreciated
modified 19-Dec-13 9:10am.
|
|
|
|