Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Suche Pfeile zur Visualisierung von Beziehungen (https://www.delphipraxis.net/97674-suche-pfeile-zur-visualisierung-von-beziehungen.html)

torud 14. Aug 2007 12:21


Suche Pfeile zur Visualisierung von Beziehungen
 
Hallo Wissende,

ich habe ein kleines Tool, mit dem sich XP-Buttons oder ähnliche Inhaltsträger erstellen kann, um Gruppen anzulegen. Diese werden dann einfach mit der Caption befüllt und so verschoben wie man sich die Struktur eines Unternehmens o.ä. vorstellt. Um diese nun noch in Beziehungen zu bringen suche ich noch eine Komponente, die mir verschiedene Pfeile bietet, die zumindest einige Anpassungen ermöglicht, wie z-b.:

Farbe,
Grösse,
Drehwinkel,
Pfeilgrösse und
Dicke...

Irgendwie konnte ich nicht wirklich was finden. Das was ich bei Torry gefunden habe, war nicht Live-Tauglich, also nicht z.b. nicht drehbar. Wenn man die Pfeile an die Buttons oder andere Controls andocken könnte wäre das auch cool.

RavenIV 14. Aug 2007 12:53

Re: Suche Pfeile zur Visualisierung von Beziehungen
 
Wenn's was kosten darf:
ExpressOrgChart Suite
$129.99 with full source code, $89.99 without full source code

http://www.devexpress.com/Products/V...hart/Index.xml

torud 14. Aug 2007 13:34

Re: Suche Pfeile zur Visualisierung von Beziehungen
 
Danke für Deinen Tipp! Leider war das nicht das, was ich suche, da die nur das bieten, was ich schon habe. Ich brauche einfach nur die Pfeile, um die Beziehungen selbst dazwischen herstellen zu können. Ich könnte das zwar auch mit tranparenten PNG-Pfeilen machen, aber dann kann der Kunde nicht FREI drehen, sondern muss das Bild über eine Trackbar ändern. Das ist ziemlich umständlich und dauert manchmal auch zu lange...

Gibt es noch andere Möglichkeiten?

Ghostwalker 14. Aug 2007 13:46

Re: Suche Pfeile zur Visualisierung von Beziehungen
 
Spontan würd ich sagen, selber zeichnen :) Das sollte nicht zu schwer sein. Du brauchst lediglich eine Zeichenfläche (dürfte das Fenster sein auf dem die Buttons sind), sowie anfangs und endpunkte.

torud 14. Aug 2007 14:07

Re: Suche Pfeile zur Visualisierung von Beziehungen
 
Ok, da ich da noch nicht ganz durchsteige füge ich mal noch folgende Infos hinzu. Die Buttons, Panels und Gradients sind alles TControls, die auf einer TScrollbox platziert werden und live verschoben werden können. Ich brauche also einen oder mehrer Pfeile, welche ich dieser Scrollbox hinzufügen kann, die möglich auch von TControl kommen, damit ich diese auch ansprechen, verschieben und zur Laufzeit noch drehen und sonstwie ändern kann.

Wie könnte also Dein Ansatz da funktionieren?

Ghostwalker 14. Aug 2007 16:37

Re: Suche Pfeile zur Visualisierung von Beziehungen
 
Als Ansatz würde sich da TGraphicsControl anbieten. Zwei Punktkoordinaten für Anfangs- und Endpunkt als zusätzliche Propertys. und dann auf den Canvas entsprechend Pinseln. Die Position und Höhe und Breite haste automatisch mit dabei.

torud 14. Aug 2007 18:22

Re: Suche Pfeile zur Visualisierung von Beziehungen
 
Hört sich gut an und liest sinnvoll, aber ich damit noch 0-Erfahrung und in diesem Forum waren NUR 5 Threads zum Thema TGraphicsControl zu finden. Naja, da werde ich wohl noch etwas googlen müssen. Ich hoffe nur, dass ich den gezeichneten Pfeil noch anklicken und verschieben kann!?

oki 14. Aug 2007 19:37

Re: Suche Pfeile zur Visualisierung von Beziehungen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

ich hatte aktuell ein ähnliches Problem. Meine Verbinder sollen zwar nicht schräg laufen, dafür aber mehrere Ecken haben. Ich hab es mit TGraphicControl probiert. Dann auf TCustomControl geändert. Hier meine Erfahrungen:

TGraphicControl:
Vorteile:
- Hintergrund ist schon transparent,
Nachteile:
- kein Focus
- Größenänderung nicht mit Perform machbar
- nicht durchklickbar

TCustomControl:
Vorteile:
- alle meine anderen Visuellen Elemente sind von TCustomControl abgeleitet (gemeinsamme Basisklasse für Grundfunktionen Selektieren Größe ändern ...)
- Fokus kann gewechselt werden (DoEnter, DoExit)
Nachteile:
- Hintergrund nicht transparent
- nicht durchklickbar


Gelöst habe ich die Themen:
- Größenänderung machbar
- durchklickbar


Bsp.:
siehe Anhang

torud 15. Aug 2007 08:26

Re: Suche Pfeile zur Visualisierung von Beziehungen
 
Hallo,

das sieht schon eher nach dem aus, was ich suche. Also ich will ehrlich sein. Ich habe keine Ahnung, wie Du das realisiert hast, aber könntest du mir ein kleinen Happen zum Frühstück reichen? Nicht alles, einfach nur einen Anfang, da ich wirklich nicht weiss, wie es losgehen soll.

Ich suche hier mal im Forum weiter danach, vielleicht finde ich ja was passendes...

oki 15. Aug 2007 11:08

Re: Suche Pfeile zur Visualisierung von Beziehungen
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hi torud!

Mein ansatz war folgender.

Ich benötige mehrere unterschiedliche Komponenten, die zur Laufzeit in einer ScrollBox erstellt und bearbeitet werden können. Dazu zählen verschiedenste Komponenten für spezielle Zwecke. Unter anderem sollen diese Elemente in Gruppenboxen angeordnet sein. Im Bild ist zum Bsp. Mein Label mit den entsprechenden Verbindern in einer Gruppenbox zu sehen. Damit ich von "außen" (Hauptprogramm) alle einheitlich suchen oder ansprechen kann, hab ich mir eine Basisklasse geschrieben, in der meine Grundfunktionen enthalten sind.

Delphi-Quellcode:
  TBaseCustomControl = class(TCustomControl)
  private
    FCaption: String;
    FMoveable: Boolean;                // Control verschiebbar
    FOnItemSelected: TNotifyEvent;
    FSelected: Boolean;                 // Control selectiert
    FShowMode: TSeyShowMode;            // Anzeige für Programm-/Designdarstellung
    procedure SetCaption(const Value: String);
    procedure SetSelected(const Value: Boolean);
  protected
    procedure CreateWnd; override;
    procedure DoEnter; override;
    procedure DoExit; override;
    procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
    procedure Paint; override;
    procedure SetFirstName;
    procedure SetName(const Value: TComponentName); override;
    procedure SetShowMode(const Value: TSeyShowMode); virtual;
  public
    Constructor Create(AOwner: TComponent); override;

    property Caption : String read FCaption write SetCaption;
    property Color;
    property Font;
    property Moveable : Boolean read FMoveable write FMoveable;
    property OnItemSelected : TNotifyEvent read FOnItemSelected write FOnItemSelected;
    property Selected : Boolean read FSelected write SetSelected;
    property ShowMode : TSeyShowMode read FShowMode write SetShowMode;
  published
    procedure DoItemSelected(Sender : TObject); virtual;
  end;
Von dieser Basisklasse leite ich dann meine weiteren Controls ab. Ein wesentlicher Unterschied zwischen meinen Connectoren und den anderen Elementen (z.B. Label) ist, dass der Connector über die Eckpunkte in seiner Größe verändert wird. Eckpunkt greifen und verschieben. Zwischen zwei Eckpunkten gibt es z.B. horizontale und vertikale Zugpunkte um die entsprechende Teillinie mit ihren Eckpunkten zu verschieben. Da hab ich recht lange dran gesessen.
Bei den Labels ist es einfacher, Dort kann ich durch Ziehen der äußeren Eckpunkte die Größe ändern. Den Code dazu findest du hier im Forum.

Um das zu verdeutlichen hab ich noch mal was in den Anhang gelegt.

Bei den Connectoren entstand zusätzlich das Problem, dass das Control ein Viereck ist, aber nur die Linien sichtbar sein sollen. Geht also ein Verbinder von links oben nach rechts unten, so würde er alle anderen Elemente verdecken (optisch und für Maus-Aktionen). Suche im Forum nach "durchklickbar", dann findest du entsprechende Beispiele für die Verwendung von Ranges.

Ich helfe dir gerne bei deinem Problem, möchte aber nicht den kompletten Code hier posten. erstens habe ich das Projekt nicht als open Source angelegt, zweitens ist auch noch nicht alles fertig.
Funktionen wie:
- Ausrichten am Gitter
- Fixieren an anderen (meinen) Controls
- Verbindung von Eingangs-/Ausgangs-Gates
- Anzeige und Bearbeitung von Eigenschaften

sind nicht oder nur teilweise umgesetzt. Arbeite ich halt dran.

Gruß oki


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 Uhr.
Seite 1 von 4  1 23     Letzte »    

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