Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
ВнизОпять про 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c