diff --git a/components/rx/trunk/demos/RxPopupNotifier/project1.lpi b/components/rx/trunk/demos/RxPopupNotifier/project1.lpi
index bd9708dc3..8b4c21a95 100644
--- a/components/rx/trunk/demos/RxPopupNotifier/project1.lpi
+++ b/components/rx/trunk/demos/RxPopupNotifier/project1.lpi
@@ -6,7 +6,7 @@
-
+
diff --git a/components/rx/trunk/demos/RxPopupNotifier/project1.lpr b/components/rx/trunk/demos/RxPopupNotifier/project1.lpr
index 6049b8408..4ae2397d4 100644
--- a/components/rx/trunk/demos/RxPopupNotifier/project1.lpr
+++ b/components/rx/trunk/demos/RxPopupNotifier/project1.lpr
@@ -12,6 +12,7 @@ uses
{$R *.res}
begin
+ Application.Title:='RxPopupNotifier demo';
RequireDerivedFormResource:=True;
Application.Scaled:=True;
Application.Initialize;
diff --git a/components/rx/trunk/demos/RxPopupNotifier/unit1.lfm b/components/rx/trunk/demos/RxPopupNotifier/unit1.lfm
index 95e511da5..5a967a2e9 100644
--- a/components/rx/trunk/demos/RxPopupNotifier/unit1.lfm
+++ b/components/rx/trunk/demos/RxPopupNotifier/unit1.lfm
@@ -3,61 +3,136 @@ object Form1: TForm1
Height = 381
Top = 449
Width = 577
- Caption = 'Form1'
+ Caption = 'RxPopupNotifier demo'
ClientHeight = 381
ClientWidth = 577
LCLVersion = '1.9.0.0'
object Button4: TButton
- Left = 224
+ AnchorSideLeft.Control = Owner
+ AnchorSideLeft.Side = asrCenter
+ AnchorSideTop.Control = Button1
+ AnchorSideTop.Side = asrBottom
+ Left = 232
Height = 36
Top = 48
Width = 113
AutoSize = True
+ BorderSpacing.Top = 6
Caption = 'Static message'
OnClick = Button4Click
TabOrder = 0
end
object Button5: TButton
- Left = 216
+ AnchorSideLeft.Control = Owner
+ AnchorSideLeft.Side = asrCenter
+ AnchorSideTop.Control = Button4
+ AnchorSideTop.Side = asrBottom
+ Left = 225
Height = 36
- Top = 96
+ Top = 90
Width = 127
AutoSize = True
+ BorderSpacing.Top = 6
Caption = 'Dinamic message'
OnClick = Button5Click
TabOrder = 1
end
object Button6: TButton
- Left = 176
+ AnchorSideLeft.Control = Owner
+ AnchorSideLeft.Side = asrCenter
+ AnchorSideTop.Control = ColorBox1
+ AnchorSideTop.Side = asrBottom
+ Left = 191
Height = 36
- Top = 152
+ Top = 158
Width = 195
AutoSize = True
+ BorderSpacing.Top = 6
Caption = 'Message without auto close'
OnClick = Button6Click
TabOrder = 2
end
object Label1: TLabel
- Left = 384
+ AnchorSideTop.Control = Button4
+ AnchorSideTop.Side = asrBottom
+ Left = 416
Height = 20
- Top = 112
- Width = 34
- Caption = 'Color'
+ Top = 90
+ Width = 147
+ BorderSpacing.Around = 6
+ Caption = 'Dinamic message color'
ParentColor = False
end
object ColorBox1: TColorBox
- Left = 424
+ AnchorSideLeft.Control = Label1
+ AnchorSideTop.Control = Label1
+ AnchorSideTop.Side = asrBottom
+ AnchorSideRight.Control = Owner
+ AnchorSideRight.Side = asrBottom
+ Left = 422
Height = 36
- Top = 96
- Width = 100
+ Top = 116
+ Width = 149
Selected = clYellow
+ Anchors = [akTop, akLeft, akRight]
+ BorderSpacing.Around = 6
ItemHeight = 0
TabOrder = 3
end
+ object RadioGroup1: TRadioGroup
+ AnchorSideLeft.Control = Owner
+ AnchorSideTop.Control = Owner
+ Left = 6
+ Height = 117
+ Top = 6
+ Width = 140
+ AutoFill = True
+ AutoSize = True
+ BorderSpacing.Around = 6
+ Caption = 'Message positon'
+ ChildSizing.LeftRightSpacing = 6
+ ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
+ ChildSizing.EnlargeVertical = crsHomogenousChildResize
+ ChildSizing.ShrinkHorizontal = crsScaleChilds
+ ChildSizing.ShrinkVertical = crsScaleChilds
+ ChildSizing.Layout = cclLeftToRightThenTopToBottom
+ ChildSizing.ControlsPerLine = 1
+ ClientHeight = 96
+ ClientWidth = 138
+ ItemIndex = 3
+ Items.Strings = (
+ 'rpcTopLeft'
+ 'rpcTopRight'
+ 'rpcBootomLeft'
+ 'rpcBottomRight'
+ )
+ OnClick = RadioGroup1Click
+ TabOrder = 4
+ end
+ object Button1: TButton
+ AnchorSideLeft.Control = Owner
+ AnchorSideLeft.Side = asrCenter
+ AnchorSideTop.Control = Owner
+ Left = 228
+ Height = 36
+ Top = 6
+ Width = 121
+ AutoSize = True
+ BorderSpacing.Top = 6
+ Caption = 'Design message'
+ OnClick = Button1Click
+ TabOrder = 5
+ end
object RxPopupNotifier1: TRxPopupNotifier
- Items = <>
+ Items = <
+ item
+ Active = False
+ Color = clAqua
+ Caption = 'Design message'
+ Message = 'Design time message'
+ end>
OnNotifiClick = RxPopupNotifier1NotifiClick
- Left = 56
- Top = 38
+ Left = 176
+ Top = 16
end
end
diff --git a/components/rx/trunk/demos/RxPopupNotifier/unit1.pas b/components/rx/trunk/demos/RxPopupNotifier/unit1.pas
index d8dd2f972..991cc25d0 100644
--- a/components/rx/trunk/demos/RxPopupNotifier/unit1.pas
+++ b/components/rx/trunk/demos/RxPopupNotifier/unit1.pas
@@ -13,15 +13,19 @@ type
{ TForm1 }
TForm1 = class(TForm)
+ Button1: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
ColorBox1: TColorBox;
Label1: TLabel;
+ RadioGroup1: TRadioGroup;
RxPopupNotifier1: TRxPopupNotifier;
+ procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
+ procedure RadioGroup1Click(Sender: TObject);
procedure RxPopupNotifier1NotifiClick(Sender: TRxPopupNotifier;
AItem: TRxPopupNotifierItem);
private
@@ -49,6 +53,18 @@ begin
FR:=RxPopupNotifier1.AddNotifyItem('Information', 'Static text information');
end;
+procedure TForm1.Button1Click(Sender: TObject);
+var
+ R: TRxPopupNotifierItem;
+begin
+ if RxPopupNotifier1.Items.Count>0 then
+ begin
+ R:=RxPopupNotifier1.Items[0];
+ R.Active:=true;
+
+ end;
+end;
+
procedure TForm1.Button5Click(Sender: TObject);
var
R1: TRxPopupNotifierItem;
@@ -70,6 +86,11 @@ begin
end
end;
+procedure TForm1.RadioGroup1Click(Sender: TObject);
+begin
+ RxPopupNotifier1.MessageCorner:=TRxPopupNotifierCorner(RadioGroup1.ItemIndex);
+end;
+
procedure TForm1.RxPopupNotifier1NotifiClick(Sender: TRxPopupNotifier;
AItem: TRxPopupNotifierItem);
begin
diff --git a/components/rx/trunk/rxcontrols/rxpopupnotifier.pas b/components/rx/trunk/rxcontrols/rxpopupnotifier.pas
index 03b714398..9f197c352 100644
--- a/components/rx/trunk/rxcontrols/rxpopupnotifier.pas
+++ b/components/rx/trunk/rxcontrols/rxpopupnotifier.pas
@@ -42,6 +42,8 @@ type
TRxPopupNotifierItem = class;
TRxPopupNotifier = class;
TRxPopupNotifierState = (rpsInactive, rpsMaximazed, rpsShowing, rpsMinimized);
+ TRxPopupNotifierCorner = (rpcTopLeft, rpcTopRight, rpcBootomLeft, rpcBottomRight);
+
TRxPopupNotifierEvent = procedure(Sender:TRxPopupNotifier; AItem:TRxPopupNotifierItem) of object;
{ TRxNotifierForm }
@@ -102,10 +104,13 @@ type
{ TNotifierCollection }
TNotifierCollection = class(TOwnedCollection)
+ private
+ function GetItems(AIndex: Integer): TRxPopupNotifierItem;
protected
procedure Update(Item: TCollectionItem); override;
public
constructor Create(AOwner: TPersistent);
+ property Items[AIndex:Integer]:TRxPopupNotifierItem read GetItems; default;
end;
{ TRxPopupNotifier }
@@ -118,6 +123,7 @@ type
FDefNotifierFormHeight: Cardinal;
FDefNotifierFormWidth: Cardinal;
FItems: TNotifierCollection;
+ FMessageCorner: TRxPopupNotifierCorner;
FOnNotifiClick: TRxPopupNotifierEvent;
FTimer:TTimer;
procedure SetActive(AValue: boolean);
@@ -137,6 +143,7 @@ type
published
property Active:boolean read FActive write SetActive default True;
property Items:TNotifierCollection read FItems write SetItems;
+ property MessageCorner:TRxPopupNotifierCorner read FMessageCorner write FMessageCorner default rpcBottomRight;
property DefaultColor:TColor read FDefaultColor write FDefaultColor default clYellow;
property DefNotifierFormWidth:Cardinal read FDefNotifierFormWidth write FDefNotifierFormWidth default 0;
property DefNotifierFormHeight:Cardinal read FDefNotifierFormHeight write FDefNotifierFormHeight default 0;
@@ -215,6 +222,11 @@ end;
{ TNotifierCollection }
+function TNotifierCollection.GetItems(AIndex: Integer): TRxPopupNotifierItem;
+begin
+ Result:=TRxPopupNotifierItem(GetItem(AIndex));
+end;
+
procedure TNotifierCollection.Update(Item: TCollectionItem);
var
FActive: Boolean;
@@ -301,8 +313,33 @@ begin
FNotifyForm:=TRxNotifierForm.CreateNotifierForm(Self);
FNotifyForm.Width:=TRxPopupNotifier(Collection.Owner).NotifierFormWidth;
FNotifyForm.Height:=1;
- FNotifyForm.Left:=Screen.Width - FNotifyForm.Width - 2;
- FNotifyForm.Top:=Screen.Height - FNotifyForm.Height - 2;
+
+ case TRxPopupNotifier(Collection.Owner).FMessageCorner of
+ rpcTopLeft:
+ begin
+ //TODO : доделать
+ FNotifyForm.Left := 2;
+ FNotifyForm.Top := 2;
+ end;
+ rpcTopRight:
+ begin
+ //TODO : доделать
+ FNotifyForm.Left := Screen.Width - FNotifyForm.Width - 2;
+ FNotifyForm.Top := 2;
+ end;
+ rpcBootomLeft:
+ begin
+ //TODO : доделать
+ FNotifyForm.Left := 2;
+ FNotifyForm.Top := Screen.Height - FNotifyForm.Height - 2;
+ end;
+ rpcBottomRight:
+ begin
+ FNotifyForm.Left:=Screen.Width - FNotifyForm.Width - 2;
+ FNotifyForm.Top:=Screen.Height - FNotifyForm.Height - 2;
+ end;
+ end;
+
FNotifyForm.BorderStyle:=bsNone;
FNotifyForm.FormStyle:=fsStayOnTop;
FNotifyForm.ShowInTaskBar:=stNever;
@@ -329,7 +366,12 @@ begin
if (TRxPopupNotifier(Collection.Owner).NotifierFormHeight > FNotifyForm.Height) then
begin
FNotifyForm.Height:=FNotifyForm.Height + 1;
- FNotifyForm.Top:=ATop - FNotifyForm.Height;
+ case TRxPopupNotifier(Collection.Owner).FMessageCorner of
+ //rpcTopLeft:;
+ //rpcTopRight:;
+ rpcBootomLeft:FNotifyForm.Top:=ATop - FNotifyForm.Height;
+ rpcBottomRight:FNotifyForm.Top:=ATop - FNotifyForm.Height;
+ end;
end
else
begin
@@ -343,13 +385,21 @@ begin
if (FNotifyForm.Height > 1) then
begin
FNotifyForm.Height:=FNotifyForm.Height - 1;
- FNotifyForm.Top:=ATop - FNotifyForm.Height;
+ case TRxPopupNotifier(Collection.Owner).FMessageCorner of
+ //rpcTopLeft:;
+ //rpcTopRight:;
+ rpcBootomLeft:FNotifyForm.Top:=ATop - FNotifyForm.Height;
+ rpcBottomRight:FNotifyForm.Top:=ATop - FNotifyForm.Height;
+ end;
end
else
FState:=rpsInactive;
end;
- ATop:=ATop - FNotifyForm.Height;
- ATop:=ATop - 2;
+
+ if TRxPopupNotifier(Collection.Owner).FMessageCorner in [rpcTopLeft, rpcTopRight] then
+ ATop:=ATop + FNotifyForm.Height + 2
+ else
+ ATop:=ATop - FNotifyForm.Height - 2;
end;
end;
@@ -357,8 +407,20 @@ procedure TRxPopupNotifierItem.UpdateFormPosition(var ATop: integer);
begin
if Assigned(FNotifyForm) then
begin
- FNotifyForm.Top:=ATop - FNotifyForm.Height;
- ATop:=ATop - FNotifyForm.Height - 2;
+ case TRxPopupNotifier(Collection.Owner).FMessageCorner of
+ rpcTopLeft,
+ rpcTopRight:
+ begin
+ FNotifyForm.Top:=ATop;
+ ATop:=ATop + FNotifyForm.Height + 2;
+ end;
+ rpcBootomLeft,
+ rpcBottomRight:
+ begin
+ FNotifyForm.Top:=ATop - FNotifyForm.Height;
+ ATop:=ATop - FNotifyForm.Height - 2;
+ end;
+ end;
end;
end;
@@ -398,7 +460,11 @@ var
Y, i: Integer;
FReposition: Boolean;
begin
- Y:=Screen.Height - 2;
+ if FMessageCorner in [rpcTopLeft, rpcTopRight] then
+ Y:=2
+ else
+ Y:=Screen.Height - 2;
+
FReposition:=false;
for i:=FItems.Count - 1 downto 0 do
begin
@@ -417,7 +483,18 @@ begin
if FReposition then
F.UpdateFormPosition(Y)
else
- Y:=Y - F.FNotifyForm.Height - 2;
+ begin
+ if FMessageCorner in [rpcTopLeft, rpcTopRight] then
+ Y:=Y + F.FNotifyForm.Height + 2
+ else
+ Y:=Y - F.FNotifyForm.Height - 2;
+ end;
+
+ if Y<0 then
+ Y:=2
+ else
+ if Y>Screen.Height then
+ Y:=Screen.Height - 2;
end;
end;
end;
@@ -480,6 +557,7 @@ begin
inherited Create(AOwner);
FDefaultColor:=clYellow;
FCloseInterval:=5;
+ FMessageCorner:=rpcBottomRight;
FActive:=true;
FItems:=TNotifierCollection.Create(Self);
FTimer:=TTimer.Create(Self);