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

Вниз

OnChanging в TreeView   Найти похожие ветки 

 
][ncognito   (2004-09-15 01:01) [0]

Проблема такая:
У TreeView есть 2 события TreeChanging и MouseDown.
первое служит для того, чтоб в некоторых случаях (при выделении конкретного элемента и ещё одного условия) отключалось выделение (AllowChange:=false)

второе служит для того, чтоб можно было правой кнопкой выделить элемент ( RightClickSelect не помогает )

Но при скрещивании этих событий OnChanging перестаёт работать :((

Вот исходник:

procedure TfmMain.tvInvTreeChanging(Sender: TObject; Node: TTreeNode; var AllowChange: Boolean);
begin
if IsCardChanged=true then
  MessageDlg("Save changes?",mtConfirmation, [mbYes, mbNo, mbCancel], 0) = mrCancel
     then AllowChange:=false;
end;

procedure TfmMain.tvInvTreeMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
var
 TheNode : TTreeNode;
begin
if Button = mbRight then
                   begin
                   TheNode:=tvInvTree.GetNodeAt(X, Y);
                   if (TheNode is TTreeNode) then
                       tvInvTree.Select(TheNode);
                   end;
end;


 
Defunct ©   (2004-09-15 04:48) [1]

][ncognito   (15.09.04 01:01)  
Вопрос запутанный..

Попробую нормально сформулировать ваш вопрос..

У вас в программе есть TreeView, у которого обрабатывается 2 события TreeChanging и MouseDown.

первое (OnTreeChanging) служит для того, чтоб в некоторых случаях (при выделении конкретного элемента и ещё одного условия) отключалось выделение (AllowChange:=false)

второе (OnMouseDown) служит для того, чтоб можно было правой кнопкой выделить элемент ( RightClickSelect не помогает )

Проблема такая:
при обработке второго события, первое перестаёт правильно обрабатываться.

А теперь мои вопрос:

Что именно происходит с OnTreeChanging?
A. Событие перестает генерироваться?
B. Оно генерируется, но при этом tvInvTree.Select(TheNode) все равно срабатывает даже при AllowChange=false.
C. Оно генерируется всегда, за исключением моментов, когда нажимается правая кнопка мыши.

[A,B] - Проблема не связяна с обработчиком OnMouseDown (либо код приведен не полностью.

[C] - поможет следующая конструкция:
If Button = mbRight then
Try
 tvInvTree.GetNodeAt(X, Y).Selected:=True
Except
End;


 
][ncognito   (2004-09-15 09:23) [2]

Ближе всего вариан B.
Т.е. при "работе с левой кнопкой мыши" всё работает на УРА, но если кликнуть правой, то всё ломается :(

Т.е. если в событии OnTreeChanging AllowChange устанавливается в false, то по идее куда я мышкой ни щёлкни по дереву, выделенным останется мой "зафиксированный" элемент (Node). Всё это прекрасно работает, если я щёлкаю левой кнопкой. Но щёлкни я правой, то выделяется тот элемент по которому я кликнул, а не должон!!!


 
Defunct ©   (2004-09-15 09:27) [3]

> Т.е. при "работе с левой кнопкой мыши" всё работает на УРА, но если кликнуть правой, то всё ломается :(

>> C. Оно генерируется всегда, за исключением моментов, когда нажимается правая кнопка мыши.

If Button = mbRight then
Try
tvInvTree.GetNodeAt(X, Y).Selected:=True
Except
End;



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

Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.032 c
14-1095300236
Думкин
2004-09-16 06:03
2004.10.03
С днем рождения! 16 сентября


14-1094838234
Vit@ly
2004-09-10 21:43
2004.10.03
Женевская конвенция


3-1094019462
bSava
2004-09-01 10:17
2004.10.03
Непонятное поведение FB1.5


3-1094115304
DAron
2004-09-02 12:55
2004.10.03
ADOQUERY фильтрация с "and" и "or"


14-1095082180
menart
2004-09-13 17:29
2004.10.03
VDSL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский