如何在两个C1DataGrid中实现拖拽项目

ComponentOne Studio for WPF 为我们提供了一个非常实用的类C1DragDropManager ,使用它我们可以轻松处理程序与用户交互时的拖拽操作。使用C1DragDropManager类我们只需进行简单的配置,配置完成后,对拖拽操作的支持即刻被添加到您的应用中。通过使用该类,我们能开启应用中对拖拽命令的支持,对其进行定制,并允许移动及复制操作。本篇博客的目的,在于讨论在两个C1DataGrid 控件间拖拽多行数据的问题。

ComponentOne ActiveX控件的部署和分发

经常有客户提出如何部署分发ComponentOne的ActiveX控件,本文就针对此问题,采用图文并茂的方式,一步步地教你如何部署和分发,轻松应对此问题。本文的演示基于WinXp的操作系统,VB6.0的开发环境。打包程序的工具是VB自带的Package&Deployment。在演示部署和分发之前,我们需要创建一个VB的工程,并且添加相应的ComponentOne控件,本文就以True DBGrid Pro 8.0 for Active X和True DBInput Pro 8 for Active X的TDBDate control为例,首先从工具箱里拖拽TrueDBGridPro8.0和TDBDate到窗体上,编译运行并保存该工程。

Xuni路线图

ComponentOne致力于开发和销售移动平台Windows Phone上的UI控件超过三年(如果算上Compact Framework 6.5时间更长)。因为C#和XAML是我们的专长,因此我们看到一个巨大的机会,即Xamarin.Forms能够将我们的UI控件带给更多的开发者。你可能已经知道,使用 Xamarin你可以用C#开发原生的iOS和Android应用程序。由于Android和iOS是世界上使用最广泛的手机操作系统,因此除了Windows应用程序的开发,我们认为这是最佳的扩展时间和机会。在十月份的 Xamarin发展会议上,我们宣布了自己的原生跨平台移动控件套包Xuni。使用Xuni我们将以强大的UI控件进军全球移动应用市场,这些控件比Xamarin.Forms箱中的控件功能强大很多。现已尘埃落定,我们可以宣布官方时间表和产品中包含的内容。

C1PrintDocument: StartDoc-EndDoc和Generate的对比

很多时候,用户希望在C1PrintDocument中插入新页,他们不知道该使用StartDoc-EndDoc还是使用Generate方法,或者两者都使用。C1PrintDocument的创建既可以使用StartDoc-EndDoc也使用Generate方法。这两者是相似的,但是在实现上有所区别。在本文中,我们讨论创建documents和插入新页的两种方式。StartDoc()-EndDoc() 方法StartDoc方法标记document 产生的开始,在EndDoc方法标记document产生的结束。如果要用StartDoc-EndDoc 方法,render objects需要被添加到document的块中。例如:使用RenderBlock(), RenderDirect() 和RenderInline() 方法,如下所示:c1PrintDocument1.RenderBlock(renderTable1);Generate() MethodGenerate方法使用RefreshCalculatedValues刷新模式产生document。如果要用Generate方法,需要直接添加render objects到document的body。代码如下所示:this.c1PrintDocument1.Body.Children.Add(new C1.C1Preview.RenderText("Hello, World!"));

C1Chart在WinForm平台下的同步(一):滚动条同步

在WinForm平台下,如果有两个相同的C1Chart,如何保持两者在运行时候的同步呢?在接下来的一系列文章,我们专门讨论C1Chart的同步。首先就先来介绍滚动条同步。在文章的最后,有本文所用到的Demo,本文介绍的都是再此基础上进行同步讨论。首先,在设计界面拖拽两个C1Chart,保持大小和位置的一致,以及给两个C1Chart导入相同的数据。代码参考:c1Chart1.SaveChartToFile("Chart1_Data.xml");c1Chart2.LoadChartFromFile("Chart1_Data.xml");接着,C1Chart的滚动条在默认情况下是不显示的,因此需要通过代码或是设计界面将其显示出来。代码参考:this.c1Chart1.ChartArea.AxisX.ScrollBar.Visible = true; this.c1Chart1.ChartArea.AxisY.ScrollBar.Visible = true; this.c1Chart2.ChartArea.AxisX.ScrollBar.Visible = true; this.c1Chart2.ChartArea.AxisY.ScrollBar.Visible = true;其次,调用ScrollBar.AxisScroll事件,当轴的滚动条发生滚动,会触发该事件。

C1Chart在WinForm平台下的同步(二):缩放同步

在上篇文章中,我们讨论了C1Chart在WinForm平台下的同步(一):滚动条同步,我们讨论了如何在运行时保持两个C1Chart的滚动条同步。本文就在上篇文章的基础上,继续深入讨论在WinForm平台下,保持两个图表缩放的同步。同样的,在文章的最后,会附上本文所用到的Demo。首先,都是一样的,在设计界面拖拽两个C1Chart,保持大小和位置的一致,以及给两个C1Chart导入相同的数据。代码参考:c1Chart1.SaveChartToFile("Chart1_Data.xml");c1Chart2.LoadChartFromFile("Chart1_Data.xml");接着,设置C1Chart的交互,将Interaction.Enable属性设置为true。确保在C1Chart缩放行为可用。代码参考: c1Chart1.Interaction.Enabled = true; c1Chart1.Interaction.Actions["Zoom"].Modifier = Keys.None; c1Chart1.Interaction.Actions["Scale"].Modifier = Keys.Control; c1Chart1.Interaction.Actions["Translate"].Modifier = Keys.Shift; c1Chart1.Interaction.Actions["Rotate"].Modifier = Keys.Alt; c1Chart2.Interaction.Enabled = true; c1Chart2.Interaction.Actions["Zoom"].Modifier = Keys.None; c1Chart2.Interaction.Actions["Scale"].Modifier = Keys.Control; c1Chart2.Interaction.Actions["Translate"].Modifier = Keys.Shift; c1Chart2.Interaction.Actions["Rotate"].Modifier = Keys.Alt;然后,通过LayoutLabels事件,获取其中一个的ScrollBar的Scale,赋值给另一个C1Chart。

C1Chart在WinForm平台下的同步(三):TriangleMarker同步

在上面的两篇文章中,我们分别讨论了C1Chart在WinForm平台下的同步(一):滚动条同步和C1Chart在WinForm平台下的同步(二):缩放同步,我们讨论了如何在运行时保持两个C1Chart的滚动条同步和缩放同步。本文是本系列的最后一篇,在前两个的基础上,继续深入讨论在WinForm平台下,保持拖拽标签Mark的同步。同样的,在文章的最后,会附上本文所用到的Demo。首先,都是一样的,在设计界面拖拽两个C1Chart,保持大小和位置的一致,以及给两个C1Chart导入相同的数据。代码参考:c1Chart1.SaveChartToFile("Chart1_Data.xml");c1Chart2.LoadChartFromFile("Chart1_Data.xml"); 接着,给C1Chart添加X轴的ValueLabel,让其显示成可移动的带三角标的Marker的样子,如图: 红色竖直带三角符号的线就是我们需要的Marker。有客户问,这条线是如何添加上去的,有没有内置的接口。其实,这就是我们经常用到的AxisX的ValueLabels,只是将其Appearance设置为TriangleMarker,并且将Moveable设置为true,这样就可以在X轴上显示一条Marker的线。注意:要将AxisX.AnnoMethod 属性设置为AnnotationMethodEnum.Mixed,我们设的Marker线才能显示出来。代码参考: this.c1Chart1.ChartArea.AxisX.ValueLabels.Add(1, "Marker"); this.c1Chart1.ChartArea.AxisX.ValueLabels[0].Appearance = ValueLabelAppearanceEnum.TriangleMarker; this.c1Chart1.ChartArea.AxisX.ValueLabels[0].Moveable = true; this.c1Chart1.ChartArea.AxisX.ValueLabels[0].GridLine = true; this.c1Chart1.ChartArea.AxisX.ValueLabels[0].Color = Color.Red; c1Chart1.ChartArea.AxisX.AnnoMethod = AnnotationMethodEnum.Mixed; 同样,通过LayoutLabels事件,获取其中一个的ValueLabel的NumericVaue,赋值给另一个C1Chart。

如何使用ComponentOne OLAP for WPF分析SSAS Cube数据

OLAP Cube提供联机分析处理Cube数据的能力,它是一种利用多维数据进行快速数据分析的数据结构。其用户界面一般是一个囊括了所需数据的多维电子表格。举例来讲,当你希望使用产品、时间周期和颜色三种特性来反映销售情况时,对应的理论上的Cube就如下图所示:<div style="width:400px;height:280px;overflow:hidden"><img src="http://www.grapecity.com.cn/image.ashx?picture=clip_image001_1.png" style="float:none; margin-top: -0px;margin-left: -0px;" /></div>

C1FlexGrid在WPF平台下的延迟滚动

在WPF平台下,C1FlexGrid控件在默认的情况下,拖动滚动条的时候,可视区域会同步滚动。然而,当gird表格包含大量的行,滚动会变得有点慢。C1FlexGrid的默认行为是实时滚动,当拖动滚动条的时候,可以看到内容同步移动。然而,同步滚动需要消耗大量内存,这在有时就会感到卡顿的现象。在这种情况下,C1FlexGrid提供了一个属性deferred scrolling(延迟滚动)。延迟滚动是指另外一种滚动行为,当鼠标释放的时候才会滚动内容(这个和Outlook 2007收件箱类似)。通过设置DeferScrolling可以实现C1FlexGrid的延迟滚动。它的枚举值如下所示:1。None-不使用延迟滚动。2。DeferVertical-竖直方向延迟滚动。3。DeferHorizontal -水平方向延迟滚动。4。DeferBoth -两个方向都延迟滚动。

为什么50%的葡萄城控件客户选择续订金牌服务?

当您购买带金牌服务的产品授权的时候,会得到一年的金牌技术服务,这一年内您就可以使用到软件的最新版本、电话支持和高优先级的论坛支持服务。一年以后,您可能会觉得“我很满意现在拥有的版本,新版本对我没什么价值”、“我们的产品已经比较熟悉”,不再需要葡萄城金牌服务了。也有客户因为预算原因无法及时续订。您想知道为什么有50%的客户选择续订金牌服务吗?下面是我们收集和整理的一些客户心得。