销售电话:010-87897209-801
 主页 | 世纪飞扬 | 下载区域 | 技术支持 | 主要客户 | 联系我们 | 主页链接
 

| General | Visual Basic | Visual C++ | Web | Delphi | C++Builder |

有用户问,怎么在Trend控件上实现不连续的曲线(即中间有一段为断开)?
如何在运行当中给控件装载一个图片?
如何用正式版本的控件替换掉试用版本,而不会破坏原来用试用版做的工程?
为什么Trend控件在一些激光打印机上不能打印?

有用户问,怎么在Trend控件上实现不连续的曲线(即中间有一段为断开)?
实际上这可以通过多条曲线来实现,即设置多个Variables, 比如用两条线来模拟


Back to Top
如何在运行当中给控件装载一个图片?
许多VB的使用者希望在运行当中设置图片属性,但下面这句是错误的:

Set Object.PictureProperty=PICTUREPATH


正确的是:

Set Object.PictureProperty=LoadPicture(PICTUREPATH)

Back to Top
如何用正式版本的控件替换掉试用版本,而不会破坏原来用试用版做的工程?
使用版本与专业版本是工程兼容的,请按下面步骤操作。 Unregister 反注册掉旧的控件。
Register 注册新的控件。
打开您原有的工程(旧控件),工程中原有的控件将会被新注册的控件自动替代。
保存工程。

如果新的控件与旧控件不兼容。

Unregister 反注册掉旧的控件。
Register 注册新的控件。
打开您包含旧控件的工程,旧控件不会正常显示。
请不要保存任何文件,删掉包含旧控件的窗体。
从控件列表当中选择新注册的控件。
将删除的窗体重新添加进来,旧的控件将会被新的替代。
保存工程。

Back to Top

为什么Trend控件在一些激光打印机上不能打印?
 

一些用户反映Trend控件的PrintPic方法在一些激光打印机上不能打印,现象为空走纸,没有输出内容,经我们跟踪调试,发现问题出在一个Windows的标准API函数上,这些激光打印机对这个API支持有问题,具体原因不太清楚,可能是驱动程序的问题,我们已找到替代解决方案:
不要使用Trend控件的PintPic方法,直接输出控件的Image属性到打印机,效果相同。
具体VB例程为:
Private Sub cmdPrint_Click()
Printer.PaintPicture Trend1.Image, 0, 0
End Sub

如果您使用的开发工具是VC的话,可以使用控件提供的hDC属性,使用StretchBlt直接输出到打印机:
void CTrendDlg::OnPrint()
{
//创建系统默认打印机的设备上下文
CPrintDialog pd(FALSE);
pd.GetDefaults();
HDC hdc = pd.CreatePrinterDC();

//打印机参数设置
DOCINFO DI;
DI.cbSize = sizeof(DOCINFO);
DI.fwType = 0;
DI.lpszDatatype = NULL;//"Trend Chart";
DI.lpszDocName = "Trend Chart";
DI.lpszOutput = NULL;


//以下得到控件的宽度和高度
RECT rctTrend;
::GetWindowRect((HWND)m_Trend1.GetHWnd(), &rctTrend);
long nWidth = rctTrend.right - rctTrend.left;
long nHeight = rctTrend.bottom - rctTrend.top;


//以下分别得到屏幕和打印机的DPI,以及他们之间的比率,以校正打印图片的尺寸
int nScreenW = GetDeviceCaps((HDC)m_Trend1.GetHDC(), LOGPIXELSX);
int nScreenH = GetDeviceCaps((HDC)m_Trend1.GetHDC(), LOGPIXELSY);
int nPrintW = GetDeviceCaps(hdc, LOGPIXELSX);
int nPrintH = GetDeviceCaps(hdc, LOGPIXELSY);
float fRateX = float(nScreenW) / nPrintW;
float fRateY = float(nScreenH) / nPrintH;


//开始打印
StartDoc(hdc, (LPDOCINFO)&DI);
StartPage(hdc);
//::BitBlt(hdc, 0, 0, rctTrend.right - rctTrend.left, rctTrend.bottom - rctTrend.top, (HDC)m_Trend1.GetHDC(), 0, 0, SRCCOPY);
::StretchBlt(hdc, 0, 0,int(nWidth / fRateX) , int(nHeight / fRateY), (HDC)m_Trend1.GetHDC(), 0, 0, nWidth, nHeight, SRCCOPY);
EndPage(hdc);
EndDoc(hdc);

//打印结束

//删除创建的打印机设备上下文
DeleteDC(hdc);
}

Back to Top
会 员 登 录
用户名:
密 码:
 
   
 组 件 产 品
 今 日 推 荐
图形仪表组件.NET
 
 
 
北京世纪飞扬科技发展有限公司 版权所有 京ICP备05074308号