小编Jef*_*eff的帖子

使用"mod"运算符

每当我需要在我的for循环中每300次迭代做一次特定动作时,我试图显示(有意义吗?)

这是代码中我想要做的,但不是我想要的方式:

for I := 0 to 2000 do
  Begin
   if I = 300 then
   DoAnAction;

   if I = 600 then
   DoAnAction

   if I = 900 then
   DoAnAction

   if I = 1200 ......... Same action all over, but I don't want to check all those conditions!
  End;
Run Code Online (Sandbox Code Playgroud)

所以我被告知要使用mod运算符,这就是我的工作方式:

for I := 0 to 2000 do
 Begin
  if I mod 300 = 299 then
  DoAnAction;
 End;
Run Code Online (Sandbox Code Playgroud)

但是,使用上述代码片段的结果将在299,599,899执行操作....

如何使用Mod操作符在300,600,900 ......进行操作?(而且做得if I mod 300 = 300不好) …

delphi math integer modulo

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

如何使多个虚拟树视图节点的检查状态保持同步?

我的树有两级节点 - 它是一个联系人列表样式树.

我的问题是,我希望在所有"联系人类别"中检查所有联系人.这是我现在看的联系人列表的截图(是的,我有权发布)

联系人列表

如您所见,Todd Hirsch在类别测试类别中进行了检查,但未在所有联系人中进行检查.我想要实现的目标是让联系人在每个类别中都具有相同的检查状态.

示例:我在测试类别中检查Todd Hirsch - Todd Hirsch会自动检入所有联系人(以及其他所有类别).如果我在所有联系人中查看Todd Hirsch,他也将在测试类别中进行检查.如果我在所有联系人中取消选中Todd Hirsch,他也将在测试类别中取消选中.

我尝试通过VirtualStringtree的OnChecking事件,通过循环遍历树中每个节点的整个树,但是当联系人列表很大(2000 +)时,它非常慢,当它有5000+时,它甚至可能崩溃我的程序(应用程序已停止工作)

你有什么建议?

这是我用来确保只检查一次联系人的代码.(这不是我现在想要的,但这就是我现在正在使用的.)

////////////////////////////////////////////////////////////////////////////////
/// HasDuplicateChecked
////////////////////////////////////////////////////////////////////////////////
Function HasDuplicateChecked(Node: PVirtualNode): PVirtualNode;
Var
  ParentNode, ChildNode: PVirtualNode;
  I, J: Integer;
Begin

  // IHCW
  Result := Nil;

  // Get the first node of the tree..
  ParentNode := VT.GetFirst;

  // Loop thru the parent nodes.
  for I := 0 to VT.RootNodeCount - 1 do
  begin
    // Get …
Run Code Online (Sandbox Code Playgroud)

delphi checkbox duplicates virtualtreeview

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

使用Angle Brackets(我见过有人使用TList <PSomething>)

我看到人们宣称他们的TList喜欢

MyList : TList<PSomeType>;
Run Code Online (Sandbox Code Playgroud)

然后,当他们创造它时,他们会这样做

MyList := TList<PSomeType>.Create;
Run Code Online (Sandbox Code Playgroud)

因此,我认为通过这样做,他们不必在使用它时对类Mypec.Items [I]进行类型转换,例如:

ShowMessage( PSomeType(MyList.Items[I]).SomeTextProperty );
Run Code Online (Sandbox Code Playgroud)

所以相反他们会做

ShowMessage( MyList.Items[I].SomeTextProperty );
Run Code Online (Sandbox Code Playgroud)

那是对的吗?

如果是这样,为什么我不能让它在Delphi 2010中工作?我正在努力 - 将我的清单声明为

MyList : TList<PSomeType>;

但是编译器说:

未声明的标识符:TList <>

我在那里做错了什么?

delphi generics casting tlist

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

VirtualTreeview节点,将它们传递给另一种形式?

我的应用程序将通过虚拟节点循环并检查其数据.我使用另一个表单来执行此操作比包含VirtualStringTree的表单.(我得到了我的理由;))

我的问题是:我如何将这些节点+他们的数据传递给我的其他形式的函数,然后能够循环通过节点(我知道如何循环,我只需要以我的其他形式提供节点) ).

此外,请注意,一旦显示Processing表单,就会销毁包含VirtualStringTree的表单!

我怎么能这样做?我正在考虑创建一个动态的VirtualStringTree,并以某种方式将节点从一棵树传递到另一棵树,但我会先问这里是否有更好的解决方案.:)

谢谢,杰夫.

delphi virtualtreeview

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

触摸动态表单时访问冲突?

我正在动态创建一个表单,但是关闭它的例程位于我的主表单单元中,因为它与我的主表单(TSkype)上的控件相关联.该事件是SkypeAsyncSearchUsersFinished.当SkypeAsyncSearchUsersFinished例程完成时,我尝试将ModalResult设置为动态表单的mrOk.但是,这会产生访问冲突.

这是搜索完成时触发的代码:

   if SIDList.Count = 0 then
   begin
     frmSearcher.tmrFadeOut.Enabled := True;
   end;
Run Code Online (Sandbox Code Playgroud)

我尝试调试它,并在frmSearcher.tmrFadeOut设置断点...然后我走到下一行(例程End;),那就是AV出现的时候.

所述tmrFadeOutTimer事件确实的ModalResult:= mrOk;

这就是我创建动态表单的方式:

Function ShowSearcher():Boolean;
Var
   dlg : TfrmSearcher;
Begin
  Result := False;
  dlg := TfrmSearcher.Create(Forms.Application);


  dlg.tmrFadeIn.Enabled := True;


    if dlg.ShowModal = mrOk then
         Begin
         // Do nothing here

         End;

  Result := True;
  dlg.Release;

End;
Run Code Online (Sandbox Code Playgroud)

是的,我确信计时器只启用一次.:)

是的,我确信表格是"活着的".:)

实际上,如果我删除tmrFadeOut.Enabled代码,一切正常,但表单不会被关闭.做frmSearcher.ModalResult:= mrOk; 也产生AV.

如果您需要更多信息,我会添加它.:)

谢谢你!:)

delphi dynamic

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

奇怪的THOT键行为 - 它不会连续允许相同的热键

THOTkey不允许两次使用相同的热键是否正常?

这就是我的意思.

假设我将热键设置为Ctrl + Shift + X. 然后我做了别的事情,然后回来改变它.当我按住Ctrl和Shift时,我意识到我不想更改热键,所以我按住Ctrl + Shift按X键.现在,THotkey拒绝了它.我放开所有的钥匙,再次尝试相同的组合.它仍然不会让我分配该密钥.即使我点击我的表单上的其他地方,然后回去尝试相同的组合,它也不会让我!

这是为什么?我怎么能防止这种情况?

谢谢!

delphi behavior hotkeys

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

Knockout ViewModel分离,最新方法/最佳实践是什么?

我刚刚开始搞乱Knockout JS,我有以下的观点(例子).

我有一个游客列表,这个列表有CRUD方法 - 一切都很棒.现在,当我点击一个游客时,将会显示一个更详细的描述 - 这是一个新的AJAX调用服务器的信息.

我的问题是,我应该有一个包含我的1个主视图模型TouristsViewModelTouristsInfoViewModel-这意味着TouristsViewModel要与主为了改变耦合TouristsInfoViewModel,或者我应该TouristsViewModel实例化TouristsInfoViewModel,并调用ko.applyBindings

我看过Knockout-postbox,但我想避免引入过多的第三方插件.

总结一下:在能够在它们之间共享数据的同时,分离视图和视图模型的一般方法是什么?

dry mvvm separation-of-concerns viewmodel knockout.js

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

JavaScript:构建新实例的方法

根据这篇MSDN文章 - 滚动到Constructor Functions but No Classes,(以及在阅读MDN JS参考之后)我应该能够构造一个这样的对象:

function Dog(name){
    this.name = name;
}

// EXAMPLE 1
var dog = new Dog("Spot");
console.log("Dog using new:");
console.log(dog); // Dog object, awesome!

// EXAMPLE 2
var dog = {};
dog = Dog.call(dog,"Rowdie");
console.log("Dog using call:");
console.log(dog); // Undefined.. why?
Run Code Online (Sandbox Code Playgroud)

但是,虽然第一个示例(构建新对象的最常见方式)返回预期的实例,但第二个示例返回undefined- 我做错了吗?

这是我用来测试的JSFiddle:http://jsfiddle.net/wk8JD/1/

javascript constructor

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

Durandal 小部件、动态模板部件

我正在使用 Durandal 构建一个向导小部件,我想像这样使用它:

        <div data-bind="wizard: options">
            <!-- Step 1 -->
            <span data-part="step-header-1">
                Step 1
            </span>
            <div data-part="step-content-1">
                step content here
            </div>

            <!-- Step 2 -->
            <span data-part="step-header-2">
                Step 2
            </span>
            <div data-part="step-content-2">
                step content here
            </div>
        </div>
Run Code Online (Sandbox Code Playgroud)

这是实际的小部件(为简洁起见,进行了删减):

<div class="wizard-container">

    <ul class="steps" data-bind="foreach: steps">
        <li>
            <span data-bind="html: heading"></span>
        </li>
    </ul>

    <!-- ko foreach: steps -->
    <div class="wizard-step" data-bind="css: { active: isActive }">
        <div data-bind="html: content">

        </div>
    </div>
    <!-- /ko -->

</div>
Run Code Online (Sandbox Code Playgroud)

我已经让它工作了,使用 jQuery 获取数据部分,将数据部分的内部 HTML 分配给我的步骤模型上的属性,然后使用 html 绑定将内容绑定到每个步骤。这适用于 DOM 方面,但这样做意味着我的步骤内容不会进行数据绑定。我很确定这是因为我使用了 …

javascript jquery widget knockout.js durandal

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

什么是泛型的F#类型推断方法?

我想了解有关类型推断的规则,因为我希望将其纳入自己的语言中,并且本着这种精神,我一直在研究F#的类型推断,以下让我感到奇怪。

这将进行编译,并且id'a -> 'a,(如果我没有记错的话)表示每个调用都使用“新鲜”类型。

let id x = x

let id1 = id 1
let id2 = id "two"
Run Code Online (Sandbox Code Playgroud)

但是,当使用运算符时,似乎是第一次调用确定了该函数的签名。

在这里,mul据报道是int -> int -> int

let mul x y = x * y

let mul1 = mul 1 2
let mul2 = mul 1.1 2.2 // fails here
Run Code Online (Sandbox Code Playgroud)

如果我重新排序,mul则为float -> float -> float

let mul x y = x * y

let mul2 = mul 1.1 2.2
let mul1 …
Run Code Online (Sandbox Code Playgroud)

f# type-inference static-typing typechecking hindley-milner

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