Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
1-60562
aaasv
2002-08-06 17:32
2002.08.19
TWordApplication


14-60804
Mike B.
2002-07-22 15:30
2002.08.19
Гибкие методологии проектирования


4-60894
Andrew_k
2002-06-14 09:51
2002.08.19
ICQ`s window


3-60484
roev
2002-07-29 07:35
2002.08.19
поделитесь, у кого есть, ERwin-ом


1-60632
иван61
2002-08-04 13:06
2002.08.19
Надоел ящик с песком. Помогите!




   Наверх