Copying and pasting CENTERED text
We have some celltypes that are textbox. When we get data to load these text boxes, the data is centered. So for example a text box might come up as " Test1 ". There is almost always going to be 2 spaces in the front and 2 at the end of the text. The problem I am having is that when i copy and paste a cell its not copying the spaces. So in my sample the first 2 cols are celltype textbox and the second 2(3,4) are static. I want to know how using a text box can I do a copy and paste and have it grab the spaces when it copies and then have it paste the spaces so the data is still centered. It works how i think it should and how i want it to in the static cell type in cols 3 and 4. Any ideas on this??
copypasteTEXTcenter_9987.zip
SIGN IN To post a reply.
7 Replies
AD
Administrator
Syncfusion Team
October 26, 2004 02:04 PM UTC
Thank you for the sample. Can you explain a little more about how to see the problem?
If I copy and paste within the grid, I see the same things whether colamns A&B are copied and pasted or columns C & are copied and pasted. The spaces are retained in this case. (This is because you have commented out the code that would turn off the Styles copy which is allowing this to happen).
Now if I copy from the grid to Notepad, then I do see the spaces being stripped off. But again, it does not matter whether I am copying from A&B or C & D. This is because going into Notepad makes this a Text paste and not a style paste. The grid has Trim call to strip off leading or trailing spaces in this case to conserve clipboard memory. There is no property setting to control this.
If you do not want this behavior, then you would have to handle the ClipboardCopy event, and do teh work yourself, copying the seelcted cells into a string and include the leading spaces that you want. Here is a forum thread that shows the code the grid uses (including the Trim call that is causing this behavior). You could follow teh approach suggested there to avoid the Trim.
http://www.syncfusion.com/Support/Forums/message.aspx?MessageID=7382
PB
Philip Bishop
October 26, 2004 02:32 PM UTC
Ok sorry i did have that line commented out. We need that in our code but i was testing some stuff right before i sent it and thats why i was getting those results. So yes I just want to be able to copy leading and trailing spaces. I want it to work like excel does. If u go to excel and type in " Test "(minus the quotes) then paste it, you get 2 spaces then Test and then 2 spaces. So i would of thought your cell type or one of your cell types would work like that? This isnt the case? If not, then is what u said before about handling it myself my only option?
AD
Administrator
Syncfusion Team
October 26, 2004 02:49 PM UTC
Yes, you will have to handle this yourself.
I can make adding a property to not include the Trim a feature request, but do not know when we would get to it. It will not be in the 3.0 release as that code base is feature frozen at this point.
PB
Philip Bishop
October 26, 2004 03:10 PM UTC
Any chance u have that sample in VB code??
AD
Administrator
Syncfusion Team
October 26, 2004 03:29 PM UTC
Here is some code you can try. It is a sample that handles ClipboardPaste to avoid copying hidden columns. You can probably use it as is, or you can remove the hidden column checks.
FYI - here is a web link that does a reasonable job of converting C# to VB. http://authors.aspalliance.com/aldotnet/examples/translate.aspx
Private Sub gridControl1_ClipboardCopy(sender As Object, e As GridCutPasteEventArgs)
Dim range As GridRangeInfo = e.RangeList.ActiveRange
If Not range.IsEmpty Then
range = range.ExpandRange(1, 1, Me.gridControl1.RowCount, Me.gridControl1.ColCount)
Dim s As String = ""
Dim data As GridData = Me.gridControl1.Data
Dim row As Integer
While row <= range.Bottom
If Not Me.gridControl1.Rows.Hidden(row) Then
Dim firstCol As Boolean = True
Dim col As Integer
While col <= range.Right
If Not Me.gridControl1.Cols.Hidden(col) Then
If Not firstCol Then
s += ControlChars.Tab
Else
firstCol = False
End If
Dim style As New GridStyleInfo(data(row, col))
s += style.Text
End If
End While
s += Environment.NewLine
End If
End While
Clipboard.SetDataObject(s)
e.Handled = True
End If
End Sub ''gridControl1_ClipboardCopy
PB
Philip Bishop
October 26, 2004 03:55 PM UTC
Hey thanks for the cool conversion link. I didnt know anything like that was out there. I had your code in and was messing with it and i cant see as it every does anything. If paste it in my code it actually gets stuck in an endless loop in that while because there is no hidden col..but in looking at that code i cant see how it ever works because the COL variable never gets set so its always at zero, unless i am missing something.
AD
Administrator
Syncfusion Team
October 26, 2004 04:10 PM UTC
I used the cool conversion tool to convert C# to the VB that you see above. One short-coming of teh tool is that it changes for-loops to while loops an dthat is why the VB code is not handling the col variable properly.
You probably want to change both the while loops to for-loops. Here is another snippet to give you the idea.
For intRow = objRange.Top To objRange.Bottom
If (Not objGrid.Rows.Hidden(intRow)) Then
bolFirstCol = True
For intCol = objRange.Left To objRange.Right
If Not bolFirstCol Then
strClipBoard += vbTab
Else
bolFirstCol = False
End If
Dim objStyleInfo As New GridStyleInfo(objData(intRow, intCol))
strClipBoard += objStyleInfo.Text
Next
'' add in a new line after each row
strClipBoard += Environment.NewLine
End If
Next
SIGN IN To post a reply.
- 7 Replies
- 2 Participants
-
PB Philip Bishop
- Oct 26, 2004 12:42 PM UTC
- Oct 26, 2004 04:10 PM UTC