i'm not sure my message is arrived...
----- Original Message -----
From: "Cédric Joubert" <[email protected]>
To: "Borland's Delphi Discussion List" <[email protected]>
Sent: Wednesday, May 13, 2009 8:30 AM
Subject: Re: Class method
> hi,
>
> I've made a little example that works fine, but i don't know if it is what
> you were expecting.
> The problem is :
> if you replace all my "class function" with simple functions, it still
> works...
> so my example do not show the using of generic reference of class you were
> attending ;-)
>
>
> unit Unit1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
> Forms,
> Dialogs, StdCtrls, ExtCtrls;
>
> type
>
> enumFormatter = (
> ftArrangementNumber,
> ftCustomerNumber
> );
>
> TForm1 = class(TForm)
> btnFormat: TButton;
> rgFormatType: TRadioGroup;
> procedure btnFormatClick(Sender: TObject);
> private
> { Déclarations privées }
> procedure Test(AFormatType : enumFormatter);
> public
> { Déclarations publiques }
> end;
>
>
> TFormatter = class
> public
> class function FormatString(aString: String): string; virtual;
> end;
>
> TFormatterClass = class of TFormatter;
>
> TCustomerNumberFormatter = class (TFormatter)
> public
> class function FormatString(aString: String): string; override;
> end;
>
> TArrangementNumberFormatter = class (TFormatter)
> public
> class function FormatString(aString: String): string; override;
> end;
>
>
> var
> Form1: TForm1;
>
> implementation
>
> {$R *.dfm}
>
>
> class function TFormatter.FormatString(aString: String): string;
> begin
> end;
>
> class function TCustomerNumberFormatter.FormatString(aString: String):
> string;
> begin
> Result := 'CUST : ' + aString + '*';
> end;
>
> class function TArrangementNumberFormatter.FormatString(aString: String):
> string;
> begin
> Result := 'ARR : ' + aString + '*';
> end;
>
> procedure TForm1.Test(AFormatType : enumFormatter);
> var
> myClass : TFormatterClass;
> ftClass : TFormatter;
> begin
> myClass := nil;
>
> case AFormatType of
> ftArrangementNumber : myClass := TArrangementNumberFormatter;
> ftCustomerNumber : myClass := TCustomerNumberFormatter;
> end;
> ftClass := myClass.Create;
>
> ShowMessage(ftClass.FormatString('Text to format'));
> end;
>
> procedure TForm1.btnFormatClick(Sender: TObject);
> begin
> Test(enumFormatter(rgFormatType.ItemIndex));
> end;
>
> end.
>
>
> Cédric
>
>
> ----- Original Message -----
> From: "Jesper Stenlund" <[email protected]>
> To: <[email protected]>
> Sent: Tuesday, May 12, 2009 1:20 PM
> Subject: Class method
>
>
>>I have a bunch of classes that formats a string in different ways.
>> Today I have to create an instance of a specific "formattingobject" and
>> then run the formattingmethod.
>> Instead of that behaviour I now want make the formattingmethod a class
>> method.
>>
>> But that causes me some other problems.
>> Here's a small example:
>>
>> TCustomerNumberFormatter = class (TObject)
>> private
>> class function FormatString(aString: String): string;
>> end;
>>
>> TArrangementNumberFormatter = class (TObject)
>> private
>> class function FormatString(aString: String): string;
>> end;
>>
>>
>> Then I want to do something like this but I don't know exactly how to
>> write my code.
>>
>> case FormatType of
>> ftArrangementNumber: myClass := TArrangementNumberFormatter;
>> ftCustomerNumber: myClass := TCustomerNumberFormatter;
>> end;
>>
>> TEdit1.Caption := myClass.FormatString(myObject.StringToFormat);
>>
>>
>> I know that last row isn't correct, but how can I do this?
>>
>> I hope you understand what I'm looking for.
>> I want to use the classname that I get from the case-sentence and then
>> run
>> the class function on that particular class.
>> Is it possible to do it like this?
>>
>>
>> //Jesper
>> _______________________________________________
>> Delphi mailing list -> [email protected]
>> http://lists.elists.org/cgi-bin/mailman/listinfo/delphi
>
_______________________________________________
Delphi mailing list -> [email protected]
http://lists.elists.org/cgi-bin/mailman/listinfo/delphi