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

Вниз

TEdit, как отличить user ввод от присвоения Text нового значения?   Найти похожие ветки 

 
sanx   (2009-08-26 22:43) [0]

И то и то вызывает OnChange. Как же тогда отличить?

Задача такая: есть два TEdit, пользовательский ввод в одном Edit1 меняет значение и в другом Edit2, но только до тех пор, пока пользователь сам не поменяет значение в Edit2. После этого любое редактирование Edit1 не влияет на Edit2. Как отличить пользовательский ввод в Edit2 от Edit2.Text = "Что-то"? Таким образом я мог бы установить флажок flagEdit2UserChanged и далее, при изменении Edit1 смотреть, если флажок установлен, то уже не изменяем Edit2. Реагировать на нажатия клавиш в Edit2? т.е. использовать Edit2.OnKeyPress? Пока что так и делаю, фильтруя символ #13. Есть ли какое другое решение? может быть основанное на Win Api?


 
sanx   (2009-08-26 23:00) [1]

Ах да, проблема еще в том что показе формы идет присвоение началных значений в том числе и в Edit1, что влияет на Edit2. Конечно это все не проблема, нужно просто следить когда edit1 может влият на Edit2, но все же хотелось бы узнать способ изменить свойство Text без вызова OnChange?


 
Медвежонок Пятачок ©   (2009-08-26 23:05) [2]

И текст и ончейндж - это свойства.
кроме этого есть еще куча свойств например активный контрол формы


 
Leonid Troyanovsky ©   (2009-08-26 23:23) [3]


> sanx   (26.08.09 22:43)  

> Edit1 меняет значение и в другом Edit2, но только до тех
> пор, пока пользователь сам не поменяет значение в Edit2.

Edit2.Modified ?

--
Regards, LVT.


 
sanx   (2009-08-26 23:46) [4]

Медвежонок Пятачок, не совсем понял как это может помочь?
Leonid Troyanovsky спс, действительно при изменении Edit2.Text, свойство Edit2.Modified не меняется. Оно меняется лишь при изменении текста самим пользователем.

Но осталось научится изменять текст в TEdit без вызова TEdit.OnChange, такое возможно?


 
Юрий Зотов ©   (2009-08-27 00:32) [5]

> sanx   (26.08.09 23:46) [4]

Вы же уже сами ответили на свой вопрос (с помощью Леонида). Исходное значение Edit2.Modified = False, оно изменится только при юзерском вводе. Это и есть тот самый флажок, который Вы хотели:


procedure Edit1Change:
begin
 ...
 if not Edit2.Modified then
 begin
   ... // Юзер еще не менял текст в Edit2, поэтому меняем его программно
 end;
 ...
end;


 
sanx   (2009-08-27 02:53) [6]

Юрий Зотов, это да, но у меня идет инициализация значений для Edit1 при открытии окна, и в этот момент (edit1.text="начальный текст") срабатывает edit1.onChange, тот в котором идет проверка if not edit2.modified then ... А в этот момент это мне не нужно.

Да воощем проблем решить это нет конечно, можно флажек сделать типа flagThisInit, просто интересно как изменить свойство text/caption для любого компонента, но так чтобы  не было OnChange. Как я понимаю проблема в том что VCL реагирует на события винды, а винду попросить не слать это событие не получится? :) Это уже просто интересно :)


 
Servy ©   (2009-08-27 03:18) [7]

> просто интересно как изменить свойство text/caption для
> любого компонента, но так чтобы  не было OnChange


Для тех, кому "просто интересно", есть очевидный способ - убрать обработчик OnChange на время присваивания.


var
 Temp: TNotifyEvent;
begin
 Temp := Edit1.OnChange;
 try
   Edit1.OnChange := nil;
   Edit1.Text := "some new text";
 finally
   Edit1.OnChange := Temp;
 end;


 
Ega23 ©   (2009-08-27 10:53) [8]

ReadOnly := True;   :)


 
Советчик   (2009-08-27 11:36) [9]

> sanx   (27.08.09 02:53) [6]

> у меня идет инициализация значений для Edit1 при открытии окна,
> и в этот момент (edit1.text="начальный текст") срабатывает
> edit1.onChange, тот в котором идет проверка
> if not edit2.modified then ...
> А в этот момент это мне не нужно.

Назначайте обработчик события edit1.onChange не в design-time, а кодом, после инициализации edit1.text="начальный текст".



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

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

Наверх





Память: 0.47 MB
Время: 0.048 c
15-1250873687
Student
2009-08-21 20:54
2009.10.25
WIN32.INDUC - шо за такое?


2-1251020827
EXEcER
2009-08-23 13:47
2009.10.25
Рэндом в Label


15-1250820480
Alkid
2009-08-21 06:08
2009.10.25
Ура!


1-1220781512
Guest
2008-09-07 13:58
2009.10.25
Нужна помощь для связки с 1С.


15-1251452949
xayam
2009-08-28 13:49
2009.10.25
Подскажите есть ли для php библиотека для роботы с д-ми Word .doc





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