[Lazarus-es] Ayuda con POO

Juan Perles perlesj en gmail.com
Lun Jun 22 20:57:19 CEST 2015


Muchas gracias Maxi, tras probar el ejemplo que tú me has mandado me daban
estos errores:
Unit1.pas(69,41) Error: Only class methods, class properties and class
variables can be referred with class references
Unit1.pas(69,46) Error: Only class class methods, class properties and
class variables can be accessed in class methods
Unit1.pas(73,40) Error: Only class methods, class properties and class
variables can be referred with class references
Unit1.pas(73,40) Error: Only class class methods, class properties and
class variables can be accessed in class methods
Pero tu ayuda me ha sido valiosisima pues me has abierto un camino en el
que he profundizado y ya me funciona
con este código:

function TForm1.ControlCorrecto(Sender: TObject): Boolean;
begin
  RESULT := False;
  if Sender is TMemo then begin
    // RESULT:= length(Trim(Sender as TMemo.Lines.Text)) = 0;
    if length(Trim(Tmemo(Sender).Text)) = 0 then
      EXIT;
  end;
  if Sender is TEdit then begin
    if length(Trim(TEdit(Sender).Text)) = 0 then
      EXIT;
  end;
  RESULT := True;
end;

Te repito muchísimas gracias.

El 22 de junio de 2015, 14:51, Maxi <maximiliano.duarte en gmail.com> escribió:

> lo que tienes que saber que clase de objeto es en realidad. Si heredan
> del mismo padre podrias hacer eso. Pero el memo tiene lines.text
>
>
> llamas
>
> ControlCorrecto(Edit1);
> ControlCorrecto(Memo1);
>
> function TForm1.ControlCorrecto(Sender: TObject): Boolean;
> begin
>   Result:=False; //por si no es ninguno de los esperados
>
>   if Sender is TMemo then //preguntamos si es un objeto memo
>   Begin
>       result:= length(Trim(Sender as TMemo.Lines.Text))= 0; //tratamos
> al objeto como un memo
>   end
>   Else
>     if Sender is TEdit then //preguntamos si es un objeto Edit
>     Begin
>         result:= length(Trim(TEdit(Sender).Text))= 0; //tratamos al
> objeto como un edit en formato Cast estilo C++
>     end
>
>
> end;
>
> El día 22 de junio de 2015, 4:23, Juan Perles <perlesj en gmail.com>
> escribió:
> > Quiero hacer una serie de comprobaciones que son iguales a un Control
> TEdit
> > y a un TMemo.
> > Como se ve en el ejemplo de mas abajo, el cuerpo de los procedimientos
> es el
> > mismo, lo único que cambia es la cabecera. ¿No puedo hacer un único
> > procedimiento?
> >
> > function TForm1.EditCorrecto(Control: TEdit): Boolean;
> > begin
> >   if length(Trim(Control.Text))= 0 then
> >     RESULT := False
> >   else
> >     RESULT := True;
> > end;
> >
> > function TForm1.MemoCorrecto(Control: TMemo): Boolean;
> > begin
> >   if length(Trim(Control.Text))= 0 then
> >     RESULT := False
> >   else
> >     RESULT := True;
> > end;
> >
> > He intentado unificarlos haciendo el siguiente procedimiento
> >
> > function TForm1.ControlCorrecto(Sender: TObject): Boolean;
> > begin
> >   if length(Trim(Sender.Text))= 0 then
> >     RESULT := False
> >   else
> >     RESULT := True;
> > end;
> >
> > El resultado es que no me reconoce el Atributo Text.
> >
> > Muchas gracias por anticipado por vuestras molestias.
> >
> > _______________________________________________
> > Lazarus-es mailing list
> > Lazarus-es en lists.lazarus.freepascal.org
> > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
> >
>
>
>
> --
> El que pregunta aprende, y el que contesta aprende a responder.
>
> No a la obsolecencia programada:
>
> http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml
>
> Linux User #495070
> http://domonetic.com/blog
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20150622/4a4a9c80/attachment-0002.html>


More information about the Lazarus-es mailing list