Componentes gráficos

Que ta, mi nombre es Irving Cruz y soy estudiante de ing. En computación.
Tengo una gran duda con los componentes gráficos de Delphi.
Tengo que desarrollar una especie de herramienta CASE, y aunque he trabajado
Un tiempo con Delphi, no tengo idea de como hacer lo siguiente:
Tengo que crear componentes gráficos que el usuario pueda manipular en el momento de correr el programa. Algo así como lo que permite la GUI de Delphi que colocas un botón, una imagen, una etiqueta, etc. Y lo puedes mover, hacer más grande o pequeño tomándolo de uno de sus vértices. No se si los componente visuales de Delphi tenga una propiedad que al momento de ejecutar el programa se pueda hacer esto, o si necesito otro tipo de componente.
De cualquier forma espero me puedas ayudar.
Gracias de antemano.

3 Respuestas

Respuesta
1
Si estas queriendo hacer algo así como VISIO(el que he visto), para agregar lineas, resistencias, lo que fuere, deberás crear tus propios controles en delphi que representen a todos los tipos de lineas que agregues.
O en tal caso trabajar con imágenes (drag & drop) y manejar la ubicación del mouse y que botón está apretado, etc, etc.
Te ejemplifico:
En una imagen de 200 x 200, el mouse lo colocas en la esquina inferior derecha (sería x= >198 and y=>198) se cambia el puntero por el de las flechas de tamaño y si arrastras el mouse con el botón apretado, vas verificando hacia que dirección (x, y) y con esto agrandas o achicas la imagen. Claro está que la imagen posee una linea, cuadrado, rombo, etc.
Es difícil pero no imposible(Te adelanto que para que quede chulo deberás ingeniarte mucho)
Respuesta
1
Me temo que tendrás que gestionar 'a mano' el desplazamiento y visualización de componentes en run-time. Ni delphi ni la API de windows proveen de métodos (al menos que yo sepa) para hacerlo. Existen entradas en la API que te facilitaran tareas de una gestión propia, por ejemplo
procedure TfrmPreSub.Control1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
PanSeries.Perform(WM_SYSCOMMAND, $F012, 0);
end;
Te permitirá arrastrar controles con el ratón. Para más información mira en www.q3.nu (trucos delphi) y www.vbapi.com (api de windows)
Respuesta
1
No existe una propiedad directa que te sirva. Lo que tienes que hacer es desarrollar manjeadores para los eeventos del ratón (on mouse over, etc...) de tal forma que cuando pinches sobre el componente y mantengas pulsado el ratón y lo muevas, se mueva el componente. Es fácil de hacer. Mira en la ayuda los eevntos on mouse down y on mouse up con los que podrás detectar la pulsación del ratón. El evento onmousemove detectas el movimiento, simplemente cambias los valores de top y left. Del componente según las corrdenadas del ratón y el componente se moverá.
Haz pruebas para optimizar después del repintado de la pantalla que sera lo que ue te va a dar más problemas.
Para lo de dimensionarlo, con el on mouse move, puedes detectar si esta cerca de un borde, con lo cual si esta cerca del borde pues le cambias el tamaño, etc... Se hace todo utilizando los eventos del ratón.
Es sencillo de programar, pero muy trabajos debido al numero de casos que tienes que contemplar.
Saludos.
Mikel.
P.D. Si quieres más detalles dímelo y te lo explico con más calma.
Me has dado una idea, ahora espero me puedas dar algunos detalles sobre como hacer el repintado, lo de los eventos del ratón lo he manejado un poco.
Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas