Delphi 10 Berlin 在tabitem加上數字

tabbarcustom

interface
 
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.TabControl, FMX.Controls.Presentation, FMX.Edit,
  FMX.EditBox, FMX.SpinBox, FMX.StdCtrls, FMX.Layouts, FMX.ListBox,
  FMX.NumberBox;
 
type
  TForm16 = class(TForm)
    TabItem1: TTabItem;
    TabItem2: TTabItem;
    BadgeItem: TTabItem;
    SpinBox1: TSpinBox;
    ToolBar1: TToolBar;
    Switch1: TSwitch;
    ListBox1: TListBox;
    ListBoxItem1: TListBoxItem;
    ToolLabel: TLabel;
    TabControl1: TTabControl;
    procedure BadgeItemPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
    procedure SpinBox1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Switch1Switch(Sender: TObject);
    procedure StepperUpClick(Sender: TObject);
  private
    FBadge: Integer;
    FShowBadge: Boolean;
    procedure SetBadge(const Value: Integer);
    procedure SetShowBadge(const Value: Boolean);
    { Private declarations }
  public
    { Public declarations }
    property Badge: Integer read FBadge write SetBadge;
    property ShowBadge: Boolean read FShowBadge write SetShowBadge;
  end;
 
var
  Form16: TForm16;
 
implementation
 
{$R *.fmx}
{$R *.iPhone55in.fmx IOS}
 
procedure DrawBadge(Canvas: TCanvas; const ARect: TRectF; const Text: string;
  const Color: TAlphaColor = TAlphaColorRec.Red);
const
  Padding = 2;
  HorzTextMargin = 6;
  VertTextMargin = 4;
var
  R: TRectF;
  TextSize: TSizeF;
  Brush: TBrush;
  BadgeRadius: Single;
begin
  Canvas.Font.Size := 12;
  // Measure text width
  TextSize := TSizeF.Create(Canvas.TextWidth(Text), Canvas.TextHeight(Text));
  // Calculate badge rect
  R := TRectF.Create(0, 0, HorzTextMargin * 2 + TextSize.Width, VertTextMargin * 2 + TextSize.Height);
  if R.Width < R.Height then
    R.Width := R.Height;
  // Position rect
  R := TRectF.Create(ARect.Right - R.Width, ARect.Top, ARect.Right, ARect.Top + R.Height);
  R.Offset(-Padding, Padding);
  // Draw badge
  BadgeRadius := R.Height / 2;
  Brush := TBrush.Create(TBrushKind.Solid, Color);
  try
    Canvas.FillRect(R, BadgeRadius, BadgeRadius, AllCorners, 1, Brush);
  finally
    Brush.Free;
  end;
  // Draw text
  Canvas.Fill.Color := TAlphaColorRec.White;
  Canvas.FillText(R, Text, False, 1, [], TTextAlign.Center, TTextAlign.Center);
end;
 
procedure TForm16.BadgeItemPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
begin
  if ShowBadge then
    DrawBadge(Canvas, ARect, FBadge.ToString);
end;
 
procedure TForm16.FormCreate(Sender: TObject);
begin
  FBadge := 1;
end;
 
procedure TForm16.SetBadge(const Value: Integer);
begin
  if FBadge  Value then
  begin
    FBadge := Value;
    BadgeItem.Repaint;
  end;
end;
 
procedure TForm16.SetShowBadge(const Value: Boolean);
begin
  if FShowBadge  Value then
  begin
    FShowBadge := Value;
    BadgeItem.Repaint;
  end;
end;
 
procedure TForm16.SpinBox1Change(Sender: TObject);
begin
  Badge := Trunc(SpinBox1.Value);
end;
 
procedure TForm16.StepperUpClick(Sender: TObject);
begin
  Badge := Trunc(SpinBox1.Value);
end;
 
procedure TForm16.Switch1Switch(Sender: TObject);
begin
  ShowBadge := Switch1.IsChecked;
end;
 
end.

原始資料:https://community.embarcadero.com/blogs?view=entry&id=9074

Delphi Berlin跨平台條件編譯(Conditional compilation)

Delphi Berlin可以在不同平台裝置上執行,那程式可以依不同平台裝置跑嗎?
答案是可行的~只要透過條件編譯就可以了 範例如下

   {$IFDEF MSWINDOWS}
   LABEL1.Text := Label1.Text + '(電腦版)';
   {$ENDIF}
   {$IFDEF ANDROID}
   LABEL1.Text := Label1.Text + '(安卓版)';

   {$ENDIF}
   {$IFDEF OSX}
   LABEL1.Text := Label1.Text + '(MAC版)';

   {$ENDIF}
   {$IFDEF IOS}
   LABEL1.Text := Label1.Text + '(IOS版)';

   {$ENDIF}

初探Delphi Berlin FireUI APP Preview

Delphi 10.1 Berlin的新功能中,多了一個看起來很棒的FireUI APP Preview功能。主要的功能就是讓開發者在設計畫面時,可以馬上看到畫面長的是什麼樣子。

設定的方式如下:

在10.1的Tools→Options→中有一個 Form Designer,其中有一個 FireUI Live Preview。
fireUIPriew01

fireUIPriew02

fireUIPriew03

client端搜尋FireUI可以找到對應的app,安裝後打開APP會自動搜尋區域網路內的Server。然後連上完成後,設計師在設計的同時就可以觀看在不同裝置上的樣子了

S__11321351 S__11321352 S__11321353

Screenshot_2016-04-24-22-35-12 Screenshot_2016-04-24-22-35-28 Screenshot_2016-04-24-23-04-49

未命名 - 66

 

Delphi 10.1 Berlin新亮點 -FireUI Preview、ListView Designer、TAddressBook

感謝廖啟甫大哥通知晚上的 10.1 Berlin課程,雖然沒聽完!不過有聽到了幾個不錯的功能

一、TAddressbook元件,可以存取通訊錄

二、改進Style Designer

三、超酷的可以自訂ListView Items的設計功能

四、新的字型樣式

另外還有很酷的FireUI Preview功能。

看來Delphi一直很努力的追上這幾年的不足!

未命名 - 7 未命名 - 8 未命名 - 21 未命名 - 27 未命名 - 42 未命名 - 44 未命名 - 52 未命名 - 66

Delphi10 Seattle後的Delphi 11叫Berlin?

最近瞄到官方的資料,內容為

QA description
*.info.plist doesn’t contain NSAllowsArbitraryLoads key to enable http, although “Enable HTTP protocol request” project option is checked. The issue is reproduced with Seattle Update 1, but works fine on Berlin 24.0.22128.5503.

乍看之下沒啥,不過最後那句but works fine on Berlin 24.0.22128.5503.。告訴了下一版本Berlin的存在!
三不五時瞄一下QC的文件,果然有驚喜!