GVKun编程网logo

delphi – 如何使用RTTI区分TDateTime属性和Double属性?(delphi strtodate)

32

本文将分享delphi–如何使用RTTI区分TDateTime属性和Double属性?的详细内容,并且还将对delphistrtodate进行详尽解释,此外,我们还将为大家带来关于alt属性和titl

本文将分享delphi – 如何使用RTTI区分TDateTime属性和Double属性?的详细内容,并且还将对delphi strtodate进行详尽解释,此外,我们还将为大家带来关于alt属性和title属性、asp.net-mvc – Telerik MVC Grid – 可以为null的DateTime属性的问题、c# – ConfigurationElement中的DateTime属性、c# – 更好的设计/实践:Nullable属性或1值属性和1 bool“has”属性?的相关知识,希望对你有所帮助。

本文目录一览:

delphi – 如何使用RTTI区分TDateTime属性和Double属性?(delphi strtodate)

delphi – 如何使用RTTI区分TDateTime属性和Double属性?(delphi strtodate)

在Delphi 2010中使用RTTI系统,有没有办法找出属性是否是TDateTime?当我回调为Variant时,如果我检查属性类型,它现在将其视为双精度。这是因为它只能看到基本类型吗? (TDateTime = double)

解决方法

尝试检查 TRttiProperty.PropertyType的Name属性

我没有德尔福2010,但这在XE工作。

{$APPTYPE CONSOLE}

uses
  SysUtils,Classes,Rtti;

type
  TMyClass =class
  private
    FDate: TDateTime;
    FProp: Integer;
    FDate2: TDateTime;
    FDate1: TDateTime;
  public
   property Date1 : TDateTime read FDate1  Write FDate1;
   property Prop : Integer read FProp  Write FProp;
   property Date2 : TDateTime read FDate2  Write FDate2;
  end;

var
 ctx : TRttiContext;
 t :  TRttiType;
 p :  TRttiProperty;
begin
 ctx := TRttiContext.Create;
 try
   t := ctx.GetType(TMyClass.ClassInfo);
   for p in  t.GetProperties do
    if CompareText('TDateTime',p.PropertyType.Name)=0 then
     Writeln(Format('the property %s is %s',[p.Name,p.PropertyType.Name]));
 finally
   ctx.Free;
 end;
  Readln;
end.

这个代码返回

the property Date1 is TDateTime
the property Date2 is TDateTime

alt属性和title属性

alt属性和title属性

首发:http://blog.handsbrain.com/junchen/archive/2005/05/21/3355.aspx
版权:本文版权归译者Junchen所有,转载请先联系译者。
当浏览器卖主扭曲了标准并且自顾自的不按规则去做一些事,他们可能会造成一些问题,或者至少产生了混淆。例子之一就是一些浏览器处理alt属性(一般会被错误的称作alt标签)的方式,比如拥有大量用户的Windows的IE浏览器。

替换文字(alt text)并不是用来做提示(tool tip),或者更加确切的说,它并不是为图片提供额外说明信息的。相反地,title属性才应该用来为元素提供额外说明信息。这些信息在大部分图像浏览器里显示为提示(tool tip),虽然制造商可以任意采取其他方式渲染title属性的文字。

很多人看来对这两个属性感到迷惑(最近这个问题在Web Standards Group邮件列表里变多了), 所以我写下我的想法,如何去用它们。

alt属性

为不能显示图像、窗体或applets的用户代理(UA),alt属性用来指定替换文字。替换文字的语言由lang属性指定。
来源:How to specify alternate text.

Alt属性(注意是“属性”而不是“标签”)包括替换说明,对于图像和图像热点是必须的。它只能用在img、area和input元素中(包括applet元素)。对于input元素,alt属性意在用来替换提交按钮的图片。比如:<input type="image" src="image.gif" alt="Submit" />.

使用alt属性是为了给那些不能看到你文档中图像的浏览者提供文字说明。这包括那些使用本来就不支持图像显示或者图像显示被关闭的浏览器的用户,视觉障碍的用户和使用屏幕阅读器的用户。替换文字是用来替代图像而不是提供额外说明文字的。

在写替换文字前仔细想想,保证那些文字确实为那些看不到图像的人提供了说明信息,并且在上下文中有意义。对于那些装饰性的图片可以使用空的值(alt="",引号中间没有空格),而不是使用不相关的替换文字比如“blue bullet”或者“spacer.gif”。不要忽略它,如果你忽略了,那么一些屏幕阅读器会直接阅读图像文件的文件名,那些文字浏览器,比如Lynx会显示图像文件的文件名,而那对于你的浏览者就没什么用了。

包含文字的图像图片设置替换文字是最简单的,图像中包含的文字一般来说就可以作为alt属性值。

至于替换文字的长度,看看WCAG 2.0(网站内容可用性指南2.0)是怎么说的:

Alt属性值得长度必须少于100个英文字符或者用户必须保证替换文字尽可能的短。
我把它理解为“尽可能短,尽需要长”。

即使你想让它显示为提示(tool tip),也不要给文字元素使用alt属性,这并不是它的用法。至今据我所知,那样做仅能在Windows的IE浏览器和古老的Netscape 4.*(windows版本)有效。没有一个Mac的浏览器会将它显示为提示(tool tip)。

当浏览器把替换文字显示为提示(tool tip)后,那些错误使用alt属性的行为也受到了鼓励。一些人开始写无意思的替换文字,因为他们趋向于认为它是一个额外的说明信息,而不是不能显示图像的替换。其他人可能不想让提示(tool tip)出现,然后就完全忽略了写alt属性值。这些错误的做法,都给那些不能看到图像的浏览者造成了困难。

额外的说明信息和非本质的信息请使用title属性。

title属性

title属性为设置该属性的元素提供建议性的信息。
来源: The title attribute.

title属性可以用在除了base,basefont,head,html,meta,param,script和title之外的所有标签。但是并不是必须的。可能这正是为什么很多人不明白何时使用它。

使用title属性提供非本质的额外信息。大部分的可视化浏览器在鼠标悬浮在特定元素上时显示title文字为提示信息(tool tip),然而这又由制造商来决定如何渲染title文字。一些浏览器会将title文字显示在状态栏里。比如早期版本的Safari浏览器。

title属性有一个很好的用途,即为链接添加描述性文字,特别是当连接本身并不是十分清楚的表达了链接的目的。这样就使得访问者知道那些链接将会带他们到什么地方,他们就不会加载一个可能完全不感兴趣的页面。另外一个潜在的应用就是为图像提供额外的说明信息,比如日期或者其他非本质的信息。

title属性值可以比alt属性值设置的更长。不过要注意的是,有些浏览器会截断过长的文字(比如工具提示或其他)。比如Mozilla核心的浏览器只能显示最先的60个字符。这被认为是一个Mozilla bug,这是你要注意的。

使用前先考虑

我的建议是保证替换文字(alt text)精要。在大多数的应用里,都应该被留白,alt=""(注意两引号中没有空格)。 想想那些图像,为那些浏览者提供了什么样的信息,你应该用什么文字去描述它,或者你该为看不到图像的人提供什么信息? 将替换文字写成“照片:站在大楼外的CEO,穿着灰色西装和黑色领带,望着天”对于看不到图像的人真的有帮助?如果你觉得是,那么你就写吧。在很多情况下,我觉得让替换文字留白比较好。

对于title属性,比较难于给出严格的使用说明。我大部分用在那些不能自我释意的链接上,比如同一页面上的相同的链接文字,不同的链接页面。有时候也为一些按钮或者表单元素提供更多的说明文字。

更长的描述

当一个图片需要更加长的描述,而超过alt属性的限制,那么还有一些选择。

longdesc属性可以用来提供链接到一个包含图片文字描述的单独页面。这就意味着把浏览者链接到另外的页面,这可能会造成理解上的困难。另外浏览器对于longdesc属性的支持也是不一致的,并且不是非常好。

longdesc属性可以包含一个链接到当前文档的其他部分(锚点)来取代链接到另外的页面。在Accessibility footnotes, Andy Clarke很好的解释说明了如何应用。

描述链接(D links)可以用来补充longdesc。一个描述链接就是一个常规的链接,连接到含有替换文字的页面。该链接被置于图像的旁边,并且在所有浏览器中都是可是的。对于它的有效性人们有很多不同意见,我的个人意见不大喜欢这个注意。WCAG也是,在他们的工作草案HTML Techniques for WCAG 2.0中,描述链接是被“不赞成”的。

如果对图片的长的描述对于任何浏览者都有用,那么你得考虑让它简单的显示在同一个文档里面,而不是链接到其他页面里或者藏起来。这样每个人都可以阅读到。这是一种简单低技术含量的方法。

更多信息

想了解更多关于alt,title和longdesc属性?看这里:

Guidelines on alt texts in img elements
Writing good ALT text
Accessible alternatives
Accessibility footnotes
The image problem
Title Attribute – Your Take
Using link Titles to Help Users Predict Where They Are Going
How to specify alternate text
The title attribute

您可能感兴趣的文章:
  • niceTitle 基于jquery的超链接提示插件
  • javascript title闪动效果
  • 永不消失的title提示代码
  • 截获网站title标签之家内容的例子
  • jquery实现网站超链接和图片提示效果

asp.net-mvc – Telerik MVC Grid – 可以为null的DateTime属性的问题

asp.net-mvc – Telerik MVC Grid – 可以为null的DateTime属性的问题

我是Telerik MVC扩展的新手.我已成功在视图中实现了我的第一个实例.我没有使用Telerik MVC Grid实现我的第二个视图,但是绑定到网格的类有2列Nullable类型.当我运行我的代码时,视图会发出错误,如下所示:

传递到字典中的模型项为null,但此字典需要“System.DateTime”类型的非null模型项.

我原本以为这可能是一个渲染问题,模板只适用于DateTime而不是Nullable,但后来我完全取出了显示这些DataTime的任何列?属性.

我的代码如下:

查看Telerik MVC Grid的代码

<%= Html.Telerik().Grid(Model.ScheduledCourseList)
.Name("ScheduledCoursesGrid")
.ToolBar(commands => commands.Insert().ButtonType(GridButtonType.Image).ImageHtmlAttributes(new {}))
.DataKeys(keys => keys.Add(sc => sc.Id))
.DataBinding(dataBinding =>
    dataBinding.Ajax()
        .Select("_List","Course")
        .Insert("_InsertAjax","Course")
        .Update("_UpdateAjax","Course")
        .Delete("_DeleteAjax","Course")
)
.Columns(columns =>
{
    columns.Bound(c => c.Id).Width(20);
    //columns.Bound(c => c.ScheduledDateTime).Width(120);
    //columns.Bound(c => c.Location).Width(150);
    columns.Command(commands =>
    {
        commands.Edit().ButtonType(GridButtonType.Image);
        commands.Delete().ButtonType(GridButtonType.Image);
    }).Width(180).Title("Commands");
})
.Editable(editing => editing.Mode(GridEditMode.PopUp))
.sortable()
.Footer(true) %>

DTO

public class ScheduledCourseDTO
{
    public int Id { get; set; }
    public int CourseId { get; set; }
    public int CourseProviderId { get; set; }
    public DateTime? ScheduledDateTime { get; set; }
    public DateTime? EndDateTime { get; set; }
    public string Location { get; set; }
    public int SiteId { get; set; }

    public decimal CostBase { get; set; }
    public decimal CostPerAttendee { get; set; }
    public decimal PricePerAttendee { get; set; }
    public int MaxAttendees { get; set; }
    public int CancellationDays { get; set; }

    public bool Deleted { get; set; }
}

有没有人知道如何解决这个问题?

解决方法

我设法在Telerik论坛上找到了解决这个问题的方法.如果其他人遇到此问题,请查看以下主题:

http://www.telerik.com/community/forums/aspnet-mvc/grid/problem-with-nullable-datetime-property.aspx#1423387
简而言之,解决方案是您应该在ASP.NET MVC项目的Views / Shared文件夹中有一个EditorTemplates文件夹. Telerik添加了此EditorTemplates文件夹.在此文件夹中有一个名为DateTime.ascx的模板视图,它继承自System.Web.Mvc.ViewUserControl.问题是模板期望正常的DateTime.要修复它,请将其更改为期望可为空的DateTime,如下所示:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime?>" %>

这解决了这个问题.

c# – ConfigurationElement中的DateTime属性

c# – ConfigurationElement中的DateTime属性

我想将DateTime放入配置文件中,但是,我想以特定的方式表达DateTime.我已经看到在ConfigurationElement中使用DateTime的示例(如下例所示).我见过的例子都有以美国格式表示的日期.我想确保所有人都能理解日期,无论他们是谁,所以我想使用yyyy-MM-dd HH:mm:ss作为格式.

使用从ConfigurationElement派生的类时,如何做到这一点?

class MyConfigElement : ConfigurationElement
    {
        [ConfigurationProperty("Time",Isrequired=true)]
        public DateTime Time
        {
            get
            {
                return (DateTime)this["Time"];
            }
            set
            {
                this["Time"] = value;
            }
        }
    }

解决方法

你确定吗? Afaik,默认是XML样式,这也是你想要的(yyyy-mm-dd).

c# – 更好的设计/实践:Nullable属性或1值属性和1 bool“has”属性?

c# – 更好的设计/实践:Nullable属性或1值属性和1 bool“has”属性?

我正在开发一个ASP.NET MVC应用程序,设计域模型,使用(测试)新的EF Code First功能.

我有一个活动实体可能有也可能没有截止日期,接近它的最佳方法是什么?

1物业:

public DateTime?  Deadline {get; set;}
and check vs null before using

要么

2个属性:

public DateTime Deadline {get; set;}
public bool HasDeadline  {get; set;}

起初我想到了第一个选项,但后来我开始考虑可能第二个选项对DB来说会更好……

这有什么最好的做法吗?

解决方法

我会选择第一个选项.毕竟,它恰好是第二种形式的封装形式.

封装清楚地表明您只有一个逻辑值(或缺少逻辑值).在第二种形式中,您可以将属性视为完全独立,这在逻辑上并非如此.

就数据库而言,我希望第一种形式也同样容易…预测你在数据库中有一个可以为空的DATETIME字段,不是吗?它应该直接映射.

今天关于delphi – 如何使用RTTI区分TDateTime属性和Double属性?delphi strtodate的分享就到这里,希望大家有所收获,若想了解更多关于alt属性和title属性、asp.net-mvc – Telerik MVC Grid – 可以为null的DateTime属性的问题、c# – ConfigurationElement中的DateTime属性、c# – 更好的设计/实践:Nullable属性或1值属性和1 bool“has”属性?等相关知识,可以在本站进行查询。

本文标签: