Hola a todos! desde ya quiero darles las gracias por su ayuda
Bien aqui la cuestion, tengo un formulario principal en el cual se ejecutan formularios Hijos, este formulario principal tiene una barra de botones, donde al ejecutarse el formulario hijo, se le asignan las tareas (nuevo, guardar eliminar, modificar, etc) los botones tienen asignados en la propiedad action la respectiva funcion, que estoy administrando con el Action Manager. Para que esta barra de Botones responda a un formulario en particular, cada vez que se activa o desactiva un formulario, cambio el datasource en el ActionManager para que cumpla dicha funcion. Se Realiza con el Siguiente Procedimiento:
Código Delphi
[-]
Procedure SetiarBarra(MyDataSource:TDataSource; bCarga:Boolean);
var i:Integer;
begin
With FrmMain do
begin
if bCarga = True then
begin
for i := 0 to ActionManager.ActionCount -1 do
begin
if UpperCase(ActionManager.Actions[i].Category)=UpperCase('DataSet')then
TDataSetAction(ActionManager.Actions[i]).DataSource := MyDataSource;
end;
end
else
begin
for i := 0 to ActionManager.ActionCount -1 do
begin
TDataSetAction(ActionManager.Actions[i]).OnExecute := Nil;
if UpperCase(ActionManager.Actions[i].Category)=UpperCase('DataSet')then
TDataSetAction(ActionManager.Actions[i]).DataSource := Nil;
end;
end;
end;
end;
a este procedimiento lo llamo desde los formularios Hijos, en los OnActivate (SetiarBarra(DataSet, True)) y OnDesactivate(SetiarBarra(nil, False)).
Al crear el primer formulario asigna las tareas sin problema, el inconveniente se presenta cuando abro otro formulario, ya que nunca vuelve a reasignar el Datasource por lo tanto siempre los botones responden a la accion del primer formulario ejecutado, como no hay ningun error, no se que mas hacer
Espero haber sido lo suficientemente claro, gracias nuevamente y saludos!