「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板

(#2111) 修正案(開発者向け) - うぇいく (2013-03-31 01:49) /低 アイデア
開発向け情報です。
パス設定を以下のような感じに修正するとよさそうです。
この場合、依然の動作とは非互換となるため、取り込んだリリースの際には、
注意書きがあったほうがよさそうです。
---- unit_tree_list.pasの、THiTreeViewのSetSelectPath
procedure THiTreeView.SetSelectPath(path: string);
var
  n, ok: TTreeNode;
  sl: TStringList;
  name: string;
  k: Integer;

  function findChildNode(n:TTreeNode;i:Integer):TTreeNode;
  var
    c, ok: TTreeNode;
    j: Integer;
    name: String;
  begin
    if (i >= sl.Count) or (sl.Strings[i] = '') then
    begin
      // 見つけた。
      Result := n;
      Exit;
    end;
    name := sl.Strings[i];
    for j := 0 to n.Count - 1 do
    begin
      c := n.Item[j];
      if c.Text = name then
      begin
        ok := findChildNode(c,i+1);
        if ok <> nil then
        begin
          Result := ok;
          Exit;
        end;
      end;
    end;
    Result := nil;
  end;

begin
  sl := SplitChar('\', path);
  try
    ok := Self.TopItem;
    if (sl.Count > 0) and (sl.Strings[0]<>'') then
    begin
      name := sl.Strings[0];
      ok := nil;
      for k := 0 to Self.Items.Count -1 do
      begin
        n := Self.Items.Item[k];
        if (n.Parent = nil) and (n.Text = name) then
        begin
          ok := findChildNode(n,1);
          if ok <> nil then Break;
        end;
      end;
      if ok = nil then Exit;// 一致なし
    end;
    ok.Selected := True;
  finally
    sl.Free;
  end;
end;
ツリー部品の選択パス設定の動作がおかしい / nakkaa (2012-07-16 13:44) (#2024)/ 低 未処理
  修正案(開発者向け) / うぇいく (2013-03-31 01:49) (#2111)/ 低 アイデア

(#2111)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能