|
I want to change the back color of a column in a listview control. I thought I was on the right track by capturing the backgrounderase message and then using this routine
Try<br />
If Not Me.mcolSelectedCol.Equals(Nothing) And Not e.Header.Equals(Nothing) And Me.View = View.Details Then<br />
If Me.clv1.HeaderHandle.ToInt32 <> 0 Then<br />
'Dim int As Integer = SendMessage(Me.clv1.HeaderHandle, Win32.WindowsMessages.HDM_GETITEMCOUNT, 0, 0)<br />
Dim rec As Win32.RECT = Me.arrRects(mintCurColumn)<br />
Dim sz As New Size(rec.right - rec.left, rec.bottom - rec.top)<br />
Dim g As Graphics = Graphics.FromHdc(e.Msg.WParam)<br />
g.FillRectangle(New SolidBrush(Color.Red), rec.left, Top, rec.right - rec.left, Height)<br />
End If<br />
<br />
End If<br />
Catch ex As Exception<br />
<br />
End Try
But no luck as of yet. I have some c# code, but I can't seem to get through all the extra stuff to just pull this code. Any help would be great.
TIA
|
|
|
|
|
Found how to do it.
Friend Const LVM_SETSELECTEDCOLUMN As Integer = (LVM_FIRST + 140)
SendMessage(lstView.Handle, Win32.WindowsMessages.LVM_SETSELECTEDCOLUMN, ColumnIndex, 0)
lstview.invalidate()
|
|
|
|
|
how to search for a specific record in a database using a Button on vb.net?
|
|
|
|
|
The button does nothing for the database, it raises an event. Your code which catches the event is free to do whatever it likes, including connecting to the database, runing some SQL ( which may well return a search result ), and then doing what ever it likes with the result ( which could include displaying it to the user )
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
|
Hi.
I want to change a file name:
filename.jpg.lnk
to read:
filename_t.jpg
I know that I can shave off the .lnk with:
file.Name.Replace(".lnk", "")
But how can I also add the "_t" to the final file name?
Thanks
Brad
|
|
|
|
|
You could split the filename up into substrings using the .Split() method. Then just modify the individual substring however you want, then paste them back together again:
Dim myFile As New FileInfo("filename.jpg.lnk")
Dim filenameParts As String() = myFile.Name.Split(".")
Dim newFilename As String = filenameParts(0) & "_t." & filenameParts(1)
It's up to you to add an error checking code you want and conditional statements to make sure that it is, indeed, OK to modify the supplied filename the way you want.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
|
How can I display the the line I have just highlighted in a datagrid.
e.g.
ID Surname Forename Department
1 Smith Alan Sales
2 Brown Liz Accounts
3 Green Peter Sales
These are the values I have on my datagrid. If I highlight ID 2, how can I display the values. These values I am going to use on another form so to modify certain values.
Does this make sense?
|
|
|
|
|
i'm not sure i understand your sentence how can I display the values ?
what do you call "display" here ? i think it is already displayed 'cause you already see it on the screen...
anyway, you can use DataGrid.CurrentRowIndex() and DataGrid.CurrentCell() to recover the cells of the selected row on the DataGrid...
TOXCCT >>> GEII power [toxcct][VisualCalc]
|
|
|
|
|
hi, all
i am going to implement a WinForm Control which contain a picturebox control , i want to draw lines on the picturebox , when i drags the mouse(left button) , a straight line will be drawn, and whenever i right clicked on one of the lines , it will disappear, how to implement this by GDI+ , can anybody post some sample code here or some URL may helpful.
any suggestion would be appreciated! thanks a lot
best regards,
nick kong
debug.writeline("am i sexy")
|
|
|
|
|
the only way I know of to get rid on lines is to refresh the control. This will get rid of all the lines though. I would use an array to either save the line draw info.
|
|
|
|
|
thank you, Mr.anonymous,
you mentioned use array to save line draw info, can you show me some sample code ? i made some pseudo code like this
i define a structure to store information of the line cooridanites , like this :
structure LineInfo
strartPoint as point
endPoint as point
myColor as color
paintORnot as boolean
end structure
but i think it's useless, base on these infomation , i can not find the line i want to erase, and when i drew thourands of lines, the search procedure would cost huge system resource, i think , right?
what u think of this ?
thanks ,
nick
debug.Writeline("am i sexy")
|
|
|
|
|
GDI+ is responsible for drawing lines. I'd ditch the picturebox and just draw your image on screen. I can't imagine it will add anything and could be a pain.
Undo works one of two ways.
1. Keep copies of all your bitmaps every time a drawing event occurs, so you can go back through them
2. Keep all your actions in a list, so you can remove one, and apply the rest to the original image, resulting in an undo
1. is easier to write, 2. is more memory friendly and flexible.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
As for what I was thinking with the array is sort of what the last answer says. I would make a structure or class that holds the start position and the end position. Then create a new instance of it and add it to the array on the mouseup event. The hard part would be getting the correct line when a right click is done. Are the lines just verticle/horizontal, or will they go diagonal?
|
|
|
|
|
lespaul36 wrote:
The hard part would be getting the correct line when a right click is done.
No, that's pretty easy, just basic trig. Assuming it would be a drawing package, and not straight undo/redo stuff.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
"Assuming it would be a drawing package,and not straight undo/redo stuff."
in another words , it means ....??
|
|
|
|
|
In other words, a drawing package would allow you to select a line by clicking on it, so you could move/undo any line you like. A paint package would not allow this, it would allow you to simply undo the lines, with a stack so that you could only undo the most recent line first.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
do u have any tech document about drawing package ,
can u show me some URL ?
i think i should take some basic ideal about that first,thanks
|
|
|
|
|
Microsoft has a demo VB.NET program called 'Fotovision' It impliments an undo/redo action list.
As for the maths, if you have a line from 8, 20 to 47, 100, then the triangle is 8, 20 to 8, 100 to 47, 100. Actually, if you work out the ratio for x and y, which is width/height ( (47-8)/(100-20), or 39/80 ( basically .5 ). Then, if your point goes across from 8,20 by half as much as it goes down, the point is on the line.
I'm sure there are plenty of resources online for finding if a point is on a line. There may even be a method in the GDI+ libraries. There is certainly a method for pointinrect, which I'd use first before walking the line myself to see if it's a hit.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Haven' had to do much more that d += 1 lately.
|
|
|
|
|
ye, u r correct, Mr.lespaul36,
the hard part gonna be the erasing of the selected line . all lines go diagonal , i cannot find a good data structure to store the info of a line. i cannot capture which point i right clicked on the line. i cannot stroe all points of a line. then loop to find them,oh, i am confused
|
|
|
|
|
nickong wrote:
the hard part gonna be the erasing of the selected line
That's not what he said, and you DON'T erase any lines. You either redraw all the lines except that one, on the starting image, or you simply replace the entire bitmap ( or a section of it), so that the line is just not there. You NEVER take the image with the line and try to replace it with the pixels that were there before.
nickong wrote:
cannot capture which point i right clicked on the line
Do you want to ? You never mentioned this. Oh damn, I think you did. The picture box is the first thing that needs to go. Beyond that, you need to keep an array of the points for each line. This means you can't use the bitmap undo idea, you need to build an action list of lines, which would just contain the two points, and if the colour changes, the colour you use. It's a simple struct.
nickong wrote:
cannot stroe all points of a line.
You don't need to. You just need a little trigonometry. You step through the lines in your array and for each, call a function to see if the point your mouse is at is on the line formed by the triangle created by the two points you've got for your line, and the point you make by drawing straight lines that intersect from the x and y directions.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
thank you very much, Mr. Graus ,
you said ditch the pictureBox , i think your news was too bad for me, most of my work i have already done was base on the picturebox, because i need a scrollable area to display my data . but now, i think it was a mistake. i am looking for other way to implement this.
can u post some sample code to implement "UNDO" here,i need some reference. both C++ or C# are welcome, best in VB.NET, thanks a lot.
best regards,
nick
debug.writeline("am i sexy")
|
|
|
|
|
nickong wrote:
i am looking for other way to implement this.
Easy - put a scroll bar on the screen and use it's position in your OnPaint. Then Invalidate the screen in your event handler for scroll events.
nickong wrote:
can u post some sample code to implement "UNDO" here,i need some reference. both C++ or C# are welcome, best in VB.NET, thanks a lot.
Not really, sorry. All of my undo/redo code is under NDAs. But the basic idea is either for each draw event to first copy the current image into an array using Clone, or for drawing lines to be encapsulated into a class which you can make an array of.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|