Hola,
Me gustaría solicitar su ayuda en un tema con el que he estado trabajando sin encontrar una solución. Estoy tratando de crear una función que me permita crear un popup dinámico, esto es, en una base de datos tengo almacenada la información sobre los elementos que debe contener el popup y la función que debe de llamar en cada item, esto se tiene que crear en tiempo de ejecución.
Esto es lo que tengo:
type TNotifyEvent = procedure(Sender: TObject) of object; procedure TForm1.arma_popup(clase,origen : String); var cons, nombre, funcion : String; imagen,i : integer; tt : Tmenuitem; proc :TNotifyEvent; pt: TPoint; begin
i:=0; //inicializar contador PopGral.Items.Clear; // limpiar items del menú GetCursorPos( pt ); //obtener coordenadas de donde aparecerá el popup g_X := pt.x; g_Y := pt.y; while not dm.q3.Eof do begin // obtener los datos necesarios para la creación del menú nombre:=dm.q3.fieldbyname( 'nombre' ).AsString; // nombre que se mostrará al usuario funcion:=dm.q3.fieldbyname( 'funarbol' ).AsString // nombre de la función // crear los items para el popup con el contenido de los elementos de la base de datos tt := Tmenuitem.Create( PopGral ); tt.Caption := nombre; gral.PopGral.Items.Add( tt ); proc:=funcion; // <-- aqui es donde manda el error: incompatible types TNotifyEvent and String PopGral.Items[ i ].OnClick := proc; i:=i+1; dm.q3.Next; end; end;