Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Ledian_Fdez Ver Mensaje
Me da el siguiente error:

[Error] Glabal.pas(71): Incompatible types: 'method pointer and regular procedure'
Poné el código que estás utilizando y vemos donde estás cometiendo el error.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #2  
Antiguo 01-09-2011
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 18
Ledian_Fdez Va por buen camino
Código Delphi [-]
procedure 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 GestionBD(Accion:TAccion);
var
 OpenDialog: TOpenDialog;
 Query: TADOQuery;
 SQL, MSG: String;
begin
 try
//   OpenDialog := TOpenDialog.Create(nil);
   with TOpenDialog.Create(nil) do
    begin
    OnShow:= OpenDialogShow;  // <- Aqui se asigna el evento
    Tag:= 1;
{...}

[Error] Glabal.pas(71): Incompatible types: 'method pointer and regular procedure'
Responder Con Cita
  #3  
Antiguo 01-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Fijate que el ejemplo que te puse más arriba dice:
Código Delphi [-]
type
  TForm1 = class(TForm)
    btAbrir: TButton;
    procedure btAbrirClick(Sender: TObject);
  private
    procedure OpenDialogShow(Sender: TObject);
  public
  end;
Donde se vé claramente que el procedimiento OpenDialogShow es un método de la clase TForm1.

En el código que pusiste, OpenDialogShow está declarado como un procedimiento regular y eso es lo que te marca el error.

La declaración de la cabecera del procedimiento debería ser:
Código Delphi [-]
procedure TNombre_de_tu_form.OpenDialogShow(Sender: TObject);

Te adjunto una muestra probada y funcionando para que puedas ver con tranquilidad como implementarlo.

Un saludo
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 12-09-2011 a las 20:53:08.
Responder Con Cita
  #4  
Antiguo 02-09-2011
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 18
Ledian_Fdez Va por buen camino
Post

Es que estoy implementado ese procedimiento en una Unit Global, no es un formulario, es una Unit donde tengo almacenado varias funciones y procedimiento generales, para luego usuarlas en cualquier proyecto.

Código Delphi [-]
unit Global;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, Menus, ExtCtrls, DB, ADODB, DateUtils;

type TAccion = (Salva, Restaura);

procedure GestionBD(Accion:TAccion);
procedure OpenDialogShow(Sender: TObject);

Luego agrego la unit al Uses de donde lo valla usar y llamo al procedimiento y/o funciones.

Código Delphi [-]
GestionBD(Salva);

Dentro de GestionBD es donde creo el OpenDialog, le cambio sus propiedades y es donde quisiera cambiarle en dependencia de la Accion el texto del boton:

Si es Salva, cambiar el texto del boton a guardar.
Si es Restaura, cambiar el texto del boton a abrir.

No se si me hice entender.

Salu2
Ledian.
Responder Con Cita
  #5  
Antiguo 02-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 02-09-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
También podría hacerlo como lo hace pero llamando a la función desde el evento OnShow:

Código Delphi [-]
procedure OpenDialogShow(var 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 TForm1.OpenDialog1Show(Sender: TObject);
begin
  OpenDialogShow(Sender);
end;


Y mantiene su filosofía de unidades de código...

Saludos.
Responder Con Cita
  #7  
Antiguo 02-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
También podría hacerlo como lo hace pero llamando a la función desde el evento OnShow
Si, esa también es una opción válida.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 02-09-2011 a las 15:04:09.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cambiar el color al caption de la form mefixxto OOP 5 09-04-2009 18:28:41
Cambiar Caption de Cualquier Objeto rjtostado Varios 3 15-10-2008 18:01:31
Cambiar caption componentes capo979 Varios 2 22-07-2008 09:04:23
Cambiar Caption Caral Varios 13 08-02-2008 14:22:13
Cambiar Caption Ayuda...!!! alexis19 Varios 3 26-01-2008 14:25:42


La franja horaria es GMT +2. Ahora son las 15:33:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi