Главная страница
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.014 c
6-60782
kronprince
2002-06-07 16:49
2002.08.19
Имя машины и IP-адрес ???


1-60557
HitMan
2002-08-07 15:03
2002.08.19
ANSI


1-60645
SinnerPro
2002-08-08 06:42
2002.08.19
MultiLanguage


1-60618
plastique
2002-08-08 14:00
2002.08.19
HELP PLEASE!!! Получить имя компонента под курсором мыши


1-60672
MikeFW
2002-08-06 11:05
2002.08.19
Как закрыть открытый узел в ТreeView?