问题列表 - 第20749页

如何实现TPageControl的TTabsheet的关闭按钮

如何实现像Firefox这样的TPageControl的TTabsheet的关闭按钮?

编辑:
Delphi版本:Delphi 2010
操作系统:Windows XP及更高版本

delphi tpagecontrol

8
推荐指数
2
解决办法
2万
查看次数

C# - 反序列化List <String>

我可以很容易地序列化列表:

List<String> fieldsToNotCopy =new List<String> {"Iteration Path","Iteration ID"};
fieldsToNotCopy.SerializeObject("FieldsToNotMove.xml");
Run Code Online (Sandbox Code Playgroud)

现在我需要一个像这样的方法:

List<String> loadedList = new List<String();
loadedList.DeserializeObject("FieldsToNotMove.xml");
Run Code Online (Sandbox Code Playgroud)

有这样的方法吗?或者我是否需要创建一个XML阅读器并以这种方式加载它?


编辑:原来没有内置的SerialzeObject.我早些时候在我的项目中做了一个而忘了它.当我发现它时,我认为它是内置的.万一你好奇这是我做的SerializeObject:

// Save an object out to the disk
public static void SerializeObject<T>(this T toSerialize, String filename)
{
   XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType());
   TextWriter textWriter = new StreamWriter(filename);

   xmlSerializer.Serialize(textWriter, toSerialize);
   textWriter.Close();
}
Run Code Online (Sandbox Code Playgroud)

c# extension-methods serialization

10
推荐指数
1
解决办法
2万
查看次数

如何在Django的单元测试驱动程序中测试表单的验证逻辑?

我想测试表单验证逻辑的is_valid部分.在我的测试驱动程序中,我有:

  test_animal = Animal(name="cat", number_paws="4")
  test_animal_form = AnimalForm(instance=test_animal)
  assertEqual(test_animal_form.is_valid(), True)

断言失败了,但从我看到的情况来看,表格中不应该有任何错误.我没有在表单中看到任何验证错误.如果加载到表单中的test_animal实例应该验证,它是否应该作为测试用例?

django django-forms django-testing

7
推荐指数
1
解决办法
3693
查看次数

JFormattedTextField在焦点上的插入位置

我在我的程序中使用了一些JFormattedTextFields.由于某些原因,当单击文本字段后文本字段获得焦点时,插入符号位置始终跳转到左侧(位置0).我希望插入符号最终位于用户点击的位置.因此,如果我在两个数字之间点击,则插入符应该在这两个数字之间.

所以我实现了一个FocusListener,它将获得点击位置并在那里设置插入位置.

FocusListener focusListener = new FocusListener(){


    public void focusGained(FocusEvent evt) {

        JFormettedTextField jftf = (JFormattedTextField) evt.getSource();

        //This is where the caret needs to be.
        int dot = jftf.getCaret().getDot(); 

        SwingUtilities.invokeLater( new Runnable() {

        public void run() {
'the textField that has focus'.setCaretPosition('Some how get the evt or dot');              
              }
           });
        }

    public void focusLost (FocusEvent evt) {}

    });
Run Code Online (Sandbox Code Playgroud)

我尝试了很多让他上班的事情.我尝试过使用final关键字,但是只能用于单个文本字段.

我在焦点监听器中使用了set/get方法来分配当前对象,但我不确定如何使其"安全"(例如,它们是否需要同步?).

也许有一些我想念的东西?

java swing focus caret jformattedtextfield

7
推荐指数
2
解决办法
4693
查看次数

使用Scala continuation实现yield(yield return)

如何yield return使用Scala continuation 实现C#?我希望能够以Iterator相同的风格编写Scala .这篇Scala新闻帖的评论中有一个刺,但它不起作用(尝试使用Scala 2.8.0测试版).一个相关问题的答案表明这是可能的,但是虽然我已经玩了一段时间的分隔延续,但我似乎无法完全理解如何做到这一点.

continuations scala yield yield-return scala-2.8

27
推荐指数
2
解决办法
6871
查看次数

如何在linq中处理空列表等空列表?

下面是一些linqpad测试代码.当它运行时出错,因为"item"的第二个实例具有子项目的空列表而不是空列表.

我想以完全相同的方式处理这两种情况(空或空列表),但我想知道是否有一种更简洁的方法,而不仅仅是对列表进行空检查,并在存在空值时初始化空列表.

换句话说,我可以这样做:

from si in (i.subitems == null ? new List<item>() : i.subitems)
Run Code Online (Sandbox Code Playgroud)

但那有点难看,我想知道我怎么能改进呢?

public class item
{
    public string itemname { get; set; }
    public List<item> subitems { get; set; }
}

void Main()
{
    List<item> myItemList = new List<item>() 
    {
        new item 
        {
            itemname = "item1",
            subitems = new List<item>()
            {
                new item { itemname = "subitem1" },
                new item { itemname = "subitem2" }
            }
        },
        new item 
        {
            itemname = "item2"
        }
    };

    myItemList.Dump();

    var …
Run Code Online (Sandbox Code Playgroud)

.net c# linq null-coalescing-operator

7
推荐指数
3
解决办法
1万
查看次数

让ASP.NET MVC正确地转义路由中的#(hash/pound)字符

我有一条看起来像这样的路线:

routes.MapRoute(
"BlogTags",
"Blog/Tags/{tag}",
new { controller = "Blog", action = "BrowseTag", viewRss = false }
);
Run Code Online (Sandbox Code Playgroud)

我使用这样的路线创建一个URL:

<%= Html.RouteLink(Html.Encode(sortedTags[i].Tag), 
         new { action = "BrowseTag", tag = sortedTags[i].Tag })%>
Run Code Online (Sandbox Code Playgroud)

但是,当使用带有#字符的标记(如"C#")时,路由引擎不会将其转义,因此我得到一个如下所示的URL:

<a href="/Blog/Tags/C#">C#</a>
Run Code Online (Sandbox Code Playgroud)

我需要的是#swardped,所以它看起来像这样:

<a href="/Blog/Tags/C%23">C#</a>
Run Code Online (Sandbox Code Playgroud)

我在标签进入路线之前尝试在标签上做一个Url.Encode,如下所示:

<%= Html.RouteLink(Html.Encode(sortedTags[i].Tag), 
         new { action = "BrowseTag", tag = Url.Encode(sortedTags[i].Tag) })%>
Run Code Online (Sandbox Code Playgroud)

但是这会使路由引擎双重转义#(导致ASP.NET崩溃并出现错误的请求错误)):

<a href="/Blog/Tags/C%2523">C#</a>
Run Code Online (Sandbox Code Playgroud)

我怎样才能让路由引擎正确地为我转义#字符?

提前谢谢你的帮助.

c# asp.net-mvc url-routing

6
推荐指数
1
解决办法
3543
查看次数

SQL用户在触发器?

在我的删除触发器中,我需要知道删除记录的人的用户名.

是否有SQL函数或变量?

sql triggers username

0
推荐指数
1
解决办法
458
查看次数

如何从我的应用程序中在Android的Web浏览器中打开URL?

如何从内置Web浏览器中的代码而不是在我的应用程序中打开URL?

我试过这个:

try {
    Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(download_link));
    startActivity(myIntent);
} catch (ActivityNotFoundException e) {
    Toast.makeText(this, "No application can handle this request."
        + " Please install a webbrowser",  Toast.LENGTH_LONG).show();
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

但我有一个例外:

No activity found to handle Intent{action=android.intent.action.VIEW data =www.google.com
Run Code Online (Sandbox Code Playgroud)

url android android-intent android-browser

1282
推荐指数
16
解决办法
81万
查看次数

将符合ISO 8601的字符串转换为java.util.Date

我试图将ISO 8601格式的字符串转换为java.util.Date.

yyyy-MM-dd'T'HH:mm:ssZ如果与Locale(比较样本)一起使用,我发现该模式符合ISO8601标准.

但是,使用java.text.SimpleDateFormat,我无法转换格式正确的String 2010-01-01T12:00:00+01:00.我必须先将它转换为2010-01-01T12:00:00+0100没有冒号的.

那么,目前的解决方案是

SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.GERMANY);
String date = "2010-01-01T12:00:00+01:00".replaceAll("\\+0([0-9]){1}\\:00", "+0$100");
System.out.println(ISO8601DATEFORMAT.parse(date));
Run Code Online (Sandbox Code Playgroud)

这显然不是那么好.我错过了什么或者有更好的解决方案吗?


回答

感谢JuanZe的评论,我发现了Joda-Time魔术,这里也有描述.

所以,解决方案是

DateTimeFormatter parser2 = ISODateTimeFormat.dateTimeNoMillis();
String jtdate = "2010-01-01T12:00:00+01:00";
System.out.println(parser2.parseDateTime(jtdate));
Run Code Online (Sandbox Code Playgroud)

或者更简单地说,通过构造函数使用默认解析器:

DateTime dt = new DateTime( "2010-01-01T12:00:00+01:00" ) ;
Run Code Online (Sandbox Code Playgroud)

对我来说,这很好.

java date iso8601

627
推荐指数
19
解决办法
55万
查看次数