熱門文章

2014年7月11日 星期五

利用XE6 加入一個收益廣告的程式

 
 
參考
哈..原來用XE6 寫一個加入一個收益廣告的程式,那麼簡單阿...
只需以下步驟即可
 
1. 首先建立一個Firemonkey Mobile application   專案,並加入TBannerAd元件
2. 在FormCreate 加入
  //AdUnitID是指 你在AdMob 申請的應用程式之廣告單元編號
 //相關細節請GOOGLE ADMOB 申請帳號
    BannerAd1.AdUnitID:='ca-app-pub-???????';
 
 
3. 在FORM ONSHOW   事件加入
   BannerAd1.LoadAd;//詢問Admob廣告
   成功載入廣告後會觸發OnDidLoad事件
4. 修改Users Permissions 屬性Access netword state = true
                                             Internet =true
 
 
 
 
 
5. 修改程式目錄下AndroidManifest.template.xml 檔案
  增加line 33,34行
    
 
 
輸出結果如下



2014年6月15日 星期日

LED 7 for firmonkey

最近閒閒的就將以前寫過程式改成支援Firemonkey元件



unit uLed7SegItem;

interface

uses
   system.Rtti, System.Types,System.Math.Vectors, Classes,
   FMX.Objects ,FMX.Types,System.UITypes,FMX.Graphics;

type

  //每段區段所屬的多邊線的點
  TSeg7Point=array[0..7] of TPointF;
  //TPolygon = array of TPointF;
  //七段顯示器的區段
  TSeg7Track =(Seg7a,Seg7b,Seg7c,Seg7d,Seg7e,Seg7f,Seg7g,Seg7dot,Seg7Colon);
  TLed7SegItem =class(TBitmap)
  private
      FMargins :TBounds;
      FDisplace:real;
      FDisthickness:real;
      FLedthickness:real;
      FWordWidth,FWordHeight:real;
      FOrigin:TPointF; //原點 在左上(配合Desktop 原點在左上)
      FDistance1,FDistance2:TpointF;//區段長度1,2
      FSeg7LedArray:array[TSeg7Track] of TSeg7Point;
      FisSign:boolean;
    procedure SetwordWidth(const Value: real);
    procedure SetWordHeight(const Value: real);
    procedure SetDisplace(const Value: real);
    procedure SetDisthickness(const Value: real);
    procedure SetLedthickness(const Value: real);
    procedure setisSign(const Value: boolean);
  protected
    procedure DoGetOrigin;
  public
    constructor Create(const AWidth, AHeight: Integer);
    destructor Destroy; override;
    procedure PlotLed7Seg;
    procedure DoDraw(iNum:byte;iCavnas:TCanvas);
    function GetLed7SegPolygon(iIndex:TSeg7Track):TPolygon;

    property Displace:real read  FDisplace write SetDisplace;
    property Disthickness:real read  FDisthickness write SetDisthickness;
    property Ledthickness:real read  FLedthickness write SetLedthickness;
    property WordWidth:real read  FWordWidth write SetwordWidth;
    property WordHeight:real read  FWordHeight write SetWordHeight;
    property isSign:boolean read FisSign write setisSign;

  end;
var
  //預設LED區段數值的開關(ON OFF);
  DrawSeg7LedArray:array[0..9,TSeg7Track] of boolean=(
  //Seg7a,Seg7b,Seg7c,Seg7d,Seg7e,Seg7f,Seg7g,  Seg7dot,Seg7Colon
   (true ,true ,true ,true ,true ,true ,false,false,false), //0
   (false,true ,true ,false,false,false,false,false,false), //1
   (true ,true ,false,true ,true ,false,true ,false,false),  //2
   (true ,true ,true ,true ,false,false,true ,false,false),  //3
   (false,true ,true ,false,false,true ,true ,false,false),  //4
   (true ,false,true ,true ,false,true ,true ,false,false),  //5
   (true ,false,true ,true ,true ,true ,true ,false,false),  //6
   (true ,true ,true ,false,false,true ,false ,false,false),  //7
   //(true ,true ,true ,false,false,false,false ,false,false),  //7
   (true ,true ,true ,true ,true ,true ,true ,false,false),  //8
   (true ,true ,true ,true ,false,true ,true ,false,false)  //9
   //(true ,true ,true ,false,false,true ,true ,false,false)  //9
   );


implementation

{ TLed7SegItem }

constructor TLed7SegItem.Create(const AWidth, AHeight: Integer);
begin
  inherited;
  FMargins := TBounds.Create(TRectF.Create(0,0,0,0));
  FDisplace:=3;
  FDisthickness:=1;
  FLedthickness:=10;
  WordWidth:=50;
  WordHeight:=60;
 // DoGetOrigin;
end;

destructor TLed7SegItem.Destroy;
begin
  if assigned(FMargins) then FMargins.Free;
  inherited;
end;

procedure TLed7SegItem.DoDraw(iNum: byte; iCavnas: TCanvas);
var
  _i:TSeg7Track;
  _aPolygon:TPolygon;
begin
  PlotLed7Seg;
  for _i := Seg7a to Seg7g do begin
    if DrawSeg7LedArray[iNum][_i] then begin
      _aPolygon:=GetLed7SegPolygon(_i);
      iCavnas.FillPolygon(_aPolygon,1);
    end;
  end;
end;

procedure TLed7SegItem.DoGetOrigin;
begin
  Width:=round(FWordWidth-FDisplace+FMargins.Left+FMargins.Right);
  FOrigin.x:= FMargins.Left;
  FDistance1.x:=FWordWidth -(FDisthickness+FLedthickness)*2;
  FDistance2.x:=FDistance1.x +FDisplace;

  Height:=round(FWordHeight+FDisthickness+FDisplace+FMargins.Top+FMargins.Bottom);
  FOrigin.y:= FMargins.Top;
  FDistance1.y:=FWordHeight -(FDisthickness*3+FLedthickness*4);
  FDistance2.y:=FDistance1.y +(FDisthickness)*2;
end;

function TLed7SegItem.GetLed7SegPolygon(iIndex: TSeg7Track): TPolygon;
var
  i:integer;
begin
  if iIndex in [Seg7a..Seg7g] then begin
    setlength(result,6);
    for i := low(result) to High(result) do begin
      result[i].X:=FSeg7LedArray[iIndex][i].X;
      result[i].Y:=FSeg7LedArray[iIndex][i].Y;
    end;
  end;
end;

procedure TLed7SegItem.PlotLed7Seg;
begin
  DoGetOrigin;
  //Seg7a
  FSeg7LedArray[Seg7a][0].X:= FOrigin.X +FDisplace+FDisthickness;
  FSeg7LedArray[Seg7a][0].y:= FOrigin.Y +FDisplace;

  FSeg7LedArray[Seg7a][1].x:= FSeg7LedArray[Seg7a][0].X +FDisplace;
  FSeg7LedArray[Seg7a][1].y:= FOrigin.y;
  FSeg7LedArray[Seg7a][2].x:= FSeg7LedArray[Seg7a][1].x +FDistance2.x;
  FSeg7LedArray[Seg7a][2].y:= FOrigin.y;

  FSeg7LedArray[Seg7a][3].x:= FSeg7LedArray[Seg7a][2].x +FDisplace;
  FSeg7LedArray[Seg7a][3].y:= FSeg7LedArray[Seg7a][2].y +FDisplace;
  FSeg7LedArray[Seg7a][4].x:= FSeg7LedArray[Seg7a][3].x -(FLedthickness-FDisplace);
  FSeg7LedArray[Seg7a][4].y:= FSeg7LedArray[Seg7a][3].Y +(FLedthickness-FDisplace);

  FSeg7LedArray[Seg7a][5].x:= FSeg7LedArray[Seg7a][0].x+(FLedthickness-FDisplace);
  FSeg7LedArray[Seg7a][5].y:= FSeg7LedArray[Seg7a][4].y;
  //Seg7b
  FSeg7LedArray[Seg7b][0].X:= FSeg7LedArray[Seg7a][3].x +FDisthickness;
  FSeg7LedArray[Seg7b][0].y:= FSeg7LedArray[Seg7a][3].y+FDisthickness;

  FSeg7LedArray[Seg7b][1].x:= FSeg7LedArray[Seg7b][0].x +FDisplace;
  FSeg7LedArray[Seg7b][1].y:= FSeg7LedArray[Seg7b][0].y+FDisplace;
  FSeg7LedArray[Seg7b][2].x:= FSeg7LedArray[Seg7b][1].x ;
  FSeg7LedArray[Seg7b][2].y:= FSeg7LedArray[Seg7b][1].y+FDistance2.y;

  FSeg7LedArray[Seg7b][3].x:= FSeg7LedArray[Seg7b][2].x -FLedthickness/2;
  FSeg7LedArray[Seg7b][3].y:= FSeg7LedArray[Seg7b][2].y +FLedthickness/2;
  FSeg7LedArray[Seg7b][4].x:= FSeg7LedArray[Seg7b][3].x -FLedthickness/2;
  FSeg7LedArray[Seg7b][4].y:= FSeg7LedArray[Seg7b][2].y;

  FSeg7LedArray[Seg7b][5].x:= FSeg7LedArray[Seg7a][4].x+FDisthickness;
  FSeg7LedArray[Seg7b][5].y:= FSeg7LedArray[Seg7a][4].y+FDisthickness;
  //Seg7f
  FSeg7LedArray[Seg7f][0].X:= FSeg7LedArray[Seg7a][0].x -FDisthickness;
  FSeg7LedArray[Seg7f][0].y:= FSeg7LedArray[Seg7a][0].y+FDisthickness;

  FSeg7LedArray[Seg7f][1].x:= FSeg7LedArray[Seg7a][5].x  -FDisthickness;
  FSeg7LedArray[Seg7f][1].y:= FSeg7LedArray[Seg7a][5].y+FDisthickness;
  FSeg7LedArray[Seg7f][2].x:= FSeg7LedArray[Seg7f][1].x ;
  FSeg7LedArray[Seg7f][2].y:= FSeg7LedArray[Seg7b][4].y;

  FSeg7LedArray[Seg7f][3].x:= FSeg7LedArray[Seg7f][2].x -FLedthickness/2;
  FSeg7LedArray[Seg7f][3].y:= FSeg7LedArray[Seg7f][2].y +FLedthickness/2;
  FSeg7LedArray[Seg7f][4].x:= FSeg7LedArray[Seg7f][3].x -FLedthickness/2;
  FSeg7LedArray[Seg7f][4].y:= FSeg7LedArray[Seg7f][2].y;

  FSeg7LedArray[Seg7f][5].x:=FOrigin.X;
  FSeg7LedArray[Seg7f][5].y:= FSeg7LedArray[Seg7f][0].y+FDisplace;
  //Seg7c
  FSeg7LedArray[Seg7c][0].X:= FSeg7LedArray[Seg7b][3].x ;
  FSeg7LedArray[Seg7c][0].y:= FSeg7LedArray[Seg7b][3].y+FDisthickness*2;

  FSeg7LedArray[Seg7c][1].x:= FSeg7LedArray[Seg7c][0].x  +FLedthickness/2;
  FSeg7LedArray[Seg7c][1].y:= FSeg7LedArray[Seg7c][0].y+FLedthickness/2;
  FSeg7LedArray[Seg7c][2].x:= FSeg7LedArray[Seg7c][1].x ;
  FSeg7LedArray[Seg7c][2].y:= FSeg7LedArray[Seg7c][1].y+FDistance2.y;

  FSeg7LedArray[Seg7c][3].x:= FSeg7LedArray[Seg7c][2].x -FDisplace;
  FSeg7LedArray[Seg7c][3].y:= FSeg7LedArray[Seg7c][2].y +FDisplace;
  FSeg7LedArray[Seg7c][4].x:= FSeg7LedArray[Seg7c][3].x -(FLedthickness-FDisplace);
  FSeg7LedArray[Seg7c][4].y:= FSeg7LedArray[Seg7c][3].y-(FLedthickness-FDisplace);

  FSeg7LedArray[Seg7c][5].x:=FSeg7LedArray[Seg7c][0].X-FLedthickness/2;;
  FSeg7LedArray[Seg7c][5].y:= FSeg7LedArray[Seg7c][0].y+FLedthickness/2;
  //Seg7e
  FSeg7LedArray[Seg7e][0].X:= FSeg7LedArray[Seg7f][3].x ;
  FSeg7LedArray[Seg7e][0].y:= FSeg7LedArray[Seg7f][3].y+FDisthickness*2;

  FSeg7LedArray[Seg7e][1].x:= FSeg7LedArray[Seg7e][0].x  +FLedthickness/2;
  FSeg7LedArray[Seg7e][1].y:= FSeg7LedArray[Seg7e][0].y+FLedthickness/2;
  FSeg7LedArray[Seg7e][2].x:= FSeg7LedArray[Seg7e][1].x;
  FSeg7LedArray[Seg7e][2].y:= FSeg7LedArray[Seg7c][4].y;

  FSeg7LedArray[Seg7e][3].x:= FSeg7LedArray[Seg7e][2].x -(FLedthickness-FDisplace);
  FSeg7LedArray[Seg7e][3].y:= FSeg7LedArray[Seg7e][2].y +(FLedthickness-FDisplace);
  FSeg7LedArray[Seg7e][4].x:= FSeg7LedArray[Seg7e][3].x -FDisplace;
  FSeg7LedArray[Seg7e][4].y:= FSeg7LedArray[Seg7e][3].y-FDisplace;

  FSeg7LedArray[Seg7e][5].x:=FSeg7LedArray[Seg7e][0].X-FLedthickness/2;;
  FSeg7LedArray[Seg7e][5].y:= FSeg7LedArray[Seg7e][0].y+FLedthickness/2;
  //Seg7g
  FSeg7LedArray[Seg7g][0].X:= FSeg7LedArray[Seg7f][3].x+ FDisthickness;
  FSeg7LedArray[Seg7g][0].y:= FSeg7LedArray[Seg7f][3].y+FDisthickness;

  FSeg7LedArray[Seg7g][1].x:= FSeg7LedArray[Seg7g][0].x  +FLedthickness/2;
  FSeg7LedArray[Seg7g][1].y:= FSeg7LedArray[Seg7g][0].y-FLedthickness/2;
  FSeg7LedArray[Seg7g][2].x:= FSeg7LedArray[Seg7b][4].x-FDisthickness;
  FSeg7LedArray[Seg7g][2].y:= FSeg7LedArray[Seg7b][4].y+FDisthickness;;

  FSeg7LedArray[Seg7g][3].x:= FSeg7LedArray[Seg7g][2].x +FLedthickness/2;
  FSeg7LedArray[Seg7g][3].y:= FSeg7LedArray[Seg7g][2].y +FLedthickness/2;
  FSeg7LedArray[Seg7g][4].x:= FSeg7LedArray[Seg7g][2].x;
  FSeg7LedArray[Seg7g][4].y:= FSeg7LedArray[Seg7g][2].y+FLedthickness;

  FSeg7LedArray[Seg7g][5].x:=FSeg7LedArray[Seg7g][1].X;
  FSeg7LedArray[Seg7g][5].y:= FSeg7LedArray[Seg7g][1].y+FLedthickness;
  //Seg7d
  FSeg7LedArray[Seg7d][0].X:= FSeg7LedArray[Seg7e][3].x+ FDisthickness;
  FSeg7LedArray[Seg7d][0].y:= FSeg7LedArray[Seg7e][3].y+FDisthickness;

  FSeg7LedArray[Seg7d][1].x:= FSeg7LedArray[Seg7e][2].x  + FDisthickness;
  FSeg7LedArray[Seg7d][1].y:= FSeg7LedArray[Seg7e][2].y+ FDisthickness;
  FSeg7LedArray[Seg7d][2].x:= FSeg7LedArray[Seg7c][4].x-FDisthickness;
  FSeg7LedArray[Seg7d][2].y:= FSeg7LedArray[Seg7c][4].y+FDisthickness;;

  FSeg7LedArray[Seg7d][3].x:= FSeg7LedArray[Seg7c][3].x -FDisthickness;
  FSeg7LedArray[Seg7d][3].y:= FSeg7LedArray[Seg7c][3].y +FDisthickness;
  FSeg7LedArray[Seg7d][4].x:= FSeg7LedArray[Seg7d][3].x-FDisplace;
  FSeg7LedArray[Seg7d][4].y:= FSeg7LedArray[Seg7d][3].y+FDisplace;

  FSeg7LedArray[Seg7d][5].x:=FSeg7LedArray[Seg7d][0].X+FDisplace;
  FSeg7LedArray[Seg7d][5].y:= FSeg7LedArray[Seg7d][4].y;
  //Seg7dot
  //Seg7Colon
end;

procedure TLed7SegItem.SetDisplace(const Value: real);
begin
  FDisplace := Value;
  DoGetOrigin;
end;

procedure TLed7SegItem.SetDisthickness(const Value: real);
begin
  FDisthickness := Value;
  DoGetOrigin;
end;

procedure TLed7SegItem.setisSign(const Value: boolean);
begin
  FisSign := Value;
end;

procedure TLed7SegItem.SetLedthickness(const Value: real);
begin
  FLedthickness := Value;
  DoGetOrigin;
end;

procedure TLed7SegItem.SetWordHeight(const Value: real);
begin
  FWordHeight := Value;
  Height:=trunc(FWordHeight+FDisthickness+FDisplace+FMargins.Top+FMargins.Bottom);
  FOrigin.y:= FMargins.Top;
  FDistance1.y:=FWordHeight -(FDisthickness*3+FLedthickness*4);
  FDistance2.y:=FDistance1.y +(FDisthickness)*2;
end;

procedure TLed7SegItem.SetwordWidth(const Value: real);
begin
  FWordWidth := Value;
  Width:=trunc(FWordWidth+FMargins.Left+FMargins.Right);
  FOrigin.x:= FMargins.Left;
  FDistance1.x:=FWordWidth -(FDisthickness+FLedthickness)*2;
  FDistance2.x:=FDistance1.x +FDisplace;
 // PlotLed7Seg;
end;

end.
下載網址
http://sourceforge.net/projects/firemonkeyled7seg/