Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Опять про ListView.OnChanging [D5, NT4]


XShura ©   (2002-08-06 09:23:00) 

Вчера задавал вопрос по поводу 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-а. Спасибо.


XShura   (2002-08-06 12:05:00) [1]

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


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

Наверно изврат, но все-таки (почему он вызывается несколько раз 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 09:58:00) [3]

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


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

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


XShura   (2002-08-06 09:39:00) [5]

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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо