Последнее обновление 22.11.2005

                       Компонент для отображения графов.

Ссылка на компонент

Ссылка на пример

 

    Компонент TGrInput является графическим редактором, позволяющим рисовать простые неориентированные графы. Каждая вершина создается в виде объекта TVertex, а ребро в виде объекта THeel.

    Класс TGrInput является наследником TPanel Для создания объекта типа TGrInput необходимо к проекту подключить модуль UGraph.pas и переписать в ту же папку все bitmap-ы.

Пример создания объекта :

Описание интерфейса

   Текущая операция отменяется правой кнопкой!

Редактирование графа осуществляется в четырех режимах:

     1)   Режим создания цепей

         

        Каждый новый клик создает новый элемент цепи.

        В этом режиме циклы создавать (в текущей версии) нельзя.

     2)  Режим добавления отдельных вершин и ребер

          

         Каждый клик по свободному пространству создает новую вершину.

         Клик по вершине выделяет ее (зеленым) и позволяет провести операцию удаления (клавиша Delete)

         Для удаления ребра необходимо выделить инцидентную ему вершину и  нажимая кнопку Tab

         выделить нужную вершину и затем ее удалить (клавиша Delete)

         Повторный клик по вершине позволяет создавать новые ребра (или ребра с вершинами)

          

     3)  Режим перемещения

          

           Перемещаемый элемент во время перемещения выделяется зеленым.

     4)     Является режимом "не редактирования" в этом режиме осуществляется программная

          обработка полученного графа в этом режиме перенумеровываются вершины и ребра

          (если порядок нумерации изменился в результате операций удаления),

          пересчитываются матрицы инцидентности и смежности.

               TMatrixType = array of packed array of Byte;      

               public
                        matrixI  : TMatrixType;
                        matrixS : TMatrixType;

 

    Базовые свойства и методы классов.

       Все ребра и вершины объединены в два списка 

        pBegV : TVertex;
        pBegH : THeel;

      но доступ к ним легко осуществляется при помощи свойств:

         Property Vertexes [i : integer] : TVertex  ...
         Property Heels[i : integer] : THeel           ...

-----------------------------------------------------------------------------

 

-------------------------------------------------------------------------------------------------        
 

      б) Класс TVertex

 

------------------------------------------------------------------------------------

    в)  Класс TGrInput

        Все базовые операции проводятся именно с этим классом!!!

       Индексация для всех элементов производится от единицы!!!

 

        Важно!!! Выделение цветом ребер и вершин производится следующим образом

      пример:

---------------------------------------------------------------------------------------------------------------------------------

        P.S.

        Среди достоинств данного компонента, хочется отметить,  быстроту работу графики, а среди недостатков

        нерациональное использование списков (хотелось как лучше, а получилось как всегда!!!)

       

 

 

Hosted by uCoz