Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.23;
Скачать: CL | DM;

Вниз

Программа входит в цикл и больше ни на что не реагирует   Найти похожие ветки 

 
Vladik   (2006-04-10 14:35) [0]

Программа входит в цикл  и больше ни на что не реагирует, пока цикл не закончится. А мне нужно, чтобы я, нажимая  кнопку, мог менять значение переменной в этом цикле.
Благодарю


 
Amoeba ©   (2006-04-10 14:39) [1]

Для начала код в студию!


 
TUser ©   (2006-04-10 14:46) [2]

Aplication.ProcessMessages в теле цикла

или вынести этот цикл в отдельный поток, доступ к пеерменным в цикле и по нажатию кнопки синхронизировать критическими секциями.


 
Сергей М. ©   (2006-04-10 14:55) [3]

Application.ProcessMessages  тебе на вооружение.


 
balepa ©   (2006-04-10 14:58) [4]


> Amoeba ©   (10.04.06 14:39) [1]
> Для начала код в студию!


Зачем тут и так все ясно


 
Vladik   (2006-04-10 15:15) [5]

//ПРОГА ИЗМЕРЯЕТ СЕЧЕНИЕ  ТРУБЫ ПО ФОТО НА СИНЕМ ФОНЕ
var
 Form1: TForm1;
 bm:TBitMap;
 arr:TBitMap;
 L:integer; //цвет пикселя
 k:real;  //коэфф. перевода пиксель/мм
 m:integer;
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);//загружеем  картинки
begin
    bm:=TBitMap.Create;
    bm.LoadFromFile("c:\OTVS.bmp");  //тут - труба переменного сечения на синем фоне
    Form1.Canvas.Draw(0,0,bm);
    arr:=TBitMap.Create;
    arr.LoadFromFile("c:\arrow.bmp"); // тут - стрелка, указывающая место измерения
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  gor,ver:integer;
  m1:integer;
begin
    for ver:=1 to 500 do  //сканируем фото слева направо и сверху вниз
       begin
       m1:=m;//максимальное сечение трубы на предыдущей строке
       StaticText1.Caption:=IntToStr(m1);
       m:=0;
          for gor:=1 to 600 do
             begin
                  L := ColorToRGB(Form1.Canvas.Pixels[gor,ver]); //определяю цвет каждого пикселя
                  Canvas.Brush.Color:=L;
                  Canvas.Pen.Color:= L;                    
                   Form1.Canvas.Pixels[gor,ver]:=L;
                   if L <> 16711680 then m:=m+1;//если пиксел не синий начинаем отсчёт поперечного сечения трубы на этой высоте
                  Form1.Canvas.Draw(640,ver-10,arr);//стрелка опускается вниз по правой сторене фото трубы указывая, где проводится измерение
                  Label1.Caption:=FloatToStr(m/k); //переконвертируем пиксели в мм
             end;
      end;
end;

procedure TForm1.Button79Click(Sender: TObject);
begin
  k:=m/79;//я знаю, где сечение трубы точно 79,0 мм
           //нажав эту кнопку в этом месте хочу начинать пересчёт диаметра пикселей в мм, но  кнопка не откликается

end;

end.


 
Сергей М. ©   (2006-04-10 15:22) [6]


> я знаю, где сечение трубы точно 79,0 мм


Тебе - в сантехники)


 
Vladik   (2006-04-10 15:33) [7]

To Сергей.М.
 79.0  -  диаметр трубы канала  атомного реактора  РБМК-1000


 
Сергей М. ©   (2006-04-10 15:38) [8]


> Vladik   (10.04.06 15:33) [7]


Малацца.
Продолжай.


 
Vladik   (2006-04-10 16:10) [9]

Application.ProcessMessages  - работает, ей Богу, работает!  Всем спасибо.


 
Сергей М. ©   (2006-04-10 16:20) [10]

Аминь.


 
TUser ©   (2006-04-10 16:44) [11]

> Vladik   (10.04.06 16:10) [9]

Не рванет? Хорошо.



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

Текущий архив: 2006.04.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
2-1144272382
in-tank
2006-04-06 01:26
2006.04.23
Как хранить данные для подсказок.


2-1144620145
mfender
2006-04-10 02:02
2006.04.23
Отследить изменение значения поля


2-1144448650
ctudent
2006-04-08 02:24
2006.04.23
TreeView+база данных


2-1144751826
Сергей И.
2006-04-11 14:37
2006.04.23
Помогите пожалуйста очень срочно нужно


2-1144653791
Gydvin
2006-04-10 11:23
2006.04.23
Control Myrich1 has no parent window