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

Вниз

Опять про ListView.OnChanging   Найти похожие ветки 

 
XShura ©   (2002-08-06 09:23) [0]

Вчера задавал вопрос по поводу ListView.OnChanging:

procedure Tform1.LVChanging(Sender: TObject; Item: TListItem;
Change: TItemChange; var AllowChange: Boolean);
begin
if change=ctState then
AllowChange:=false;
end;
эта процедура выполняется 2 или 3 раза для одного Item !,
если это невозможно побороть, подскажите обходной вариант решения: мне нужно чтоб пользователь при определенных условиях не "ушел" с текущего Item-а. Спасибо.


 
Ученик ©   (2002-08-06 09:34) [1]

if (Change = ctState) and Item.Focused and (Item.Caption = "Item1") then
AllowChange := False


 
XShura ©   (2002-08-06 09:39) [2]

if (Change = ctState) and Item.Focused and (Item.Caption = "Item1") then
AllowChange := False

.. выполняется 3 раза ;)



 
Ученик ©   (2002-08-06 09:48) [3]

>XShura
Извиняюсь за вопрос, но какая разница сколько раз это выполняется, если "...мне нужно чтоб пользователь при определенных условиях не "ушел" с текущего Item-а"


 
XShura ©   (2002-08-06 09:58) [4]

Уточняю... у меня каждый Item подвязан к записи таблицы базы данных
create table aaa(id integer,
naim char(30),
...,)
в Item.data хранится ID, при клике на Item все поля записи загоняются в TEdit-ы. Дык вот, при редактировании этих TEdit-ов
мне эти изменения необходимо затащить в таблицу, но перед этим необходимо проверить правильность заполнения полей, и если что то не то, не дать пользователю уйти с данного Item-а пока он не приведет их в порядок, я эту проверку хотел засунуть в Tform1.LVChanging и тама делать проверки и вслучай чего выводить сообщение об ошибке, но это сообщение будет появляться как ты понял несколько раз :((


 
Ученик ©   (2002-08-06 11:16) [5]

Наверно изврат, но все-таки (почему он вызывается несколько раз 1-3, так и не понял - в параметрах сообщения LVN_ITEMCHANGING все одинаково)

procedure TForm3.ListView1Changing(Sender: TObject; Item: TListItem;
Change: TItemChange; var AllowChange: Boolean);
var
Msg : TMsg;
begin
if (Change = ctState) and Item.Focused and (Item.Caption = "Item1") then begin
AllowChange := False;
if FShowMessage then begin
ShowMessage("Check Fail");
FShowMessage := False
end
end
end;

procedure TForm3.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FShowMessage := True
end;

procedure TForm3.ListView1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key in [VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT] then
FShowMessage := True
end;


 
XShura ©   (2002-08-06 12:05) [6]

;) я щас примерно так и делаю, действительно изврат :)) но по ходу деваться некуда.... Спасибо!



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
3-60482
AccsProgr
2002-07-28 13:10
2002.08.19
Как программно поменять 2 записи местами (Custom сортировка)


14-60800
zje
2002-07-23 12:02
2002.08.19
Шифрование


14-60832
AlexanderVasjuk
2002-07-24 18:30
2002.08.19
Вопрос не в тему


6-60785
sargon
2002-06-08 07:19
2002.08.19
Загрузка картинок в Twebbrowser


3-60504
Александр Спелицин
2002-07-29 19:17
2002.08.19
Манипулящии в RunTime и DesignTime.