phGant Time Package控件常见问题解答(一)

翻译|使用教程|编辑:杨鹏连|2020-08-18 10:18:08.163|阅读 20 次

概述:本文介绍了phGant Time Package控件常见问题并做解答。

# 购买正版开发软件送开发入门教材和电子资料,点击进入了解详情 #

phGant Time Package同时包含了phGantt 和phSchema控件,是一款快速、完全面向对象的ActiveX控件,有着丰富的图形用户界面,客户可以熟练地操作时间进度条。时间进度条可以以甘特图和概要视图的形式显示。该控件是一款强大的日程安排、项目管理控件,被国际上许多大公司所使用,慧都控件作为PlexityHide公司在中国的核心代理商,为客户提供优质的客服和技术之支持。

不必要的MouseMode

本文是为phGantTimePackage VCL (Delphi XE5)编写的。

我们得到了问题和一个重复的示例来支持一个场景,其中开发人员希望在双击TimeItem时弹出一个模式对话框。

所有这些都很简单:

procedure TForm1.phGant1DblClickGantArea(theGant: TphGant_ComBasic;
  theDataEntity: TphDataEntity_GantTime);
var FrmModal:TFrmModal;
begin
  FrmModal:=TFrmModal.create(nil);
  try
    FrmModal.ShowModal;
  finally
    FrmModal.Free;
  end;
end;
问题是,当用户双击该时间项并处于调整大小的热点区域时,鼠标模式调整被输入,并且在关闭模态对话框时仍然被设置。

我的第一个响应是调用方法MouseMoveModeCancel。此方法适用于以编程方式结束任何当前鼠标模式。

然而,它在这个案例中并不奏效。

它不能工作的原因是在DblClick事件返回后——VCL再次直接触发鼠标向下——这就是我们实际进入鼠标模式的地方。

在phGantTimePackage中,有一种方法可以分派对windows消息队列的调用,这在这里很有用。这个机制叫做TDoLater,它的解是这样的:

procedure TForm1.phGant1DblClickGantArea(theGant: TphGant_ComBasic;
  theDataEntity: TphDataEntity_GantTime);
var FrmModal:TFrmModal;
begin
  FrmModal:=TFrmModal.create(nil);
  try
    FrmModal.ShowModal;
    TDoLater.DoLater(LeaveAnyUnintentionalMouseMoveMode,nil);
  finally
    FrmModal.Free;
  end;
end;

procedure TForm1.LeaveAnyUnintentionalMouseMoveMode(a:TObject);
begin
    phGant1.MouseMoveModeCancel;
end;
通过这种方式,将MouseMoveCancel延迟到windows在用户交互上拥有的所有当前消息之后的一个时间。

要使用TDoLater,你需要一个phDoLater的用法。

在OnValueChangedGantTime事件中,是否有一种方法可以发现时间项是否改变了一行

问题

是否有一种方法来发现时间项目是否改变了OnValueChangedGantTime事件中的一行。
我正在做的事情无法在OnGantTimeChangeRow事件中或之后完成。

我尝试使用theGant.RowList.FindRowFromY(lngY).TreeNode.GridRowIndex,但在某些情况下不起作用。

回答

如果返回的行与当前拥有时间项的行(theDataEntity_GantTime.Row)不同,请使用theGant.RowList.FindRowFromY(IphGantX3.MousePositionGantArea.Y),这是一个动作…

您可以在OnHintInfo事件中进行检查,并将信息放入稍后在OnValueChangedGantTime事件中读取的membervariable中。

检查参数theDataEntity!= null,然后检查IphGantX3.GetMouseMoveMode == mmMove。

如果这两个条件都成立,则用户正在移动时间项…

然后使用如下所示:

 _ThisIsARowMove = theGant.RowList.FindRowFromY(IphGantX3.MousePositionGantArea.Y)<> theDataEntity_GantTime.Row

相关产品介绍:

VARCHART XGantt支持ActiveX、.Net等平台的C#甘特图控件
AnyGantt构建复杂且内容丰富的甘特图的理想工具
phGantt Time Package对任务和时间的分配管理的甘特图
dhtmlxGantt交互式JavaScript / HTML5甘特图


APS帮助提升企业生产效率,真正实现生产计划可视化呈现与控制,快速有效响应不同场景的生产计划,提高准时交货能力,提高产能和资源利用率

想要了解phGant Time Package慧都APS系统,请登录慧都网咨询在线客服,解决您的问题!



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,尊重他人劳动成果

文章转载自:PlexityHide

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
title
title
相关厂商
相关产品
phGantt Time Package

phGantt Time Package控件包集合了时间块处理控件,能为应用程序加入甘特图表设计和日程计划设计的功能。

在线
客服
咨询
电话
400-700-1020
在线
QQ
购物车 反馈 返回
顶部
在线客服系统
live chat