加载中…
个人资料
红鱼儿
红鱼儿
  • 博客等级:
  • 博客积分:0
  • 博客访问:835,681
  • 关注人气:204
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
评论
加载中…
留言
加载中…
访客
加载中…
好友
加载中…
博文
标签:

转载

在stringgrid右键进入style样式进行设计,header头部样式引用无效解决方法:
直接控件引用样式发现无效,所以需要在代码实现。
在stringgrid控件ApplyStyleLookup函数里面
procedure TForm2.StringGrid1ApplyStyleLookup(Sender: TObject);
var
  Header: THeader;
  HeaderItem: THead
阅读  ┆ 评论  ┆ 转载原文 ┆ 收藏 
分类: Delphi10.2
利用FR导出pdf,然后在unigui中显示,发现汉字乱码,改成gb2312,不乱码,但不自动折行,最后是改成DefaultCharSet搞定。
FR版本:5.4.6


后记:有的浏览器中还是乱码,把字体嵌入到pdf中搞定。
  frxPDFExport1.EmbeddedFonts:=True; //嵌入使用的字体,避免有的机器上乱码

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

kbmmw

delphi

分类: kbmMW
调试好的一个功能,利用ClientQuery提交数据,突然出现这个问题,查了半天,最终的原因是在数据库中把一个浮点型字段改成整型字段,而在delphi设计期,ClientQuery又加了字段,加的是浮点型字段,致使设计期加的字段与数据库的字段类型不符合,在Resolve时出现Invalid property value (SERVER)。
重新加载一下字段就好了!

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

delphi

分类: Delphi10.2
为了能够向官方提bug及需求,必须注册一个账户,地址:
https://community.embarcadero.com/registration-form

不是正版用户,则可以用学生的身份,注册完,就可以与官方交流了。
https://quality.embarcadero.com/

快去注册一个吧!

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

delphi

分类: Delphi10.2
阅读  ┆ 禁止转载 ┆ 收藏 
分类: kbmMW
前期的几篇文章,讲了如何轻松的利用kbmMW创建REST服务器,今天想说的是关于日志方面的内容。

kbmMW包含一个相当复杂的日志记录系统,让开发人员在需要时记录各种类型的信息,运行期可以让管理员依据不同类型的日志维护系统的运行。

此外,可以输出日志到文件,或者系统日志(依赖操作系统的日志),也可以将其发送到远程计算机来进行存储。事实上,上述这些输出日志的目标是可以共存的。

记录日志的目的是什么呢?

嗯,这可以有多种用途,其中包括:
  • 用于调试开发
  • 部署后进行调试
  • 跟踪资源
  • 为了跟踪使用情况(甚至可能涉及以后的发票)
  • 解决用户投诉的原因
  • 出于安全的原因跟踪谁在做什么

由此可以看出,在应用程序的生命周期的各个阶段,似乎都有各种日志要求:

  • 在开发过程中
  • 使用过程中
  • 预先警告
  • 事件调查

一个好的日志系统应该处理所有上述情况,同时使开发人员使用起来很简单,并允许管理员调整所需的信息量。kbmMW的日志系统能够处理所有这些情况,并且可以对所需的日志级别

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
分类: kbmMW
     // Convert open array to a dynamic array.
     n:=High(ADatasets)-Low(ADatasets);
     SetLength(dss,n);

找到这行代码,当ADataSets只有一个数据集时,High(ADataSets)=0,Low(ADataSets)=0,n则等于0
于是SetLength(dss,0),dss数组个数为0,导致出错,应改成:
n:=High(ADatasets)-Low(ADatasets)+1;

青春发现的kbmMW 5.0.10的问题,反馈给作者了。
kbmMW 4.93无此问题。

2017-07-10 作者回复,下一版本解决这个问题!

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
分类: Delphi10.2
打开项目代码,


在Application.Initialize后面加入对FormatSettings的设置:

  Application.Initialize;
  with FormatSettings do
  begin
    ShortDateFormat := 'yyyy-mm-dd';
    LongDateFormat := 'yyyy-mm-dd';
    ShortTimeFormat := 'hh:nn:ss';
    LongTimeFormat := 'hh:nn:ss';
    DateSeparator := '-';
    TimeSeparator := ':';
  end;

现在不管什么系统,都采用上面的日期与时间格式。

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

delphi

分类: kbmMW
TkbmMWClientQuery有一个属性:IsDataModified,表示记录是否被修改过,实测的结果,当为一个字段赋值一个相同的值时,IsDataModified也会变为True。

q.Edit;
q.FieldByName('FName').AsString:='test';
q.Post;
象上面的代码,当q.FieldByName('FName').AsString已经等于test时,IsDataMoodified也会由False变为True,这不是我想要的。

试图修改源码,解决这个问题,无奈太复杂,搞不定,按Q友竹子的提示,修改他提取Delta的代码,改写了一个方法,测试通过:
function TDbCache.DataSetIsDataModified(
  akbmMemTable: TkbmCustomMemTable): Boolean;
var
  i: TkbmNativeInt;
  j: TkbmNativeInt;
  pRec, pOrigRec, pOldRec: PkbmRecord;
  aRecords: TkbmList;
  st: TUpdateStatus;
  aOldV, aNewV: Variant;
begin
  if akbmMemTable.State in [dsInsert, dsEdit] then
   
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

转载

分类: Delphi

http://52delphi.com/list.asp?ID=1341

 

TValue大概是新RTTI最重要最抽象的类!说他复杂,因为他是新版的万能变体类型,但比 Variant类型多带了RTTI类型信息。
在执行方法中,遇到复杂的参数类型(比如 record )必须带上RTTI类型信息。
例子如下:
type
  TMsgInfo =  record
    MsgInfo:string;
    MsgID:Integ

阅读  ┆ 评论  ┆ 转载原文 ┆ 收藏 
  

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有