Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #12  
Antiguo 23-03-2009
astwin astwin is offline
Miembro
 
Registrado: feb 2009
Posts: 21
Poder: 0
astwin Va por buen camino
Hola, ya me he puesto a fondo con TsimpleGraph. Voy poco a poco comprendiendo como funciona.

El problema que tengo es que el linkado entre objetos se realiza mediante lineas que parten desde el centro del objeto, no pudiendose definir un punto fijo del objeto para linkarlo a otros.

Mi solucion ha sido crear cada bloque como un rectangulo, y las entradas y salidas tambien como rectangulos mas pequeños. El problema ahora lo tngo a la hora de mover el bloque grande, que no se como hacer que se puedan mover a la vez los pequeños (ademas el bloque grande esta alineado a la cuadricula y los pequeños no). Haber si alguien puede echarme un cable.

Código Delphi [-]
type
  // Rectangulo que servirá como entrada
  TGraphIn=class(TRectangularNode)
    public
      procedure init();
  end;
  // Rectangulo que servirá como salida
  TGraphOut=class(TRectangularNode)
      procedure init();
  end;
  // Rectangulo que será el cuerpo del bloque
  TGraphBlock=class(TRectangularNode)
    public
      nIn,nOut: integer ; //numero de entradas y de salidas
      vIn: array of TGraphNode;
      vOut: array of TGraphNode;
      IOHeigth: Integer;
      //GraphIORadious: integer; // Altura de las entradas y salidas
      InSelected:integer;
      OutSelected:integer;
      procedure init();
      //function QueryHitTest(const Pt: TPoint): DWORD; override;
      //procedure Draw(Canvas: TCanvas); override;
      //procedure MouseDown(Button: TMouseButton; Shift: TShiftState; const Pt: TPoint);override;
   end;

Type
  TGraphLine=class(TGraphLink)

  end;

const
  // ForEachObject Actions
  FEO_DesactiveIO             = 00;


implementation
uses
  unit1,unit2;





procedure TGraphBlock.init();
var
  I: Integer;
  inc: Integer;
  bound:Trect;
  pt: Tpoint;
begin
  // Opciones del nodo;
  self.NodeOptions:=[gnoMovable,gnoShowBackGround];
  // Imagen del nodo;
  self.Background.LoadFromFile('./images/sos.jpg');
  // Numero de entradas / salidas
    self.Nin:=3;   self.NOut:=4;
  // Creamos las entradas / salidas graficas
  self.IOHeigth:=8;
  setlength(vIn,nIn);
  setlength(vOut,nOut);
    // Entradas
    inc:=trunc((self.height-NIn*IOHeigth)/(Nin+1)); // Espacio entre entradas
    for I := 0 to nIn - 1 do
    begin
      pt.X:=left; pt.y:= Top+(i+1)*inc+i*IOHeigth;
      bound:= Rect(pt, Point(pt.X+IOHeigth, pt.Y+IOHeigth));
      form2.simpleGraph1.SnapToGrid:=False;
      vIn[i]:=form2.simpleGraph1.InsertNode(bound,TGraphIn);
      form2.simpleGraph1.SnapToGrid:=True;
      TGraphIn(vIn[i]).init;
    end;
    // Entradas
    inc:=trunc((self.height-NOut*IOHeigth)/(NOut+1)); // Espacio entre entradas
    for I := 0 to nOut - 1 do
    begin
      pt.X:=left+width-IOHeigth; pt.y:= Top+(i+1)*inc+i*IOHeigth;
      bound:= Rect(pt, Point(pt.X+IOHeigth, pt.Y+IOHeigth));
      form2.simpleGraph1.SnapToGrid:=False;
      vOut[i]:=form2.simpleGraph1.InsertNode(bound,TGraphIn);
      form2.simpleGraph1.SnapToGrid:=True;
      TGraphIn(vOut[i]).init;
    end;

  self.InSelected:=-1;
  self.OutSelected:=-1;
end;

procedure TGraphIn.init;
begin
  NodeOptions:=[gnoShowBackGround];
end;

procedure TGraphOut.init;
begin
  NodeOptions:=[gnoShowBackGround];
end;
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Generar bloques de números Natasha Nortman Varios 8 30-03-2008 15:47:54
Esquemas de bloques david.rguez Gráficos 1 01-09-2007 00:05:01
Ligado / Interconexión de dos BD/Sesiones _Willa Firebird e Interbase 11 28-06-2007 14:47:02
Bloques De Numeros Consecutivos dany2006 C++ Builder 5 15-11-2006 21:06:16
Interconexión de aplicaciones... adlfv OOP 1 12-08-2005 17:03:02


La franja horaria es GMT +2. Ahora son las 21:12:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi