Ver Mensaje Individual
  #8  
Antiguo 11-05-2011
martinartaza martinartaza is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 77
Reputación: 14
martinartaza Va por buen camino
Question Me ayudas a entenderlo.

Hola eh leido Booch y creo que la VCL uno nunca deja de sorprenderse. Estuve estudiando tu código y en principio se entiende lo que realiza, pero cuando quise hacer una pequeña modificación, para desgracia no me anda, estuve viéndolo y tratando de buscarla la vuelta y nada.
Te comento la modificación que realize.
Declaro 2 variables publicas.
Código Delphi [-]
    insertar2x2: Boolean; // Presiono en boton 2x2.
    cuantos2x2: integer;  // Para llevar los nombres de los bloques
Le agrego un botón que dice Agregar 2x2.
En el evento onclick del boton pongo la bandera en true.
Código Delphi [-]
procedure TForm1.BInsertar2x2Click(Sender: TObject);
begin
insertar2x2:= True;
end;
Y por ultimo modifico el evento MouseDown del TPaintBox, tratando que solo tome el nuevo camino cuando se presiono el botón, o sea creo que deberia seguir andando igual cuando no se presiono en el botón.

Código Delphi [-]
procedure TForm1.PBoxMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var h: Boolean;
nombre2x2: string;
bl : TBlock;
begin
if not insertar2x2 then
   begin
   FRoot.DoMouseDown(Button, Shift, X, Y, h);
   PBox.Refresh;
   end
else
   begin
   nombre2x2:= 'Block 2 x 2 - ' + IntToStr(cuantos2x2);
   inc(cuantos2x2);
   bl := TBlock.Create;
   bl.Rect := Rect(x, y, x+61, y+51);
   bl.Name := nombre2x2;
   TContact.Create(bl, ckInput);
   TContact.Create(bl, ckInput);
   TContact.Create(bl, ckOutput);
   TContact.Create(bl, ckOutput);
   FRoot.Add(bl);
   insertar2x2:= false;
   end;
end;

Se inserta los bloques, pero ya no funciona a la hora de dibujar nuevas lineas y es justo ahí donde se me quemo un par de cables.

Rounin, te comento que me gusta mucho tu código, creo que sobre este tipo de cosas hay poca documentación, mientras que DB se tiene Millones de lugares donde leer y preguntar, pero sobre diseñar software tipo CAD (Diseño Asistido por Computadora), no hay mucho .

Desde ya muchas gracias.
Responder Con Cita