![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
gracias y.........
Intente hacer lo que me aconsejas y no puedo lograrlo, no se porque no funciona ..........el no arrastrar fisicamente el componente sino crear uno .....el codigo que utilizo es el siguiente:
El usuario da el permiso para crear una nueva pagina(tab) por medio de un boton............, en esa pagina puede agregar componentes (lo que intento hacer arrastrando.. ) y la pagina que quede diseñada por el usuario la debo poder reutilizar (por lo que dentro de las tabs creo frames contenedores los que luego me van a permitir guardar y recuperar las paginas ''segun lo que yo imagino'')..............entonces: procedure TForm1.ToolButton1Click(Sender: TObject); var NuevoTabSheet: TTabSheet; Marco: TFrame; i: integer; begin NuevoTabSheet:= TTabSheet.Create(PageControl1); NuevoTabSheet.Visible:= True; NuevoTabSheet.Caption:= IntToStr(i);; NuevoTabSheet.PageControl:= PageControl1; PageControl1.ActivePage:= NuevoTabSheet; Marco:= TFrame.Create(NuevotabSheet); NuevoTabSheet.InsertControl(Marco); Marco.Color:= clwhite; Marco.Align:= alClient; Marco.OnDragOver:= Mover; Marco.OnDragDrop:= FrameDragDrop; end; Bien .......defino el procedimiento que cree un nuevo componente y no sea arrastrarlo fisicamente...como me sugeris procedure TForm1.FrameDragDrop(Sender, Source: TObject; X, Y: Integer); begin if Source is TButton then begin with TButton.Create(Self) do begin width := TButton(Source).Width; {solo a modo de prueba} end; end; end; entonces al intentar arrastrar el componente no tengo ninguna respuesta .........no se , no funciona ![]() |
|
#2
|
||||
|
||||
|
Hola chechu,
En el ejemplo que te puse se me olvidó asignar la propiedad Parent del Edit creado. Debes asignarle el frame para que se haga visible. Una cosa, el manejador del evento OnDragDrop lo tienes definido en el formulario y no en el frame. No hay mayor problema con esto excepto que en tal situación Self será el formulario y no el frame. Por ello, cuando hagas TButton.Create(Self) el owner del botón será el formulario, cosa que no debe ser si piensas seguir el método que te describí en otro hilo. El owner debe ser el frame. Otra cosa; aunque puedes asignar a Frame.OnDragDrop y Frame.OnDragOver métodos del formulario pienso que será más claro si defines un frame base (como el DesignerFrame que te mostré anteriormente) y en ese frame base asignas los eventos mediante el inspector de objetos. // Saludos |
|
#3
|
|||
|
|||
|
Que manera de copiar de este foro
lo dicho, solucion total para mi.
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|