AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Komponente für "Brainstorm"-Diagramme gesucht
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente für "Brainstorm"-Diagramme gesucht

Ein Thema von Tyler · begonnen am 15. Jul 2004 · letzter Beitrag vom 19. Jul 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#11

Re: Komponente für "Brainstorm"-Diagramme gesucht

  Alt 16. Jul 2004, 14:21
hehe, muss ich wohl noch mal genauer lesen ^^

Naja, aber ich sag mal so: Selber machen, macht ja auch mehr Spass. Mal sehen wie ich damit klar komme, ansonsten werd ich auf die fertige Komponente zurückgreifen. Aufjedenfalll gut zu wissen, das es sowas gibt
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#12

Re: Komponente für "Brainstorm"-Diagramme gesucht

  Alt 16. Jul 2004, 16:46
Was habt ihr denn gegen den Vorschlag: Mit etwas Denkarbeit hab ich ganz schnell so eine Linie gebaut: (Siehe Anhang)
Benutzte Procedure:
Delphi-Quellcode:
procedure TForm1.Paint(x,y: integer; col: TColor; img: TImage);
var
xm: integer;
begin
// 250 = img.Width div 2
// 150 = img.Heigth div 2

xm:=(250-x) div 2 ;
with img.Canvas do
begin
Pen.Color:=col;
moveto(250,150); // Mitte des images
lineto(250-xm,150); // Waagrecht
lineto(250-xm,y); // Senkrecht
lineto(x,y); // nochmal waagrecht
end;
end; // of paint
Angehängte Dateien
Dateityp: exe project1_151.exe (375,5 KB, 21x aufgerufen)
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Rackergen2

Registriert seit: 13. Jul 2004
99 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Komponente für "Brainstorm"-Diagramme gesucht

  Alt 16. Jul 2004, 17:38
Soweit schonmal geil... Jetzt müsste man nur noch einbauen, dass der auch mal vertikal anfängt...

Delphi-Quellcode:
procedure TForm1.Paint(x1, y1, x2, y2: integer; col: TColor; img: TImage);
var
  xm, ym: integer;
begin
  with img.Canvas do
  begin
    Pen.Color:=col;
    moveto(x1,y1); // Mitte des images
    if abs(x1-x2)>abs(y1-y2) then
    begin
      xm:=(x1-x2) div 2 ;
      lineto(x1-xm,y1); // Waagrecht
      lineto(x1-xm,y2); // Senkrecht
      lineto(x2,y2); // nochmal waagrecht
    end
    else
    begin
      ym:=(y1-y2) div 2 ;
      lineto(x1,y1-ym); // Senkrecht
      lineto(x2,y1-ym); // Waagerecht
      lineto(x2,y2); // nochmal Senkrecht
    end;
  end;
end; // of paint
Kommt das hin? Ich konnte es leider nicht testen...
EDIT: getestet, verändert, läuft super

Nebenbei, wie hast du die Koordinaten beim Klick ausgelsen? (EDIT: hat sich erledigt)
Angehängte Dateien
Dateityp: exe project1_148.exe (157,5 KB, 18x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#14

Re: Komponente für "Brainstorm"-Diagramme gesucht

  Alt 16. Jul 2004, 17:44
Das sollte aber kein wirkliches Problem darstellen, oder? Skizze machen und dann kurz nachdenken.
Der Code ist fast exakt der gleiche wie der schon gepostete, also selbst ist der Programmierer
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Eisenherz

Registriert seit: 10. Jun 2002
Ort: Stadeln
33 Beiträge
 
Delphi 5 Professional
 
#15

Re: Komponente für "Brainstorm"-Diagramme gesucht

  Alt 16. Jul 2004, 17:47
Zitat von Toxman:
Was habt ihr denn gegen den Vorschlag
Eigentlich nichts. Es dürfte nur am eigentlichen Problem vorbei gehen.
Zitat von Tyler:
Ausserdem sollten sie, wenn ich die Panels bewege, an den Panels kleben bleiben und entsprechend ihre Länge ändern.
Daraus schließe ich, dass die "Panels" bewegt werden sollen und ich vermute, dass soll nicht durch das Programm, sondern durch den Anwender geschehen. Tyler will also einen Editor für Brainstorm-Diagramme erstellen.
Und wie das bei Editoren so üblich ist, werden die Wünsche nach der Bedienbarkeit explodieren. Wenn man ein "Panel" verschieben kann, dann dürfte schnell der Wunsch entstehen mehrere "Panels" auf einmal verschieben zu können. Dann will der Anwender bestimmt auch die Verbindungslinien manipulieren können. Da die Diagramme bestimmt größer werden sollen als der zur Verfügung stehende Bildschirmplatz muss man Scrollen können. Dann ist folglich der nächste Wunsch, dass man Zoomen kann. Bestimmt will man das Diagramm nicht nur auf dem Bildschirm bewundern, sondern auch drucken können. Und wem ist es noch nicht passiert, dass er aus Versehen etwas gelöscht hat. Dann flucht man über die Programme die kein Undo zur Verfügung stellen.

Es geht also um viel mehr als nur ein paar waagerechte und senkrechte Linien zu zeichnen.
aloa Eisenherz
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#16

Re: Komponente für "Brainstorm"-Diagramme gesucht

  Alt 16. Jul 2004, 19:00
Ja und? Diese ganzen Eigenschaften lassen sich ja auch realisieren. Bis jetzt war nur eine Möglichkeit gesucht, solche Linien zu zeichnen. Was jetzt damit gemacht wird, ist doch eigentlich wieder Tyler's Sache.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#17

Re: Komponente für "Brainstorm"-Diagramme gesucht

  Alt 16. Jul 2004, 19:15
@Eisenherz

hehe... stimmt natürlich, früher oder später steigen dann die Ansprüche. Aber mühsam ernährt sich das Eichhörnchen... ich fang erstmal klein an. Realisieren lässt sich das ja dann immer noch

Aber erstmal folgendes, achtung, viel Code ^^

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  x1, y1, x2, y2 : Integer;
  xdif1, ydif1 : Integer;
  xdif2, ydif2 : Integer;

begin

// PaintBox1.Canvas.Brush.Color := Form1.Color;
// PaintBox1.Canvas.Rectangle(-1,-1,Form1.Width,Form1.Height);
  PaintBox1.Canvas.Pen.Color := Form1.Color;
  PaintBox1.Canvas.MoveTo(x1_,y1_);
  PaintBox1.Canvas.LineTo(x1_,ydif1_);
  PaintBox1.Canvas.MoveTo(x2_,y2_);
  PaintBox1.Canvas.LineTo(x2_,ydif1_);
  PaintBox1.Canvas.MoveTo(x1_,ydif1_);
  PaintBox1.Canvas.LineTo(x2_,ydif1_);

  PaintBox1.Canvas.LineTo(xdif1,y1);
  PaintBox1.Canvas.LineTo(xdif1,y2);
  PaintBox1.Canvas.MoveTo(xdif1,y1);
  PaintBox1.Canvas.LineTo(xdif1,y2);

  if (Panel1.Top + Panel1.Height >= Panel2.Top) then
  begin
    x1 := Panel1.Left + Panel1.Width;
    y1 := Panel1.Top + (Panel1.Height div 2);
    x2 := Panel2.Left;
    y2 := Panel2.Top + (Panel2.Height div 2);

    ydif1 := Panel2.Top - ((Panel2.Top - (Panel1.Top + Panel2.Height)) div 2);
    xdif1 := x1 + (Panel2.Left - ((Panel2.Left - Panel1.Left + Panel1.Width) div 2));

    PaintBox1.Canvas.Pen.Color := clRed;
    PaintBox1.Canvas.MoveTo(x1,y1);
    PaintBox1.Canvas.LineTo(xdif1,y1);
    PaintBox1.Canvas.MoveTo(x2,y2);
    PaintBox1.Canvas.LineTo(xdif1,y2);
    PaintBox1.Canvas.MoveTo(xdif1,y1);
    PaintBox1.Canvas.LineTo(xdif1,y2);
  end else
  begin
    x1 := Panel1.Left + (Panel1.Width div 2);
    y1 := Panel1.Top + (Panel1.Height);
    x2 := Panel2.Left + (Panel2.Width div 2);
    y2 := Panel2.Top;
    ydif1 := Panel2.Top - ((Panel2.Top - (Panel1.Top + Panel2.Height)) div 2);
    xdif1 := (Panel2.Left - Panel1.Left + Panel1.Width) div 2;

    PaintBox1.Canvas.Pen.Color := clBlue;
    PaintBox1.Canvas.MoveTo(x1,y1);
    PaintBox1.Canvas.LineTo(x1,ydif1);
    PaintBox1.Canvas.MoveTo(x2,y2);
    PaintBox1.Canvas.LineTo(x2,ydif1);
    PaintBox1.Canvas.MoveTo(x1,ydif1);
    PaintBox1.Canvas.LineTo(x2,ydif1);
  end;

  x1_ := x1;
  y1_ := y1;
  x2_ := x2;
  y2_ := y2;
  ydif1_ := ydif1;
  xdif1_ := xdif1;
end;
Dem Form.Paint-Ereigniss hab ich nun den ButtonClick zugeordnet, bin mir aber nicht sicher ob das der beste Weg ist.

Was mich wundert, die rote Linie wird nicht ganz korrekt gelöscht, daher hab ich (hier jetzt auskommentiert) einfach jedesmal ein grosses Rectangle in FormFarbe gemalt. Das dürfte nichts ausmachen.

So schwer isses ja tatsächlich nicht
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#18

Re: Komponente für "Brainstorm"-Diagramme gesucht

  Alt 16. Jul 2004, 19:41
Das löschen per Rectangle kannst du später nicht mehr nutzen, ohne alle Verbindungen neu zu zeichnen. Benutz zum zeichnen lieber eine Procedure der du die (Anfangs- und) Endpunkte, sowie die zeichenfarbe und die Zeichenfläche übergibts. Das macht den Code übersichtlicher und du kannst einfacher an unterschiedlichen Stellen auf die procedure zugreifen. Tipp für Leserlichkeit:
Delphi-Quellcode:
PaintBox1.Canvas.Pen.Color := clRed;
PaintBox1.Canvas.MoveTo(x1,y1);
PaintBox1.Canvas.LineTo(xdif1,y1);
=
Delphi-Quellcode:
with paintbox1.canvas do
pen.color:=clred;
moveto(x,y);
lineto(x,y);
end;
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Eisenherz

Registriert seit: 10. Jun 2002
Ort: Stadeln
33 Beiträge
 
Delphi 5 Professional
 
#19

Re: Komponente für "Brainstorm"-Diagramme gesucht

  Alt 19. Jul 2004, 11:31
Zitat von Toxman:
Ja und? Diese ganzen Eigenschaften lassen sich ja auch realisieren. Bis jetzt war nur eine Möglichkeit gesucht, solche Linien zu zeichnen. Was jetzt damit gemacht wird, ist doch eigentlich wieder Tyler's Sache.
Wenn man sich nur auf ein Feature konzentriert, dann ist die Wahrscheinlichkeit hoch, dass das daraus resultierende Design zwar für dieses eine Feature aber nicht für einige der anderen Features geeignet ist. Wenn man dann das nächste Feature dazunehmen will, dann passiert es nicht selten, dass man feststellen muss, dass man den größten Teil seines Codes wegschmeißen und nochmal so gut wie von vorne anfangen darf. Deshalb wäre es gut, wenn man sich zuerst Gedanken macht, was das Programm so alles mit der Zeit wird können müssen und dementsprechend das Design danach ausrichtet.

Andererseits bedarf es dafür einer gewissen Erfahrung. Woher bekommt man die Erfahrung? Indem man selbst etliche male in solche Sackkgassen reingerannt ist. Also vergesst meinen Vorschlag und geht euren eigenen Weg.
aloa Eisenherz
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 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