Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Prozessvirtualisierung mit erweiterten Features (https://www.delphipraxis.net/167738-prozessvirtualisierung-mit-erweiterten-features.html)

TheProfi 15. Apr 2012 20:19

Prozessvirtualisierung mit erweiterten Features
 
Liste der Anhänge anzeigen (Anzahl: 2)
Moin zusammen,

mache diesen Thread auf, da ich folgendes Vorhabe und in dem Bereich Grafikprogrammierung nicht sonderlich fit bin.
Im Anhang findet Ihr mein ersten Entwurf :( und der Wunsch :-D wie es aussehen soll...

Projektziel ist es eine Unit/Komponente zu bauen, in der man Flowchartobjekte generieren kann, auf verschiedene feste Ebenen/Zeilen. Diese dynamisch mit Pfeilen verbinden, Objekteigenschaften wie Dokumente damit verknüpfen oder andere Informationen, eigentlich beliebig gestaltbar machen kann. Die Objekte sollen zu Laufzeit erstellt in einer Datenbanktabellen gespeichert und verwaltet werden, da diese Objekt mit weiteren Daten verknüpft werden sollen.

Ich hab das ganze mal in einem ersten Wurf mit einem TPanel als Zeichenfläche gemacht. Die Objekte werden aus einer Tabelle ausgelesen und in einem dynamischen Array verwaltet. Allerdings kann man auf Panel nicht zeichnen (LineTo), etc.. Drucken soll man es auch können inkl. Skalierung. Wer hat so etwas schon mal gemacht oder kennt Komponenten die so etwas können. Eventuell könnten man so etwas auch als Komponente entwickeln lassen oder selber machen...

Code:
procedure TForm10.ACFlowReloadExecute(Sender: TObject);
begin
  ACFlowDestroyExecute(Sender);
  with DataModule1 do begin
    with qdummy01 do begin
      sql.Clear;
      sql.add('select * from tblFlowchart');
      open;
      if recordcount > 0 then SetLength(FlowChartObj,recordcount);
      while not eof do begin
        FlowChartObj[recno-1].pid               := fieldbyname('id').AsInteger;
        FlowChartObj[recno-1].panel             := TLMDSimplePanel.Create(Self);
        FlowChartObj[recno-1].panel.Parent      := zeichenflaeche; //Parent ist das Panel
        FlowChartObj[recno-1].panel.transparent := True;
        FlowChartObj[recno-1].panel.sizegrip    := false;
        FlowChartObj[recno-1].panel.AllowSizing := false;
        FlowChartObj[recno-1].panel.color       := zeichenflaeche.Color;
        FlowChartObj[recno-1].panel.tag         := fieldbyname('id').AsInteger;
        FlowChartObj[recno-1].panel.Top         := fieldbyname('rTop').AsInteger;
        FlowChartObj[recno-1].panel.Left        := fieldbyname('rLeft').AsInteger;
        FlowChartObj[recno-1].panel.Width       := 100; //erstmal feste Größen nehmen
        FlowChartObj[recno-1].panel.Height      := 100;
        FlowChartObj[recno-1].panel.OnMouseDown := WinControlMouseDown; //Ereigniss MouseDown
        FlowChartObj[recno-1].panel.OnMouseUp   := WinControlMouseUp; //Ereigniss MouseDown
        FlowChartObj[recno-1].panel.OnMouseEnter := WinControlMouseEnter; //Ereigniss MouseDown
        FlowChartObj[recno-1].panel.OnMouseExit := WinControlMouseLeave; //Ereigniss MouseDown
        FlowChartObj[recno-1].panel.OnMousemove := WinControlMouseMove; //Ereigniss MouseDown
        FlowChartObj[recno-1].panel.OnClick     := WinControlOnClick; //Ereigniss MouseDown


        FlowChartObj[recno-1].oShape            := TADVShape.Create(self);
        FlowChartObj[recno-1].oShape.Parent     := FlowChartObj[recno-1].panel;
        case fieldbyname('shapetype').AsInteger of
        1 : begin
              FlowChartObj[recno-1].oShape.Shape      := stRectangle;
              FlowChartObj[recno-1].oShape.RotationAngle := 0;
            end;
        2 : begin
              FlowChartObj[recno-1].oShape.Shape        := stRectangle;
              FlowChartObj[recno-1].oShape.RotationAngle := 45;
            end;
        3 : begin
              FlowChartObj[recno-1].oShape.Shape      := stCircle;
              FlowChartObj[recno-1].oShape.RotationAngle := 0;
            end;
        end;

        FlowChartObj[recno-1].oShape.autosize   := true;
        FlowChartObj[recno-1].oShape.Top        := 30;
        FlowChartObj[recno-1].oShape.Left       := 15;
        FlowChartObj[recno-1].oShape.Width      := 70;
        FlowChartObj[recno-1].oShape.Height     := 70;
        //FlowChartObj[recno].oShape.OnMouseDown := WinControlMouseDown; //Ereigniss MouseDown
        FlowChartObj[recno-1].oShape.Appearance.ColorTo := clSkyBlue;

        FlowChartObj[recno-1].oButton           := TcxButton.Create(self);
        FlowChartObj[recno-1].oButton.Parent    := FlowChartObj[recno-1].panel;
        FlowChartObj[recno-1].oButton.Top       := 2;
        FlowChartObj[recno-1].oButton.Left      := 2;
        FlowChartObj[recno-1].oButton.Width     := 25;
        FlowChartObj[recno-1].oButton.Height    := 25;
        FlowChartObj[recno-1].oButton.action    := ACButton;
        next;
      end;
    end;
  end;
  ACFlowConnectRefreshExecute(Sender);
end;

Neumann 15. Apr 2012 20:44

AW: Prozessvirtualisierung mit erweiterten Features
 
Liste der Anhänge anzeigen (Anzahl: 2)
Versuche es mal mit der Komponente TSimpleGraph. Die macht so etwas.

Ich habe diese Komponente seit langem im Einsatz, allerdings habe ich sie für meinen Zwecke etwas modifiziert und verwende sie, um Programmoberflächen ausserhalb von Delphi (auch für den Anwender) nahezu frei gestaltbar zu machen.

ConstantGardener 16. Apr 2012 05:26

AW: Prozessvirtualisierung mit erweiterten Features
 
...DrawingObjects von Angus Johnson wäre sehr brauchbar.

wenn es was kosten darf: TMS Diagram Studio oder BlogEngine usw.

TheProfi 17. Apr 2012 15:01

AW: Prozessvirtualisierung mit erweiterten Features
 
Danke für die Antworten.
Die Komponenten dürfen auch was kosten.
TMS hab ich mir schon angeschaut. BlogEngine und TSimpleGraph konnte ich bislang nicht im WEB als Download finden. Habt Ihr einen Link?

Was mir durch den Kopf gegangen ist. Man könnte es doch auch als 2D Vektor machen. Gibt es da vielleicht etwas?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz