Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.07.06;
Скачать: [xml.tar.bz2];

Вниз

Запретить 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.045 c
2-1213083727
vint45
2008-06-10 11:42
2008.07.06
Количество потоков на один процесс


15-1211486281
BlueDragon
2008-05-22 23:58
2008.07.06
Задание с ЕГЭ 2008


15-1211272490
azamatufa
2008-05-20 12:34
2008.07.06
Почему хвост форума периодично обрезается???


15-1211752649
Германн
2008-05-26 01:57
2008.07.06
CSIDL_COMMON_DOCUMENTS


3-1201092826
IntruderLab
2008-01-23 15:53
2008.07.06
MSSQL инструкция IN





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский