Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фокус на Virtual TreeView, Поставить программно фокус 
V
    Опции темы
ain_2
Дата 2.6.2007, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 2.6.2007

Репутация: нет
Всего: нет



Прайс в виде TVirtualStringTree  на форме.
Там же форме кнопка - поиск.
По нажатию на кнопку делается запрос - что искать.
По результатам запроса в прайсе ( TVirtualStringTree) делается поиск.
При успешном поиске фокус на найденный элемент не устанавливается, если мышкой не был "сделан" фокус в прайсе, т.е. когда не выделен ни один пункт. Когда в прайс не было ни одного захода «руками».
Когда мышкой щелкнешь по любому пункту, т.е. когда появиться фокус - то после этого, строка с веткой, содержащей найденное значение раскрывается и т.д. Т.е., для успешной визуализации результатов поиска нужно хотя бы один раз войти в прайс.

Как я только не пытался установить фокус программно smile , ничего не получается.






PM MAIL   Вверх
aktuba
Дата 2.6.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Код

VT.FocusNode := Node;



--------------------
user posted image
PM MAIL WWW Skype   Вверх
ain_2
Дата 3.6.2007, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 2.6.2007

Репутация: нет
Всего: нет



Если бы всё было так просто.

Это номер проходит только если фокус уже был на дереве.
Если не был, присваивание не происходит

Добавлено через 7 минут и 1 секунду
Всё, победил тему.
Нужно присвоить значение FocusedColumn. 
Тогда FocusedNode можно присвоить нужное значение.


Это сообщение отредактировал(а) ain_2 - 3.6.2007, 07:34
PM MAIL   Вверх
aktuba
Дата 3.6.2007, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

Это номер проходит только если фокус уже был на дереве.
Если не был, присваивание не происходит


Да ну???  smile А почему у меня тогда работает???  smile  smile  smile 

P.S.: если вопрос решен, будь добр, отметь галочкой...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
ain_2
Дата 4.6.2007, 06:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 2.6.2007

Репутация: нет
Всего: нет



У вас работает потому, что в программе устанавливается тем или иным путём FocusedColumn.
Изначально, когда дерево создается FocusedColumn=-1
При этом значении хоть сколько устанавливай фокус на узел дерева, дерево реагировать не будет, поскольку в процедуре установки фокуса проверяется FocusedColumn.

PM MAIL   Вверх
aktuba
Дата 4.6.2007, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

У вас работает потому, что в программе устанавливается тем или иным путём FocusedColumn.
Изначально, когда дерево создается FocusedColumn=-1
При этом значении хоть сколько устанавливай фокус на узел дерева, дерево реагировать не будет, поскольку в процедуре установки фокуса проверяется FocusedColumn.


Сейчас посмотрел свой код и удивился. У меня везде следующее используется, видимо по привычке:
Код

VT.ClearSelection;
VT.FocusedNode := Node;
VT.Selection[Node] := True;


Но для проверки создал вот такой код:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, VirtualTrees;

type
  TForm1 = class(TForm)
    vtMain: TVirtualStringTree;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  vtMain.FocusedNode := vtMain.RootNode.FirstChild;
end;

end.


Все прекрасно работает!!! Исходники прилагаются.

Присоединённый файл ( Кол-во скачиваний: 12 )
Присоединённый файл  test.rar 7,19 Kb


--------------------
user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1025 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.