ає наступна процедура.
procedure Tmain.dxBarButton5Click (Sender: TObject); i: integer;. Enabled: = true; // область побудова є доступною
dxBarButton6.Caption: = 'Моделювання';: = 0; w1: = 0;. Canvas.Brush.Style: = bsSolid;. Canvas.Brush.Color: = clwhite;. canvas.FillRect (ClientRect); // Очищення области побудова
cxMemo1.Clear;: = 0; // кількість побудованіх зерен
Timer1.Enabled: = false; // таймер відключеній
flag: = false; // ознака те, что процес моделювання НЕ запущених
Розглянемо процес моделювання зросту зерен. Алгоритм візуалізації ЗРОСТАННЯ зерен и поиска координат точки крісталізації наведень на рис. 4.4. Далі наведено фрагмент процедури, за помощью Якої цею алгоритм БУВ реалізованій. p align="justify"> procedure Tmain.Timer1Timer (Sender: TObject); i, k, n, z, m: integer;, B, H, D: Real;, y, X3, x33, X4 , x44, Y3, y33, Y4, y44: Integer;: boolean;: boolean;// ознака того, что процес моделювання закінчено : integer ;// кількість зерен, что зростають . Interval: = round (dxBarSpinEdit2.Value * 1000);
// Встановлюємо колір та стиль заливки . Canvas.Brush.Style: = bssolid;. Canvas . Brush.Color: = clWhite;
// Заливка области побудова . canvas.FillRect (ClientRect); span>
// Колір заливки чорний, стиль - заливка відсутня . Canvas.Brush.Style: = bsClear ;
// Встановлюємо колір та товщина Лінії границі зерен
Image1.Canvas.Pen.Color: = col_c;. Canvas.Pen.width: = w_c; kol: = 0;
// Перебіраємо в ціклі ВСІ кола окрім утворюючого
for i: = 1 to j-1 do
// Если Розміри Кіл НЕ Прокуратура: за область побудова
if not (((x1 [i]-r [i]) <0) or ((x1 [i] + r [i])> Image1.ClientWidth) or ((y1 [i]-r [i]) <0) ((y1 [i] + r [i])> Image1.ClientHeight)) then begin [i]: = r [i] +1; kol : = kol +1; end;// збільшуємо Радіус кола на 1 Піксель
// Побудова Кіл З Новим радіусом
image1.canvas.Ellipse (x1 [i]-r [i], y1 [i]-r [i], x1 [i] + r [i], y1 [i ] + r [i]);; not (w1 = (j-1)) then// ЯКЩО галі не знайдені ВСІ точки крісталізації [ j]: = ...