Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.06;
Скачать: CL | DM;

Вниз

Запретить TreeView раскрываться при двойном клике на item-ах   Найти похожие ветки 

 
alex-drob ©   (2008-06-05 00:39) [0]

структура примерно такая

+-item
|    |-subitem
|    |      |-sub_subitem
|    |      |-sub_subitem
|    |-subitem
|    |      |-sub_subitem
|    |      |-sub_subitem
|-item
|    |-subitem
|    |      |-sub_subitem
|    |      |-sub_subitem
.....

хотелось бы так чтобы именно при дубльклике на subitem он не раскрывался


 
Германн ©   (2008-06-05 01:40) [1]


> alex-drob ©   (05.06.08 00:39)

Да что ж ты всё "хочешь странного"? Нестандартная ориентация что-ли? :)


 
alex-drob ©   (2008-06-05 01:47) [2]


> Германн ©   (05.06.08 01:40) [1]

ну почемуже, очень даже стандартная! просто подход нестандарный!

ну просто можно и отказаться от этого, я просто список кантактов делал, и хотел чтобы по двойному клику открывалось окно для написания сообщения, а при нажатии на крестик, информация в строчки, например, email и телефон, чтобы можно было сразу письмо отправить, ну или в мой мир на маиле зайти.


 
Германн ©   (2008-06-05 01:53) [3]


> alex-drob ©   (05.06.08 01:47) [2]
>
>
> > Германн ©   (05.06.08 01:40) [1]
>
> ну почемуже, очень даже стандартная! просто подход нестандарный!
>
>
> ну просто можно и отказаться от этого, я просто список кантактов
> делал, и хотел чтобы по двойному клику открывалось окно
> для написания сообщения, а при нажатии на крестик, информация
> в строчки, например, email и телефон, чтобы можно было сразу
> письмо отправить, ну или в мой мир на маиле зайти.
>

Ты ж пойми. Если какой-либо компонент уже имеет стандартную реакцию, то изменить её, как правило, можно лишь в наследнике. И особо сложно, если данный компонент - лишь дельфийская оболочка для работы со стандартным "компонентом" Windows.


 
alex-drob ©   (2008-06-05 02:05) [4]

понятно. ну а если как нибудь в OnDblClick обрабатывать? у меня каждый subitem содержит в переменной Data указатель на облать с данными, а другие итемы несодержат, то есть если проверять типа

if subitem.data<>nil then
 а вот что дальше...

или так не получиться


 
Германн ©   (2008-06-05 02:36) [5]


> alex-drob ©   (05.06.08 02:05) [4]
>
> понятно. ну а если как нибудь в OnDblClick обрабатывать?
>

FOnDblClick вызывается после стандартной реакции, если компонент явно, через свои свойства, не предлагает другого варианта.


 
{RASkov} ©   (2008-06-05 08:47) [6]

[4] - Можно попробывать так:
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls;

type
 TForm1 = class(TForm)
   TreeView1: TTreeView;
   procedure FormCreate(Sender: TObject);
 private
   OldWnd: TWndMethod;
   procedure NewWnd (var Mes: TMessage);
   { Private declarations }
 public
   { Public declarations }
 end;

var Form1: TForm1;

implementation
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 OldWnd:=TreeView1.WindowProc;
 TreeView1.WindowProc:=NewWnd;
 TreeView1.ReadOnly:=True;
end;

procedure TForm1.NewWnd (var Mes: TMessage);
procedure MyAction;
begin
  ShowMessage(N.Text);
end;
var N: TTreeNode;
begin
 if Mes.Msg<>WM_LBUTTONDBLCLK then OldWnd(Mes) //Обрабатываем по умолчанию все кроме двойного клика левой кнопки мыши
  else begin
   N:=TreeView1.GetNodeAt(LoWord(Mes.LParam), HiWord(Mes.LParam)); //Получаем "даблкликнутый" итэм...
   if (N<>nil) and (N.Level=1) then MyAction else OldWnd(Mes);     //...проверяем его и при необходимости прерываем стандартные действия и делаем свои
  end;
end;

end.

Не конечный вариант, но для раздумья....


 
{RASkov} ©   (2008-06-05 08:51) [7]

> procedure TForm1.NewWnd (var Mes: TMessage);
> procedure MyAction;
> begin
>  ShowMessage(N.Text);
> end;
> var N: TTreeNode;
> begin


Т.е. так:
procedure TForm1.NewWnd (var Mes: TMessage);
var N: TTreeNode;
 procedure MyAction;
 begin
   ShowMessage(N.Text);
 end;
begin
....

Ошибся с видимостью лок. переменной)


 
oldman ©   (2008-06-05 09:23) [8]


> alex-drob ©   (05.06.08 01:47) [2]
> ну просто можно и отказаться от этого, я просто список кантактов
> делал, и хотел чтобы по двойному клику открывалось окно
> для написания сообщения, а при нажатии на крестик, информация
> в строчки, например, email и телефон, чтобы можно было сразу
> письмо отправить, ну или в мой мир на маиле зайти.


И откажись.
Возьми другой компонент и будет тебе щастье.


 
{RASkov} ©   (2008-06-05 09:25) [9]

> Возьми другой компонент и будет тебе щастье

Не в компонентах щастьё :)


 
alex-drob ©   (2008-06-05 10:03) [10]


> {RASkov} ©   (05.06.08 08:47) [6]

Всё получилось!

Большое всем спасибо!



Страницы: 1 вся ветка

Текущий архив: 2008.07.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.017 c
2-1212792183
redlord
2008-06-07 02:43
2008.07.06
отображение каретки ввода в компоненте edit


15-1211656945
Джо
2008-05-24 23:22
2008.07.06
Айпи пакостника


2-1212657440
Моё имя
2008-06-05 13:17
2008.07.06
Shellexecute не фурычит в delphi5


2-1212726295
Диниска
2008-06-06 08:24
2008.07.06
Юникод :((


15-1211704569
Kostafey
2008-05-25 12:36
2008.07.06
С днем рождения ! 24 мая