Ver Mensaje Individual
  #11  
Antiguo 03-02-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Reputación: 22
keyboy Va por buen camino
Si el intercambio de acciones ya lo tienes resuelto con el BeforeAction, basta intercambiar el estado de los botones. Esto lo puedes hacer en el evento OnDataChange del DataSource asociado al DBNavigator:

Código Delphi [-]
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
var
  ButtonEnabled: Boolean;

begin
  with DBNavigator1 do
  begin
    // intercambia estado entre prior y next
    ButtonEnabled := Buttons[nbPrior].Enabled;
    Buttons[nbPrior].Enabled := Buttons[nbNext].Enabled;
    Buttons[nbNext].Enabled := ButtonEnabled;

    // intercambia estado entre first y last
    ButtonEnabled := Buttons[nbFirst].Enabled;
    Buttons[nbFirst].Enabled := Buttons[nbLast].Enabled;
    Buttons[nbLast].Enabled := ButtonEnabled;
  end;
end;

El único impedimento aquí, es que Buttons es una propiedad protegida del DBNavigator, pero puedes "desprotegerla" fácilmente añadiendo esta declaración antes de tu formulario:

Código Delphi [-]
type
  TDBNavigator = class(DBCtrls.TDBNavigator);

Bye
Responder Con Cita