注册 登录
编程论坛 Delphi论坛

delphi新手,一个简单的问题求解

qq339590913 发布于 2013-10-11 15:54, 2271 次点击
做一个小程序:定义一个类,包含两个整形(x,y)和一个字符串(s)及方法output。output实现在窗体上的x,y位置,输出字符串s。
3 回复
#2
veketdelphi2013-10-11 19:44
这个要 自己写个类
重载了 构造函数
程序代码:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type/////
  TMyClass = class
  private
    x:Integer;
    y:integer;
    s:string;
  public
    constructor Create(xx:Integer;yy:Integer;ss:string);overload;
    procedure out;
  end;///////
var
  Form1: TForm1;

implementation

{$R *.dfm}
constructor TMyClass.Create(xx:Integer;yy:Integer;ss:string);/////
begin
  x := xx;
  y := yy;
  s := ss;
end;
procedure TMyClass.out;/////
begin
  Form1.Canvas.TextOut(x, y, s);/////
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  a:TMyClass;////
begin
  a := TMyClass.Create(100, 200, '百度知道');////
  a.out;////
  a.Free;////
end;

end.

#3
haiou3272013-10-11 22:30
程序代码:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  TcustCls = class
  private
    Fx, Fy: Integer;
    Fs: string;
  public
    procedure outPut(x, y:Cardinal; s: string);
  end;
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure Tcustcls.outPut(x, y: Cardinal; s: string);
begin
  if (x > 0) and (y > 0) then
  begin
    fx := x;
    fy := y;
    fs := s;
    Form1.Canvas.TextOut(fx, fy, fs);
  end
  else
    ShowMessage('坐标错误');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  myText: TcustCls;
begin
  myText := TcustCls.Create;
  myText.outPut(60, 50, '代码测试.....');
  myText.Free;
end;

end.


[ 本帖最后由 haiou327 于 2013-10-12 12:59 编辑 ]
#4
haiou3272013-10-13 13:33
在桌面输出
程序代码:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  TcustCls = class
  private
    Fx, Fy: Integer;
    Fs: string;
  public
    procedure outPut(x, y: Cardinal; s: string);
  end;
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure Tcustcls.outPut(x, y: Cardinal; s: string);
var
  cvs: TCanvas;
begin
  if (x > 0) and (y > 0) then
  begin
    fx := x;
    fy := y;
    fs := s;
    try
    cvs := TCanvas.Create;
    cvs.Handle := GetDc(0);
    SetBkMode(cvs.Handle, TRANSPARENT);
    cvs.Font.Name := '宋体';
    cvs.Font.Style := [fsBold];
    cvs.font.Color := clRed;
    cvs.Font.Size := 50;
    cvs.TextOut(Fx, Fy, s);
    finally
    FreeAndNil(cvs);
    end;
  end
  else
    ShowMessage('坐标错误');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  myCls: TcustCls;
  s: string;
begin
  s := '夕阳西下,小桥流水人家';
  myCls := TcustCls.Create;
  myCls.outPut(100, 100, s);
  myCls.Free;
end;
end.
1