Вниз
Скачать: CL | DM;

Несинхронность OnSetText   Найти похожие ветки 

 
DelphiLexx ©   (2007-08-03 18:01) [0]

У меня есть два DBGridEh"a (DBGridEh1, DBGridEh2) во 2-ом гриде есть колонка, в котором выставляются checkbox"ы, при выставлении checkbox"a происходит добавление записи, при снятии удалении записи из 1-ого грида, при выставление checkbox"a во 2-ом гриде срабатывает OnSetText. Так вот если очень быстро кликать по checkbox"ам, то может получиться, что мы сняли checkbox, а запись из первого грида не удалилась. Как заблокировать на время работы OnSetText DBGridEh2.MouseUp, чтобы не было повторных вхождений. В OnSetText"e разместил код:

 PROC_ST := Sender.OnSetText;
 Sender.OnSetText := nil;
 DBGridEh2.DataSource.DataSet.DisableControls;
 try
    ///здесь делаем добавление записи в DBGridEh1
 finally
   DBGridEh2.DataSource.OnDataChange := PROC_DC;
   DBGridEh2.DataSource.DataSet.EnableControls;    
   Sender.OnSetText := PROC_ST;
 end;


 
Вася Правильный   (2007-08-03 20:22) [1]

не путай процедурный и событийный подход
и вообще какая-то извращенная логика - закольцованность датасетов


 
DelphiLexx ©   (2007-08-03 20:33) [2]


> не путай процедурный и событийный подход
> и вообще какая-то извращенная логика - закольцованность
> датасетов

Ну и какие варианты предлагаешь?


 
Виталий Панасенко(дом)   (2007-08-03 21:37) [3]

Стреляться!...Датасетам...


 
Lacmus ©   (2007-08-04 09:29) [4]

>DelphiLexx ©   (03.08.07 18:01)  

Как идея


{$J+}

procedure TForm7.CheckBox1Click(Sender: TObject);
const
 bLock: Boolean = False;
begin
 if not bLock then begin
   bLock := True;
   try
     Label1.Caption := Label1.Caption + "1";
     Sleep(3000);
     Application.ProcessMessages
   finally
     bLock := False
   end
 end
end;



 
DelphiLexx ©   (2007-08-04 12:05) [5]

Где я возьму CheckBox1Click, у меня DBGrid"Eha. Надо как-то синхронизировать эти два DBGridEh"a с их DataSet"ами.


 
DelphiLexx ©   (2007-08-06 09:48) [6]

Удалено модератором
Примечание: Обсуждение модерирования


 
DelphiLexx ©   (2007-08-06 09:50) [7]


> Как идея

Не помагает делал даже так:

...
     OldRecCount := MainDS.RecordCount;
     if Text = "1" then
       NewRecCount := OldRecCount + 1
     else
       NewRecCount := OldRecCount - 1;
     PerformSelection(Text <> "1");
     while (MainDS.RecordCount <> NewRecCount)  do  sleep(100);
      Sender.AsString := Text;
...



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

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



Память: 0.46 MB
Время: 0.026 c
8-1164033379
Виктор1
2006-11-20 17:36
2007.08.26
из AVI в BitMap


15-1185207849
Nikfel
2007-07-23 20:24
2007.08.26
Как платить за размер в интернете.


15-1185470143
atruhin
2007-07-26 21:15
2007.08.26
Какой максимальный размер параметра реестра типа REG_SZ


2-1185783990
Забыл как зовут
2007-07-30 12:26
2007.08.26
Смена курсора


2-1185876280
Мануха
2007-07-31 14:04
2007.08.26
отчет таблиц в qreport




   Наверх