Hola.
Creo que la cosa pasa por implementar tus rutinas como métodos de una clase.
Basándome en el código que pusiste, sería algo como:
Código Delphi
[-]
unit uRutGlobal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Menus, ExtCtrls, DateUtils;
type
TAccion = (Salva, Restaura);
TRutinasGlobales = class(TObject)
private
procedure OpenDialogShow(Sender: TObject);
...
public
...
procedure GestionDB(Accion: TAccion);
end;
var
RutGlob: TRutinasGlobales;
implementation
procedure TRutinasGlobales.OpenDialogShow(Sender: TObject);
begin
if TOpenDialog(Sender).Tag = 1 then
SetDlgItemText(GetParent(TOpenDialog(Sender).Handle), IDOK, PChar('&Abrirlo'))
else
SetDlgItemText(GetParent(TOpenDialog(Sender).Handle), IDOK, PChar ('&Guardarlo'));
end;
procedure TRutinasGlobales.GestionDB(Accion: TAccion);
begin
with TOpenDialog.Create(nil) do
try
OnShow:= OpenDialogShow;
Tag:= Integer(Accion);
if Execute then
finally
Free;
end;
end;
...
Y como ejemplo de llamada:
Código Delphi
[-]
....
uses uRutGlobal;
procedure TForm1.Button1Click(Sender: TObject);
begin
RutGlob.GestionDB(Salva);
end;
Saludos.