PDA

Ver la Versión Completa : Acceso a formularios desde un TDBListBox en Delphi7


TheNew
25-06-2015, 01:00:29
Buenas tardes a todos, estoy trabajando en accesos a formularios desde un dblistbox en delphi7, la situacion es que no se como llamar al formulario al hacer click sobre el Item del listbox que lleva el nombre del formulario. Cualquier ayuda de antemano sera inmensamente agradecida.

Casimiro Notevi
25-06-2015, 01:33:33
¿Llamar al formulario?, ¿a qué formulario?, por favor, tómate tu tiempo en explicar con detalle tu problema, adjunta tu código, explica claramente qué quieres conseguir, etc.

kapcomx
25-06-2015, 01:57:06
espero te sirva este ejemplo

es un treeview que muestra 4 opciones cada una manda llamar un formulario

procedure TfPrincipal.tPVentasClick(Sender: TObject);
begin

if tPVentas.Items[0].Selected then
begin
if not createMDI(fPrincipal,tfNvaVenta,fNvaVenta) then
Application.CreateForm(tfNvaVenta,fNvaVenta);
PanelPrincipal.Enabled := False;
fnvaventa.envia:='P';
fnvaventa.Height:= 650;
fNvaVenta.Show;
end;

if tPVentas.Items[1].Selected then
begin
if not createMDI(fPrincipal,tfListVenta,fListVenta) then
Application.CreateForm(tfListVenta,fListVenta);
PanelPrincipal.Enabled := False;
dbds.filtra(dbds.dsventas, dbds.con_ventas +' order by tblpuntodeventa.posid desc');
flistventa.envia:='P';
fListVenta.Show;
end;



if tPVentas.Items[2].Selected then
begin
if not createMDI(fPrincipal,tfCorteCaja,fCorteCaja) then
Application.CreateForm(tfCorteCaja,fCorteCaja);
PanelPrincipal.Enabled := False;
fCorteCaja.envia:='P';
fCorteCaja.Show;
end;

if tPVentas.Items[3].Selected then
begin
if not createMDI(fPrincipal,tfrmcorte_parcial,frmcorte_parcial) then
Application.CreateForm(tfrmcorte_parcial,frmcorte_parcial);
PanelPrincipal.Enabled := False;
frmcorte_parcial.envia:='P';
frmcorte_parcial.Show;
end;

end;

createmdi es una funcion que uso para saber si el formulario no ha sido creado.

function tfPrincipal.CreateMDI(Owner:TForm;BaseClass:TFormClass; FormVar:TForm):Boolean;
var
found:Boolean;
i:integer;
begin
Application.ProcessMessages;
found := False;
// Recorremos el array de ventanas hijas
For i:= 0 To Owner.MDIChildCount-1 Do
If Owner.MDIChildren[i] is BaseClass Then
Begin
Owner.MDIChildren[i].Show;
found := True;
End;
createMDI := Found;
end;

espero te sirva:cool:

Casimiro Notevi
25-06-2015, 09:43:38
es un treeview que muestra 4 opciones cada una manda llamar un formulario Vaya, yo no había entendido eso :rolleyes:

ecfisa
25-06-2015, 14:25:00
Hola.
...llamar al formulario al hacer click sobre el Item del listbox que lleva el nombre del formulario.

De lo anterior, interpreto que busca algo parecido a lo expuesto en este artículo (http://delphi.about.com/library/weekly/aa080905a.htm).

Saludos :)

Neftali [Germán.Estévez]
25-06-2015, 16:51:03
Creo que la forma correcta y óptima es utilizar RTTI, al igual que se hace con los componentes en ejecución.
Registrando las clases de los formularios, deberías poder accceder a la clase de cada formualrio y a partir de ahí crear una instancia del formulario en cuestión.

Revisa el link que hapasado ecfisa.

TheNew
25-06-2015, 18:05:23
Hola a todos por responder a mi interrogante, debo decir que todas son buenas y muy validas es exactamente lo que buscaba aunque supuse que podia guardar el nombre de campo en una variable de tipo String y adjuntar .show.... " Es que nunca habia manejado clases en delphi y por eso las dudas" Gracias Neftali revisare bien el post y luego les digo como me fue.