Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2013, 11:03   #1
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
Восклицание пара вопросов по TreeView delphi

1. вопрос:
картинка:

Код:
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
  begin
    if cdsSelected in State then
      begin
        TreeView1.Canvas.Brush.Color:= clRed;
        TreeView1.Canvas.Font.Style:=[fsBold];
      end;
end;
что нужно добавить или изминить, чтобы после выбора другого узла, не оставалось следа предыдущего просмотра
2. Как придумать выделение узлов только в своем Level? У меня 4 уровня, ниже код который только выделяет один узел и выдает информацию. Мне нужно, чтобы если выделенный узел (второй и последующий), относится к тому же левлу, что и предыдущий... добавлял значения в таблицу..., в противном случае сбрасывал предыдущие выделения...
код:
Код:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
  const
    NameCaptionTableInfo: array[1..6] of string =
    ('1','2','3','4','5','6');
  var
    clev1,clev2,clev3: integer;
    i,j,LengthValue,max: integer;
    root: IXMLNode;
    s1,s2,s3: string;
  begin
    WidthColunm:=0;
    clev1:=-1;
    clev2:=-1;
    clev3:=-1;
    if ListView2.Items.Count > 0 then
      repeat
        ListView2.Items.Delete(0);
      until ListView2.Items.Count = 0;
    case TreeView1.Selected.Level of
      0:  begin
          TreeView1.MultiSelect:=false;
          TreeView1.MultiSelect:=true;
// удалено в целях экономия места
          end;
      1:  begin
            if TreeView1.SelectionCount > 1 then
              begin
// как добавлять-то я знаю... а вот как еще проверить что выделенные узлы относятся именно к этому левлу затруднюсь...
              end
            else
              begin
// удалено в целях экономия места
              end;
      2:  begin            
// удалено в целях экономия места
           end;
      3:  begin
// удалено в целях экономия места
           end;
    end;
end;
Исходники программ - http:\\www.kort.3dn.ru

Последний раз редактировалось Stilet; 30.10.2013 в 12:12.
KORT вне форума Ответить с цитированием
Старый 30.10.2013, 11:45   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

По простому не задавать fsBold
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.10.2013, 12:15   #3
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
По простому не задавать fsBold
а если с fsbold...
Исходники программ - http:\\www.kort.3dn.ru
KORT вне форума Ответить с цитированием
Старый 30.10.2013, 12:30   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
а если с fsbold...
Ну тогда бы полностью самостоятельно прорисовывал все, а не просто цвет и параметры фонта менял
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.10.2013, 16:09   #5
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
По умолчанию ответ на 2 вопрос...

Цитата:
Сообщение от KORT Посмотреть сообщение
2. Как придумать выделение узлов только в своем Level? У меня 4 уровня, ниже код который только выделяет один узел и выдает информацию. Мне нужно, чтобы если выделенный узел (второй и последующий), относится к тому же левлу, что и предыдущий... добавлял значения в таблицу..., в противном случае сбрасывал предыдущие выделения...
Может кому пригодится ответ на этот вопрос. Оказалось совершенно просто... Посидел, подумал... ну вот результат:
Код:
unit Unit1;

interface

uses
...

type
...

var
  Form1: TForm1;
  provlev,provcoun: integer; 

implementation

{$R *.dfm}

procedure TForm1.TreeView1Click(Sender: TObject);
  var
    i,j: integer;
  begin          
    if provlev = TreeView1.Selected.Level then
      if TreeView1.SelectionCount > provcoun then
        begin
          for i:=0 to TreeView1.Selected.Count-1 do
            memo1.Lines.Add(TreeView1.Selected.Item[i].Text);
          provcoun:=TreeView1.SelectionCount;
        end
      else
        begin
          memo1.Clear;
          for i:=0 to TreeView1.SelectionCount-1 do
            for j:=0 to TreeView1.Selections[i].Count-1 do
              Memo1.Lines.Add(TreeView1.Selections[i].Item[j].Text);
          provcoun:=TreeView1.SelectionCount;
        end
    else
      begin
        memo1.Clear;
        TreeView1.MultiSelect:=false;
        TreeView1.MultiSelect:=true;
        provlev:=TreeView1.Selected.Level;
        for i:=0 to TreeView1.Selected.Count-1 do
          memo1.Lines.Add(TreeView1.Selected.Item[i].Text);
        provcoun:=TreeView1.SelectionCount;
      end;
  end;
                      
procedure TForm1.FormCreate(Sender: TObject);
  begin
    provlev:=0;
    provcoun:=0;
  end;

end.
P.S. закрывайте тему!
P.S.S. Забыл поменять твой ник на свой...
Исходники программ - http:\\www.kort.3dn.ru

Последний раз редактировалось KORT; 30.10.2013 в 16:44.
KORT вне форума Ответить с цитированием
Старый 30.10.2013, 16:15   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от Аватар
У меня не было такого сообщения
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.03.2014, 17:00   #7
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
По умолчанию

Цитата:
Сообщение от KORT Посмотреть сообщение
что нужно добавить или изминить, чтобы после выбора другого узла, не оставалось следа предыдущего просмотра
Код:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
  begin
    TreeView1.Repaint;
....
  end;
Исходники программ - http:\\www.kort.3dn.ru
KORT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обновление после CheckBox misha888 C# (си шарп) 0 02.06.2013 20:20
AJAX Обновление данных после удаления Mick_20 JavaScript, Ajax 4 12.12.2012 16:48
Обновление после отправки Predator199 JavaScript, Ajax 2 20.08.2012 21:29
обновление формы после выполнения скрипта Tanzor69 PHP 2 05.02.2012 00:22
Обновление таблицы после выполнения селекта Tatochka Microsoft Office Access 5 15.01.2010 10:40