Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2008, 21:44   #1
Кирилл13
Пользователь
 
Регистрация: 10.11.2008
Сообщений: 19
По умолчанию рисование дендограммы

Прошу помочь в следующих проблемах

1. в
Код:
procedure TForm1.TabSheet5Show(Sender: TObject);
есть такие две строчки
Код:
TrackBar5.Min:=min_d; TrackBar5.Max:=max_d;
в
Код:
procedure TForm1.TrackBar5Change(Sender: TObject);
происходит рисование, т.е при нажатии на trackbar на Image рисуется "дендограмма". КАК исправить код, что бы избежать зацикливания при нажатии на Trackbar

2. Кто может помочь в реализации дендограммы. Начальная реализация
Код:
procedure TForm1.TrackBar5Change(Sender: TObject);
var
  tk, i, j, nkMoveTo, nkLineTo, k, s : integer;
  Flag_mas : array [1..19] of integer;
  KR : array [1..19] of integer;
begin
  tk:=0;    // òåêóùåå ðåáðî
  nkMoveTo:=0;   // íà÷àëüíûå êîîðäèíàòû ïåðåìåùåíèÿ êóðñîðà
  nkLineTo:=12;  // íà÷àëüíûå êîîðäèíàòû ëèíèè
  L_5:=(Trackbar5.Width) div max_d;
  for i:=1 to SpinEdit2.Value-1 do
    Flag_mas[i]:=0;
  {ÎÏÐÅÄÅËßÅÌ ÊÎËÈ×ÅÑÒÂÎ ÎÁÚÅÄÈÍÅÍÈÉ ÊËÀÑÒÅÐΠÍÀ ÊÀÆÄÄÎÌ ÐÀÑÑÒÎßÍÈÈ}
  k:=1;
  S:=0;
  For i:=1 to max_d do
    KR[i]:=0;
  k:=1;
  s:=0;
  while (s <>  Kolvo_K_5) do
    begin
      For i:=1 to SpinEdit2.Value-1 do
        For j:=i+1 to SpinEdit2.Value-1 do
          If (StringGrid11.Cells[i,j] <> '*') and (StringGrid11.Cells[i,j]=IntToStr(min_d)) then
            begin
              KR[k]:=KR[k]+1;
              s:=s+1;
            end;
      k:=k+1;
      min_d:=min_d+1;
    end;
//  ShowMessage('Êîëè÷åñòâî ðàññòîÿíèé:'+#13+IntToStr(KR[1])+#13+IntToStr(KR[2])+#13+IntToStr(Kr[3]));
  case (TrackBar5.Position) of
    0..5:
      begin
        i:=1;
        while (tk <> Kolvo_K_5) do
          begin
            if Trackbar5.Position=0 then
               I_min[TrackBar5.Position]:=I_min[Trackbar5.Position+1];
            //if (Flag_mas[I_min[TrackBar5.Position]]=0) and (Flag_mas[J_min[TrackBar5.Position]]=0) then
            if (KR[i] <> 0) then
              begin
                with Image5.Canvas do
                  begin
                     MoveTo(nkMoveTo, I_min[TrackBar5.Position+tk]*13);
                     LineTo(nkLineTo, I_min[TrackBar5.Position+tk]*13);
                     MoveTo(nkMoveTo, J_min[TrackBar5.Position+tk]*13);
                     LineTo(nkLineTo, J_min[TrackBar5.Position+tk]*13);
                     MoveTo(nkLineTo, I_min[TrackBar5.Position+tk]*13);
                     LineTo(nkLineTo, J_min[TrackBar5.Position+tk]*13);
                  end;
                KR[i]:=KR[i]-1;
              end
            else
              begin
                i:=i+1;
                nkMoveTo:=(tk-1)*(L_5-12);
                nkLineTo:=tk*(L_5-12);
                with Image5.Canvas do
                  begin
                    MoveTo(nkMoveTo, I_min[TrackBar5.Position]*13);
                    LineTo(nkLineTo, I_min[TrackBar5.Position]*13);
                    MoveTo(nkMoveTo, J_min[TrackBar5.Position]*13);
                    LineTo(nkLineTo, J_min[TrackBar5.Position]*13);
                    MoveTo(nkLineTo, I_min[TrackBar5.Position]*13);
                    LineTo(nkLineTo, J_min[TrackBar5.Position]*13);
                  end;
              end;  //  êîíåö ELSE-BEGIN
            Flag_mas[I_min[TrackBar5.Position]]:=1;  // ïîìå÷àåì âåðøèíû îáúåäèíåíûå
            Flag_mas[J_min[TrackBar5.Position]]:=1;  // â êëàñòåð
            tk:=tk+1;
          end;   // êîíåö âàéëà
      end;  // êîíåö âòîðîñòóïåí÷àòîãî   case
  end; 
end;
P.S.
Извиняюсь за ужасное оформление
Кирилл13 вне форума Ответить с цитированием
Старый 19.11.2008, 22:19   #2
Кирилл13
Пользователь
 
Регистрация: 10.11.2008
Сообщений: 19
По умолчанию

Мне здесь могут помочь или нет?
Кирилл13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
рисование в TImage Rusl92 Общие вопросы Delphi 8 02.05.2008 20:23
Рисование... HunterMan Win Api 10 30.04.2008 23:46
Рисование на экране... Roberto Win Api 3 07.04.2008 07:35
Рисование вTImage Rusl92 Компоненты Delphi 27 02.04.2008 14:18
рисование изолиний Alar Паскаль, Turbo Pascal, PascalABC.NET 0 30.10.2006 14:17