From 7598ce84655d253a92f48c8d807cef3d49624ada Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 18 Aug 2010 17:02:49 +0200 Subject: Treeview: Tree nodes now track which tree they belong with. --- src/gui/fpg_tree.pas | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index b61b0c29..e58cf6f9 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -55,6 +55,7 @@ type end; // forward declaration + TfpgTreeView = class; TfpgTreeNode = class; TfpgTreeNodeFindMethod = procedure(ANode: TfpgTreeNode; var AFound: boolean) of object; @@ -77,6 +78,7 @@ type FText: TfpgString; FTextColor: TfpgColor; FHasChildren: Boolean; + FTree: TfpgTreeView; procedure SetCollapsed(const AValue: boolean); procedure SetInactSelColor(const AValue: TfpgColor); procedure SetInactSelTextColor(const AValue: TfpgColor); @@ -87,6 +89,7 @@ type procedure SetTextColor(const AValue: TfpgColor); procedure DoRePaint; procedure SetHasChildren(const AValue: Boolean); + procedure DoTreeCheck(ANode: TfpgTreeNode); public constructor Create; destructor Destroy; override; @@ -346,6 +349,12 @@ begin end; end; +procedure TfpgTreeNode.DoTreeCheck(ANode: TfpgTreeNode); +begin + if ANode.FTree <> FTree then + raise Exception.Create('Nodes must be of the same tree'); +end; + constructor TfpgTreeNode.Create; begin FData := nil; @@ -536,6 +545,7 @@ begin writeln('TfpgTreeNode.AppendText'); {$ENDIF} h := TfpgTreeNode.Create; + h.FTree := FTree; h.Text := AText; Append(h); result := h; @@ -758,7 +768,10 @@ end; function TfpgTreeview.GetRootNode: TfpgTreeNode; begin if FRootNode = nil then + begin FRootNode := TfpgTreeNode.Create; + FRootNode.FTree := self; + end; FRootNode.TextColor := clText1; FRootnode.SelTextColor := clSelectionText; FRootnode.SelColor := clSelection; @@ -1807,7 +1820,7 @@ function TfpgTreeView.NextNode(ANode: TfpgTreeNode): TfpgTreeNode; begin while ANode.Next = nil do begin - ANode := ANode.Parent; + ANode := ANode.Parent; // back out one level depth if ANode = nil then exit; //==> end; -- cgit v1.2.3-70-g09d2 From abbc6564e5ff58e746a29555f519011c499d08fb Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 18 Aug 2010 17:04:08 +0200 Subject: Treeview: Two now methods added. FullCollapse and FullExpand. --- src/gui/fpg_tree.pas | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index e58cf6f9..5f12ea1f 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -223,6 +223,8 @@ type function GetColumnWidth(AIndex: word): word; procedure GotoNextNodeUp; procedure GotoNextNodeDown; + procedure FullCollapse; + procedure FullExpand; property Font: TfpgFont read FFont; // Invisible node that starts the tree property RootNode: TfpgTreeNode read GetRootNode; @@ -1101,6 +1103,34 @@ begin Selection := NextNode(Selection); end; +procedure TfpgTreeView.FullCollapse; +var + n: TfpgTreeNode; +begin + n := NextNode(RootNode); + repeat + if n <> nil then + begin + n.Collapse; + end; + n := NextNode(n); + until n = nil; +end; + +procedure TfpgTreeView.FullExpand; +var + n: TfpgTreeNode; +begin + n := NextNode(RootNode); + repeat + if n <> nil then + begin + n.Expand; + end; + n := NextNode(n); + until n = nil; +end; + procedure TfpgTreeview.PreCalcColumnLeft; var Aleft: TfpgCoord; -- cgit v1.2.3-70-g09d2 From 22e6fb73635a415cf338b9d2a4e59fd0c71e482e Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 18 Aug 2010 17:06:57 +0200 Subject: Treeview: Introduced a new method TfpgTreeNode.MoveTo() Tree nodes can now be moved around in the tree. Behaviour is controlled with the TfpgNodeAttachMode parameter. --- src/gui/fpg_tree.pas | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index 5f12ea1f..e38b32da 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -48,6 +48,8 @@ uses type + TfpgNodeAttachMode = (naAdd, naAddFirst, naAddChild, naAddChildFirst, naInsert); + PfpgTreeColumnWidth = ^TfpgTreeColumnWidth; TfpgTreeColumnWidth = record next: PfpgTreeColumnWidth; @@ -107,6 +109,7 @@ type procedure Collapse; procedure Expand; procedure Remove(var aNode: TfpgTreeNode); + procedure MoveTo(Destination: TfpgTreeNode; Mode: TfpgNodeAttachMode); procedure UnregisterSubNode(aNode: TfpgTreeNode); // parent color settings function ParentInactSelColor: TfpgColor; @@ -671,6 +674,53 @@ begin aNode.parent := nil; end; +procedure TfpgTreeNode.MoveTo(Destination: TfpgTreeNode; Mode: TfpgNodeAttachMode); +begin + if Destination = nil then + Exit; + DoTreeCheck(Destination); + + Parent.Remove(self); + case Mode of + naAdd: + begin + Destination.Parent.Append(self); + end; + naAddFirst: + begin + Next := Destination.Parent.FirstSubNode; + Next.Prev := self; + Destination.Parent.FFirstSubNode := self; + Parent := Destination.Parent; + end; + naAddChild: + begin + Destination.Append(self); + end; + naAddChildFirst: + begin + Next := Destination.FirstSubNode; + if Assigned(Destination.FirstSubNode) then + Destination.FirstSubNode.Prev := self; + Destination.FFirstSubNode := self; + Parent := Destination; + if Destination.LastSubNode = nil then + Destination.FLastSubNode := self; + end; + naInsert: + begin + Prev := Destination.Prev; + Next := Destination; + Parent := Destination.Parent; + Destination.Prev := self; + if Prev = nil then + Parent.FFirstSubNode := self + else + Prev.Next := self; + end; + end; { case } +end; + procedure TfpgTreeNode.Clear; var n: TfpgTreeNode; -- cgit v1.2.3-70-g09d2 From c5b339a2f692b27fb239386ceafc1145e967773b Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 18 Aug 2010 17:07:55 +0200 Subject: TreeNode.Append() changed parameter name to something more meaningful. --- src/gui/fpg_tree.pas | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index e38b32da..d8f3fde2 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -104,7 +104,7 @@ type function FindSubNode(AData: TObject; ARecursive: Boolean): TfpgTreeNode; overload; function GetMaxDepth: integer; function GetMaxVisibleDepth: integer; - procedure Append(var aValue: TfpgTreeNode); + procedure Append(var ANode: TfpgTreeNode); procedure Clear; // remove all nodes recursively procedure Collapse; procedure Expand; @@ -418,20 +418,21 @@ begin end; end; -procedure TfpgTreeNode.Append(var aValue: TfpgTreeNode); +procedure TfpgTreeNode.Append(var ANode: TfpgTreeNode); begin - aValue.Parent := self; - aValue.Next := nil; + DoTreeCheck(ANode); + ANode.Parent := self; + ANode.Next := nil; if FFirstSubNode = nil then - FFirstSubNode := aValue; + FFirstSubNode := ANode; - aValue.prev := FLastSubNode; + ANode.Prev := FLastSubNode; if FLastSubNode <> nil then - FLastSubNode.Next := aValue; + FLastSubNode.Next := ANode; - FLastSubNode := aValue; + FLastSubNode := ANode; end; function TfpgTreeNode.FindSubNode(AText: string; ARecursive: Boolean): TfpgTreeNode; -- cgit v1.2.3-70-g09d2 From 801b16d29756a1c686c502e6d1988b6d5c51db71 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 18 Aug 2010 17:08:46 +0200 Subject: Treeview: Bumped up the visibility of some handy methods. --- src/gui/fpg_tree.pas | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index d8f3fde2..6081a1c3 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -209,12 +209,6 @@ type procedure DrawHeader(ACol: integer; ARect: TfpgRect; AFlags: integer); virtual; procedure DoChange; virtual; procedure DoExpand(ANode: TfpgTreeNode); virtual; - // only visual (visible) nodes - function NextVisualNode(ANode: TfpgTreeNode): TfpgTreeNode; - function PrevVisualNode(ANode: TfpgTreeNode): TfpgTreeNode; - // any next node, even if node is collapsed - function NextNode(ANode: TfpgTreeNode): TfpgTreeNode; - function PrevNode(ANode: TfpgTreeNode): TfpgTreeNode; // the nodes between the given node and the direct next node function SpaceToVisibleNext(aNode: TfpgTreeNode): integer; function StepToRoot(aNode: TfpgTreeNode): integer; @@ -228,6 +222,12 @@ type procedure GotoNextNodeDown; procedure FullCollapse; procedure FullExpand; + // any next node, even if node is collapsed + function NextNode(ANode: TfpgTreeNode): TfpgTreeNode; + function PrevNode(ANode: TfpgTreeNode): TfpgTreeNode; + // only visual (visible) nodes + function NextVisualNode(ANode: TfpgTreeNode): TfpgTreeNode; + function PrevVisualNode(ANode: TfpgTreeNode): TfpgTreeNode; property Font: TfpgFont read FFont; // Invisible node that starts the tree property RootNode: TfpgTreeNode read GetRootNode; -- cgit v1.2.3-70-g09d2 From a33aa25be6f67043ab587741f4ce28377d5584fb Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 18 Aug 2010 22:11:35 +0200 Subject: MenuBar: fixed menu selectio/focus issue * Menubar is not focusable, so our check for Is Focusable will never be true. * Menubar now has normal behaviour again. When you click, a menu opens, click again and menu closes. * Click to open menu and then move mouse over other menus, opens other popup menus. I can't believe this bug was over a year old!!! :-/ --- src/gui/fpg_menu.pas | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_menu.pas b/src/gui/fpg_menu.pas index 06e64b6f..2815d84d 100644 --- a/src/gui/fpg_menu.pas +++ b/src/gui/fpg_menu.pas @@ -150,6 +150,7 @@ type FMenuOptions: TfpgMenuOptions; FPrevFocusItem: integer; FFocusItem: integer; + FClicked: Boolean; procedure SetFocusItem(const AValue: integer); procedure DoSelect; procedure CloseSubmenus; @@ -420,11 +421,10 @@ begin end else begin - if not Focused then - Exit; + if not FClicked then + exit; end; - newf := CalcMouseCol(x); if not VisibleItem(newf).Selectable then Exit; //==> @@ -452,15 +452,17 @@ begin if ComponentCount = 0 then Exit; // We have no menu items in MainMenu. + + FClicked := not FClicked; - if not Focused then - ActivateMenu; - //else - //begin - //CloseSubmenus; - //DeActivateMenu; - //Exit; //==> - //end; + if FClicked then + ActivateMenu + else + begin + CloseSubmenus; + DeActivateMenu; + exit; //==> + end; newf := CalcMouseCol(x); @@ -532,6 +534,7 @@ begin FFocusItem := -1; FPrevFocusItem := -1; FFocusable := False; + FClicked := False; FBackgroundColor := Parent.BackgroundColor; FTextColor := Parent.TextColor; // calculate the best height based on font -- cgit v1.2.3-70-g09d2 From c65cc6d7f0b645977e759824a4e7dc89f4445863 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 18 Aug 2010 22:13:21 +0200 Subject: Popup Menu: fixes last selected item still focused bug. * When you selected a menu item, and then later open that popup menu again, that last selected item has focus. Now that focus is reset when the user selected a menu item. Another loooong overdue bug fix. --- src/gui/fpg_menu.pas | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_menu.pas b/src/gui/fpg_menu.pas index 2815d84d..452299a5 100644 --- a/src/gui/fpg_menu.pas +++ b/src/gui/fpg_menu.pas @@ -768,7 +768,10 @@ begin op.Close; op := op.OpenerPopup; end; + // notify menubar that we clicked a menu item + OpenerMenuBar.FClicked := False; VisibleItem(FFocusItem).Click; + FFocusItem := -1; end; { if/else } // if OpenerMenuBar <> nil then -- cgit v1.2.3-70-g09d2 From c5c2de472878256070b85e61d738ee1253c3352b Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 18 Aug 2010 22:45:26 +0200 Subject: MenuBar Open/Close popup menus bug. This change fixes the last issues, depending on the MenuOptions set. Now all menu options behave as they should. Clicking the second time on the same menu items now correctly closes the popup menu etc. --- src/gui/fpg_menu.pas | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_menu.pas b/src/gui/fpg_menu.pas index 452299a5..89905743 100644 --- a/src/gui/fpg_menu.pas +++ b/src/gui/fpg_menu.pas @@ -151,10 +151,12 @@ type FPrevFocusItem: integer; FFocusItem: integer; FClicked: Boolean; + FLastItemClicked: integer; procedure SetFocusItem(const AValue: integer); procedure DoSelect; procedure CloseSubmenus; function ItemWidth(mi: TfpgMenuItem): integer; + procedure InternalReset; protected FItems: TList; // stores visible items only property FocusItem: integer read FFocusItem write SetFocusItem; @@ -408,6 +410,8 @@ var begin inherited HandleMouseMove(x, y, btnstate, shiftstate); + newf := CalcMouseCol(x); + // process menu options if mnuo_nofollowingmouse in FMenuOptions then begin @@ -416,16 +420,19 @@ begin end else if mnuo_autoopen in FMenuOptions then begin - if not Focused then - ActivateMenu; +// if not Focused then + FLastItemClicked := newf; + FClicked := True; + ActivateMenu; end else begin if not FClicked then - exit; + exit + else + FLastItemClicked := newf; end; - newf := CalcMouseCol(x); if not VisibleItem(newf).Selectable then Exit; //==> @@ -453,19 +460,28 @@ begin if ComponentCount = 0 then Exit; // We have no menu items in MainMenu. - FClicked := not FClicked; + newf := CalcMouseCol(x); + if (FLastItemClicked <> -1) and (FLastItemClicked <> newf) then + begin + // do nothing + //FClicked := not FClicked + end + else + FClicked := not FClicked; if FClicked then - ActivateMenu + begin + ActivateMenu; + FLastItemClicked := newf; + end else begin CloseSubmenus; DeActivateMenu; + FLastItemClicked := -1; exit; //==> end; - newf := CalcMouseCol(x); - if not VisibleItem(newf).Selectable then Exit; //==> @@ -533,6 +549,7 @@ begin FBeforeShow := nil; FFocusItem := -1; FPrevFocusItem := -1; + FLastItemClicked := -1; FFocusable := False; FClicked := False; FBackgroundColor := Parent.BackgroundColor; @@ -557,6 +574,12 @@ begin Result := fpgStyle.MenuFont.TextWidth(mi.Text) + (2*6); end; +procedure TfpgMenuBar.InternalReset; +begin + FClicked := False; + FLastItemClicked := -1; +end; + procedure TfpgMenuBar.DrawColumn(col: integer; focus: boolean); var n: integer; @@ -739,6 +762,7 @@ begin Result:= TfpgMenuItem(Components[AMenuPos]); end; + { TfpgPopupMenu } procedure TfpgPopupMenu.DoSelect; @@ -769,7 +793,7 @@ begin op := op.OpenerPopup; end; // notify menubar that we clicked a menu item - OpenerMenuBar.FClicked := False; + OpenerMenuBar.InternalReset; VisibleItem(FFocusItem).Click; FFocusItem := -1; end; { if/else } -- cgit v1.2.3-70-g09d2 From b3e8e2e4c385f983ed2dee67cb02211c040a6e69 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 19 Aug 2010 11:08:26 +0200 Subject: Treeview: repaint tree after FullCollapse or FullExpand calls. --- src/gui/fpg_tree.pas | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index 6081a1c3..471fcf6f 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -1166,6 +1166,7 @@ begin end; n := NextNode(n); until n = nil; + Repaint; end; procedure TfpgTreeView.FullExpand; @@ -1180,6 +1181,7 @@ begin end; n := NextNode(n); until n = nil; + Repaint; end; procedure TfpgTreeview.PreCalcColumnLeft; -- cgit v1.2.3-70-g09d2 From 6d677af89c25357a409dcb2f5cf571ad5600062f Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 19 Aug 2010 12:19:38 +0200 Subject: MenuBar: bugfix - clicking disabled menu items should not toggle internal FClicked. --- src/gui/fpg_menu.pas | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_menu.pas b/src/gui/fpg_menu.pas index 89905743..da357640 100644 --- a/src/gui/fpg_menu.pas +++ b/src/gui/fpg_menu.pas @@ -467,7 +467,10 @@ begin //FClicked := not FClicked end else - FClicked := not FClicked; + begin + if VisibleItem(newf).Selectable then + FClicked := not FClicked; + end; if FClicked then begin -- cgit v1.2.3-70-g09d2 From ad4ffd2bde0095bae514ee65e5f1cfd2f21380d0 Mon Sep 17 00:00:00 2001 From: Jean-Marc Levecque Date: Thu, 19 Aug 2010 12:32:07 +0200 Subject: Here attached is a little improvement for SpinEdit It allows the high and low limit values to be reached when up/down keys are maintained pressed, same as when mouse is maintained on the up/down arrows. --- src/gui/fpg_spinedit.pas | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_spinedit.pas b/src/gui/fpg_spinedit.pas index 21548f97..ce768120 100644 --- a/src/gui/fpg_spinedit.pas +++ b/src/gui/fpg_spinedit.pas @@ -707,6 +707,11 @@ begin begin FValue := FValue + FIncrement; FEdit.Value := FValue; + end + else if not IsMaxLimitReached then + begin + FValue := FMaxValue; + FEdit.Value := FValue; end; if KeyCode = KeyDown then @@ -714,6 +719,11 @@ begin begin FValue := FValue - FIncrement; FEdit.Value := FValue; + end + else if not IsMinLimitReached then + begin + FValue := FMinValue; + FEdit.Value := FValue; end; if KeyCode = KeyPageUp then @@ -1121,6 +1131,11 @@ begin begin Inc(FValue, FIncrement); FEdit.Value := FValue; + end + else if not IsMaxLimitReached then + begin + FValue := FMaxValue; + FEdit.Value := FValue; end; if KeyCode = KeyDown then @@ -1128,6 +1143,11 @@ begin begin Dec(FValue, FIncrement); FEdit.Value := FValue; + end + else if not IsMinLimitReached then + begin + FValue := FMinValue; + FEdit.Value := FValue; end; if KeyCode = KeyPageUp then -- cgit v1.2.3-70-g09d2 From 16c423fb8f4e3ce09ed310f98c532ad7c5cf6438 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 19 Aug 2010 12:49:11 +0200 Subject: Menus: Minor bugfix in popup menus. OpenerMenuBar is not always assigned. Popup menus can of course be used without a Main MenuBar, so I have to do some extra checking first before I call InternalReset. --- src/gui/fpg_menu.pas | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_menu.pas b/src/gui/fpg_menu.pas index da357640..f7af611d 100644 --- a/src/gui/fpg_menu.pas +++ b/src/gui/fpg_menu.pas @@ -796,7 +796,8 @@ begin op := op.OpenerPopup; end; // notify menubar that we clicked a menu item - OpenerMenuBar.InternalReset; + if Assigned(OpenerMenuBar) then + OpenerMenuBar.InternalReset; VisibleItem(FFocusItem).Click; FFocusItem := -1; end; { if/else } -- cgit v1.2.3-70-g09d2 From b0897c45001533b6b16b9934c0d225e12d459dc9 Mon Sep 17 00:00:00 2001 From: Jean-Marc Levecque Date: Thu, 19 Aug 2010 12:50:10 +0200 Subject: Here attached is a patch for EditCombo implementing the use of Charmap for special characters, the same way as already done with EditText. --- src/gui/fpg_editcombo.pas | 132 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 131 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_editcombo.pas b/src/gui/fpg_editcombo.pas index 20b6ee8d..440f6885 100644 --- a/src/gui/fpg_editcombo.pas +++ b/src/gui/fpg_editcombo.pas @@ -58,6 +58,7 @@ uses fpg_main, fpg_widget, fpg_popupwindow, + fpg_menu, fpg_combobox; type @@ -72,10 +73,14 @@ type FSelectedItem: integer; FMaxLength: integer; FNewItem: boolean; + FDefaultPopupMenu: TfpgPopupMenu; procedure SetAllowNew(const AValue: TAllowNew); procedure InternalBtnClick(Sender: TObject); procedure InternalListBoxSelect(Sender: TObject); procedure InternalListBoxKeyPress(Sender: TObject; var keycode: word; var shiftstate: TShiftState; var consumed: Boolean); + procedure DefaultPopupInsertFromCharmap(Sender: TObject); + procedure DoPaste(const AText: TfpgString); + procedure SetDefaultPopupMenuItemsState; protected FDropDown: TfpgPopupWindow; FDrawOffset: integer; @@ -86,11 +91,14 @@ type function GetText: string; virtual; function HasText: boolean; virtual; procedure SetText(const AValue: string); virtual; + procedure ShowDefaultPopupMenu(const x, y: integer; const shiftstate: TShiftState); virtual; procedure HandleResize(AWidth, AHeight: TfpgCoord); override; procedure HandleKeyChar(var AText: TfpgChar; var shiftstate: TShiftState; var consumed: Boolean); override; procedure HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: Boolean); override; procedure HandleLMouseDown(x, y: integer; shiftstate: TShiftState); override; procedure HandleLMouseUp(x, y: integer; shiftstate: TShiftState); override; + procedure HandleRMouseDown(x, y: integer; shiftstate: TShiftState); override; + procedure HandleRMouseUp(x, y: integer; shiftstate: TShiftState); override; procedure HandlePaint; override; property AutoCompletion: Boolean read FAutocompletion write FAutoCompletion default False; property AllowNew: TAllowNew read FAllowNew write SetAllowNew default anNo; @@ -145,6 +153,14 @@ uses fpg_listbox, fpg_dialogs; +const + // internal popupmenu item names + //ipmCut = 'miDefaultCut'; + //ipmCopy = 'miDefaultCopy'; + //ipmPaste = 'miDefaultPaste'; + //ipmClearAll = 'miDefaultClearAll'; + ipmCharmap = 'miDefaultCharmap'; + var OriginalFocusRoot: TfpgWidget; @@ -372,6 +388,74 @@ begin Repaint; end; +procedure TfpgBaseEditCombo.DefaultPopupInsertFromCharmap(Sender: TObject); +var + s: TfpgString; +begin + if FAllowNew= anNo then + Exit; + s := fpgShowCharMap; + if s <> '' then + //SetText(s); + DoPaste(s); +end; + +procedure TfpgBaseEditCombo.DoPaste(const AText: TfpgString); +var + s: string; + prevval: TfpgString; + i: integer; +begin + prevval := FText; + s := AText; + if (FMaxLength <= 0) or (UTF8Length(FText) < FMaxLength) then + begin + UTF8Insert(s, FText, FCursorPos + UTF8Length(s)); + Inc(FCursorPos); + FSelStart := FCursorPos; + if Assigned(FDropDown) then + FDropDown.Close; + FSelectedItem := -1; + for i := 0 to FItems.Count-1 do + if SameText(UTF8Copy(FItems.Strings[i], 1, UTF8Length(FText)), FText) then + begin + FSelectedItem:= i; + DoDropDown; + Break; + end; + if FSelectedItem = -1 then + FNewItem:= True; + end; + Repaint; + if prevval <> Text then + DoOnChange; +end; + +procedure TfpgBaseEditCombo.SetDefaultPopupMenuItemsState; +var + i: integer; + itm: TfpgMenuItem; +begin + //for i := 0 to FDefaultPopupMenu.ComponentCount-1 do + //begin + // if FDefaultPopupMenu.Components[i] is TfpgMenuItem then + // begin + // itm := TfpgMenuItem(FDefaultPopupMenu.Components[i]); + // // enabled/disable menu items + // if itm.Name = ipmCut then + // itm.Enabled := (not ReadOnly) and (FSelOffset <> 0) + // else if itm.Name = ipmCopy then + // itm.Enabled := FSelOffset <> 0 + // else if itm.Name = ipmPaste then + // itm.Enabled := (not ReadOnly) and (fpgClipboard.Text <> '') + // else if itm.Name = ipmClearAll then + // itm.Enabled := (not ReadOnly) and (Text <> '') + // else if itm.Name = ipmCharmap then + // itm.Enabled := (not ReadOnly); + // end; + //end; +end; + procedure TfpgBaseEditCombo.SetText(const AValue: string); var i: integer; @@ -398,6 +482,32 @@ begin end; end; +procedure TfpgBaseEditCombo.ShowDefaultPopupMenu(const x, y: integer; + const shiftstate: TShiftState); +var + itm: TfpgMenuItem; +begin + if not Assigned(FDefaultPopupMenu) then + begin + FDefaultPopupMenu := TfpgPopupMenu.Create(nil); + //itm := FDefaultPopupMenu.AddMenuItem(rsCut, '', @DefaultPopupCut); + //itm.Name := ipmCut; + //itm := FDefaultPopupMenu.AddMenuItem(rsCopy, '', @DefaultPopupCopy); + //itm.Name := ipmCopy; + //itm := FDefaultPopupMenu.AddMenuItem(rsPaste, '', @DefaultPopupPaste); + //itm.Name := ipmPaste; + //itm := FDefaultPopupMenu.AddMenuItem(rsDelete, '', @DefaultPopupClearAll); + //itm.Name := ipmClearAll; + //itm := FDefaultPopupMenu.AddMenuItem('-', '', nil); + //itm.Name := 'N1'; + itm := FDefaultPopupMenu.AddMenuItem(rsInsertFromCharacterMap, '', @DefaultPopupInsertFromCharmap); + itm.Name := ipmCharmap; + end; + + SetDefaultPopupMenuItemsState; + FDefaultPopupMenu.ShowAt(self, x, y); +end; + procedure TfpgBaseEditCombo.HandleResize(AWidth, AHeight: TfpgCoord); begin inherited HandleResize(AWidth, AHeight); @@ -595,6 +705,25 @@ begin PaintInternalButton; end; +procedure TfpgBaseEditCombo.HandleRMouseDown(x, y: integer; + shiftstate: TShiftState); +begin + // keyMenu was pressed + if shiftstate = [ssExtra1] then + HandleRMouseUp(x, y, []) + else + inherited HandleRMouseDown(x, y, shiftstate); +end; + +procedure TfpgBaseEditCombo.HandleRMouseUp(x, y: integer; shiftstate: TShiftState); +begin + inherited HandleRMouseUp(x, y, shiftstate); + //if Assigned(PopupMenu) then + // PopupMenu.ShowAt(self, x, y) + //else + ShowDefaultPopupMenu(x, y, ShiftState); +end; + procedure TfpgBaseEditCombo.HandlePaint; var r: TfpgRect; @@ -770,7 +899,8 @@ end; destructor TfpgBaseEditCombo.Destroy; begin - FDropDown.Free; + if not Assigned(FDropDown) then + FDropDown.Free; inherited Destroy; end; -- cgit v1.2.3-70-g09d2 From 8929fb48b74c3b7ae60a7b0809fa21751d981e64 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 19 Aug 2010 16:02:45 +0200 Subject: Images: updated standard arrow images. * They used to be Indexed BMP, now they are RGB BMP's. fpGUI doesn't handle Indexed images well - I'm working on better image support. * Updatet the script to generate image include file under Linux. * Rebuilt stdimages.inc file. --- images/arrow_down.bmp | Bin 78 -> 150 bytes images/arrow_left.bmp | Bin 90 -> 138 bytes images/arrow_right.bmp | Bin 90 -> 138 bytes images/arrow_up.bmp | Bin 78 -> 150 bytes images/stdimg_update.sh | 2 +- src/corelib/stdimages.inc | 4345 +++++++++++++++++++++++---------------------- 6 files changed, 2231 insertions(+), 2116 deletions(-) (limited to 'src') diff --git a/images/arrow_down.bmp b/images/arrow_down.bmp index 853bf3c8..9745bd9a 100644 Binary files a/images/arrow_down.bmp and b/images/arrow_down.bmp differ diff --git a/images/arrow_left.bmp b/images/arrow_left.bmp index 6402f832..1a2a9a9d 100644 Binary files a/images/arrow_left.bmp and b/images/arrow_left.bmp differ diff --git a/images/arrow_right.bmp b/images/arrow_right.bmp index 223e3a5a..fa9be65b 100644 Binary files a/images/arrow_right.bmp and b/images/arrow_right.bmp differ diff --git a/images/arrow_up.bmp b/images/arrow_up.bmp index 0c51179c..3f6282b2 100644 Binary files a/images/arrow_up.bmp and b/images/arrow_up.bmp differ diff --git a/images/stdimg_update.sh b/images/stdimg_update.sh index 677136da..0feec995 100755 --- a/images/stdimg_update.sh +++ b/images/stdimg_update.sh @@ -1,3 +1,3 @@ #!/bin/sh chmod +x updatestdimgs -./updatestdimgs > ../src/corelib/stdimages.inc +./updatestdimgs -p stdimg > ../src/corelib/stdimages.inc diff --git a/src/corelib/stdimages.inc b/src/corelib/stdimages.inc index 0c880278..c2129704 100644 --- a/src/corelib/stdimages.inc +++ b/src/corelib/stdimages.inc @@ -1,49 +1,152 @@ -{%mainunit fpg_stdimages.pas} Const - stdimg_list_add_16 : Array[0..821] of byte = ( + stdimg_edit : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0,235, 10, 0, 0,235, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 98,146, 94, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98,146, 94, 98,146, 94, + 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255, + 255,255,255,255,160,160,160,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255, 0, 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, + 88, 88, 88,220,220,220,160,160,160,160,160,160, 0, 0, 0,160,160, + 160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, + 160,160, 0, 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, 88, 88, 88, + 220,220,220,255,255,255,255,255,255, 88, 88, 88, 48, 48, 48, 0, 0, + 64,195,195,195,220,220,220,255,255,255,255,255,255,255,255,255, 0, + 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, 88, 88, 88,220,220,220, + 255,255,255,255,255,255,255,255,255, 88, 88, 88,168,220,255, 0, 88, + 192, 0, 88,192,195,195,195,220,220,220,255,255,255, 0, 0, 0, 98, + 146, 94, 98,146, 94, 98,146, 94, 88, 88, 88,220,220,220,195,195,195, + 195,195,195,195,195,195,160,160,160,168,220,255,168,220,255,168,220, + 255, 0, 88,192, 0, 88,192,160,160,160, 0, 0, 0, 98,146, 94, 98, + 146, 94, 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255, + 255,255,255,255,255,255, 88,168,255,168,220,255,168,220,255,168,220, + 255,168,220,255, 0, 0, 64, 0, 0, 0, 98,146, 94, 98,146, 94, 98, + 146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255,255, + 255,255,255,160,160,160,168,220,255,168,220,255, 0,128,255, 0,128, + 255, 0, 88,192, 48, 48, 48, 98,146, 94, 98,146, 94, 98,146, 94, 88, + 88, 88,220,220,220,195,195,195,195,195,195,195,195,195,195,195,195, + 195,195,195, 88,168,255,168,220,255, 0,128,255, 0,128,255, 0,128, + 255, 0, 88,192, 48, 48, 48, 98,146, 94, 98,146, 94, 88, 88, 88,220, + 220,220,255,255,255,255,255,255,255,255,255,255,255,255,195,195,195, + 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, + 255, 0, 88,192, 0, 0, 64, 98,146, 94, 88, 88, 88,220,220,220,255, + 255,255,255,255,255,255,255,255,255,255,255,195,195,195,255,255,255, + 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, + 255, 0, 88,192, 98,146, 94, 88, 88, 88,220,220,220,195,195,195,195, + 195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195, + 195,195,195, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, + 255, 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255, + 255,255,255,255,255,195,195,195,255,255,255,255,255,255,255,255,255, + 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 98,146, + 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255,255,255, + 255,255,195,195,195,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 88,168,255, 88,168,255, 0,128,255, 98,146, 94, 88, 88, + 88,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, + 220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, + 88, 88, 88, 88,168,255, 88,168,255, 98,146, 94, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 98,146, 94, 98,146, 94); + +Const + stdimg_menu_save_all_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,202,138, + 97,195,132, 88,211,139,104,225,143,112,220,141,108,218,139,109,215, + 138,110,205,139,108,171,109, 68,166, 95, 46,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,198,131, 85,239,206, + 186,221,255,255,135,238,199,162,244,215,162,246,215,140,238,199,224, + 255,255,221,162,133,171,106, 62,255,255,255,255,255,255,255,255,255, + 255,255,255,208,153,117,203,148,110,195,127, 81,239,182,154,234,243, + 232, 81,191,132,111,201,152,113,201,153, 84,191,132,228,244,233,221, + 156,123,170,105, 58,255,255,255,255,255,255,255,255,255,255,255,255, + 205,147,107,241,212,195,196,129, 84,234,182,151,243,243,234,237,241, + 230,239,241,230,239,240,230,237,241,229,243,245,237,213,156,121,176, + 112, 68,255,255,255,255,255,255,213,163,131,208,158,123,199,131, 88, + 238,180,153,201,139, 97,230,181,146,226,167,129,225,167,129,222,163, + 125,220,161,123,219,159,121,217,158,119,212,154,115,187,126, 87,255, + 255,255,255,255,255,210,157,121,242,216,201,201,145,106,225,190,159, + 202,141,101,234,184,153,221,165,126,221,166,128,219,163,124,217,160, + 122,217,160,121,216,159,120,216,158,120,191,132, 93,255,255,255,255, + 255,255,208,154,118,242,197,175,205,153,115,215,184,148,200,136, 93, + 239,191,161,253,252,250,254,252,251,254,253,253,254,253,252,253,251, + 250,253,252,251,221,168,133,193,127, 83,255,255,255,255,255,255,208, + 156,120,238,197,173,207,155,119,235,192,164,199,134, 91,239,192,158, + 255,255,255,204,147,110,255,255,255,255,255,255,255,251,247,255,248, + 241,228,175,140,199,138, 97,255,255,255,255,255,255,212,164,130,235, + 197,169,204,142,101,238,190,161,204,141,101,243,205,176,255,255,255, + 227,199,179,255,255,255,255,255,255,255,255,255,255,255,255,234,191, + 161,201,137, 96,255,255,255,255,255,255,213,165,134,238,199,175,202, + 140, 99,237,191,158,212,151,110,212,158,123,208,152,113,214,164,130, + 205,142,104,205,144,105,208,154,117,209,153,115,200,139, 98,238,220, + 208,255,255,255,255,255,255,212,161,127,242,205,181,210,156,121,244, + 211,186,255,255,255,231,206,189,255,255,254,255,255,255,251,246,242, + 248,241,237,237,199,173,208,152,117,255,255,255,255,255,255,255,255, + 255,255,255,255,211,160,126,242,205,179,218,165,129,212,160,126,214, + 166,131,219,176,146,211,157,123,211,158,123,211,159,123,209,154,117, + 207,154,118,240,225,214,255,255,255,255,255,255,255,255,255,255,255, + 255,215,165,134,246,216,193,255,255,255,233,211,195,255,255,255,255, + 255,255,255,255,255,255,255,255,238,205,181,212,162,130,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,221,173, + 141,221,179,151,218,174,143,223,183,156,216,166,136,216,168,137,218, + 175,146,219,175,145,212,164,131,241,227,217,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_btn_ok_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,182,132, - 93,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,164,101, 52,230,206, - 183,230,206,183,164,101, 52,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,164,101, 52,230,206,183,217,173, - 134,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,164,101, 52,230,206,183,217,173,134,164,101, - 52,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,182,132, 93,164,101, 52,164,101, 52, - 164,101, 52,164,101, 52,217,173,134,217,173,134,164,101, 52,164,101, - 52,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, - 255,255,255,255,255,164,101, 52,229,204,180,219,183,149,219,182,148, - 218,180,146,218,179,144,217,173,134,216,170,131,215,168,127,215,166, - 125,224,190,159,164,101, 52,255,255,255,255,255,255,255,255,255,255, - 255,255,164,101, 52,232,211,192,231,209,187,231,209,188,230,206,183, - 230,206,183,230,206,183,230,206,183,230,205,182,230,204,181,230,204, - 182,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,182, - 132, 93,164,101, 52,164,101, 52,164,101, 52,164,101, 52,230,206,183, - 230,206,183,164,101, 52,164,101, 52,164,101, 52,164,101, 52,182,132, - 93,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,164,101, 52,230,206,183,230,206,183, - 164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,164,101, 52,230,206,183,230,206,183,164,101, 52, + 255,255,255,255,255,255,255,255,255,255,255,255, 55,131, 61, 52,125, + 58,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255, 64,142, 71, 84,163, 92, 79,159, 87, 51,125, + 57,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 73,154, 81, 91,172,100,119,202,130,116,200,126, 81,160, 89, 52,126, + 58,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 81,166, 90, 99,181,109, + 126,206,137,123,204,135,118,202,129,118,201,129, 82,162, 90, 53,127, + 59,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255, 89,176, 99,107,189,118,132,210,144,122,201,133, + 96,178,106, 99,180,109,120,201,131,120,203,130, 83,163, 92, 54,128, + 60,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,108,189,118,121,201,134,128,206,141, 83,167, 92,255,255,255, + 255,255,255, 92,173,103,124,204,134,121,203,133, 84,164, 93, 55,129, + 61,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,108,189,117,109,192,121,255,255,255,255,255,255,255,255,255, + 255,255,255, 94,174,104,125,205,137,124,205,135, 86,165, 95, 56,130, + 62,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 95,175,105,127,206,138,126,206,137, 87,166, 96, 57,131, + 63,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 96,176,106,129,207,141,127,207,139, 88,167, 97, 57,133, + 64,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 98,178,108,130,209,143,122,200,133, 87,166, 96,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 99,179,109, 95,175,105,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,164,101, 52,230,206,183,230,206,183,164,101, 52,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,182, - 132, 93,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, @@ -53,503 +156,437 @@ Const 255,255,255,255,255,255); Const - stdimg_menu_saveas_16 : Array[0..821] of byte = ( + stdimg_font_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,216,171,142,205,149,112,189,115, 66,183,104, 53,181,104, - 53,180,103, 52,178,102, 52,176,101, 51,174,100, 51,172, 99, 50,170, - 98, 50,169, 97, 50,168, 96, 49,167, 97, 50,171,105, 60,188,134, 97, - 195,125, 79,235,198,173,234,197,173,254,251,248,254,251,248,254,251, - 248,254,251,248,254,251,248,254,251,248,254,251,248,254,251,248,254, - 251,248,254,251,248,200,154,124,199,152,121,173,107, 64,186,108, 56, - 237,202,179,224,162,122,254,250,247, 98,192,136, 98,192,136, 98,192, - 136, 98,192,136, 98,192,136, 98,192,136, 98,192,136, 98,192,136,253, - 249,246,202,141,101,201,155,124,167, 97, 50,187,108, 56,238,204,182, - 225,162,122,254,250,247,191,220,194,191,220,194,191,220,194,191,220, - 194,191,220,194,191,220,194,191,220,194,191,220,194,253,249,246,205, - 144,104,204,158,129,168, 97, 50,187,107, 56,239,206,184,225,162,121, - 254,250,247, 98,192,136, 98,192,136,206,247,255, 41, 41, 41, 82, 82, - 82,206,247,255, 98,192,136, 98,192,136,253,249,246,207,147,106,206, - 163,132,170, 97, 50,186,106, 54,239,208,187,226,162,122,254,251,248, - 206,247,255,206,247,255,206,247,255,206,247,255,206,247,255,206,247, - 255,206,247,255,206,247,255,254,251,248,211,150,109,210,167,138,171, - 98, 50,187,106, 54,240,210,190,226,163,122,226,163,122,206,247,255, - 206,247,255,206,247,255, 41, 41, 41, 82, 82, 82,206,247,255,206,247, - 255,206,247,255,216,153,113,214,153,112,213,171,142,173, 99, 51,187, - 106, 54,242,213,194,227,163,122,208,242,250,206,247,255,206,247,255, - 206,247,255, 82, 82, 82, 41, 41, 41,132,156,165,206,247,255,206,247, - 255,210,247,254,217,155,115,218,176,149,175,100, 51,187,106, 54,242, - 216,197,227,164,123,181,238,254,181,239,255,181,239,255,181,239,255, - 181,239,255, 82, 82, 82, 41, 41, 41, 82, 82, 82,181,239,255,181,239, - 254,220,157,116,221,181,154,177,101, 52,187,107, 54,244,217,199,230, - 166,125,186,236,250,181,239,255, 41, 41, 41, 82, 82, 82,181,239,255, - 181,239,255, 41, 41, 41, 41, 41, 41,181,239,255,186,239,253,218,156, - 116,225,186,159,179,102, 52,187,108, 55,244,220,201,231,167,125,201, - 230,240,181,239,255, 41, 41, 41, 41, 41, 41,181,239,255,132,156,165, - 41, 41, 41, 41, 41, 41,181,239,255,201,239,249,222,160,119,228,190, - 164,180,103, 52,189,110, 58,245,221,204,231,168,126,250,240,232,181, - 239,255,132,156,165, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 132,156,165,181,239,255,247,229,217,224,162,120,231,194,169,182,104, - 53,192,116, 66,246,223,208,232,168,126,252,246,241,198,242,246,148, - 247,255,148,247,255,148,247,255,148,247,255,148,247,255,148,247,255, - 184,228,232,247,230,219,225,163,122,239,213,195,183,106, 54,198,130, - 85,246,223,209,233,170,128,254,250,246,253,250,246,218,241,243,175, - 244,250,153,246,254,153,246,254,175,244,250,218,241,243,249,236,226, - 248,231,219,238,208,186,236,208,189,189,116, 67,214,165,133,246,224, - 209,247,224,209,254,251,248,254,251,247,253,249,246,252,245,240,250, - 240,234,251,242,237,253,249,246,253,250,247,251,241,235,248,233,223, - 236,209,190,205,146,106,226,197,177,225,189,166,217,171,141,201,137, - 94,192,117, 67,189,110, 58,187,108, 55,187,107, 54,187,106, 54,187, - 106, 54,188,108, 57,189,110, 59,187,109, 58,191,116, 68,201,141,101, - 231,206,188,255,255,255); + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,128,128,128,135,135,135,133, + 133,133,133,133,133,128,128,128,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255, 88, 88, 88,102,102,102,108,108,108, 99, + 99, 99, 83, 83, 83,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255, 81, 81, 81, 84, 84, 84, 81, 81, 81,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255, 60, 77,162, 76, 89,162, 77, 90,161, 74, 87,161, 73, 84, + 156,255, 0,255, 80, 80, 77, 45, 45, 45, 74, 74, 74,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 36, 59,219, 0, 43,255, 0, 47,255, 0, 39,239, 45, 62,197,255, 0, + 255, 65, 65, 63, 7, 7, 7, 60, 60, 60,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 19, 38,213, 0, 32,255, 80, 88,168,255, 0,255,255, 0,255, 55, 55, + 55, 0, 0, 0, 58, 58, 58,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 28, 37,212, + 0, 16,255, 86, 89,166,255, 0,255,255, 0,255, 55, 55, 55, 1, 1, + 1, 58, 58, 58,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255, 27, 28,213, 0, 3,255, + 85, 85,168,255, 0,255,255, 0,255, 55, 55, 55, 0, 0, 0, 58, 58, + 58,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255, 27, 27,213, 0, 0,255, 84, 84,166, + 255, 0,255,255, 0,255, 57, 57, 57, 11, 11, 11, 60, 60, 60,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255, 27, 27,220, 3, 4,166, 62, 62, 88,255, 0,255, + 255, 0,255, 71, 71, 71, 49, 49, 49, 71, 71, 71,255, 0,255,255, 0, + 255,100,100,100,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255, 27, 27,224, 19, 19,138, 52, 52, 32,255, 0,255,255, 0,255, + 78, 78, 78, 93, 93, 93, 76, 76, 76,255, 0,255,255, 0,255, 40, 40, + 40,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 29, + 29,225, 24, 24,153,113,113, 93, 65, 65, 65, 71, 71, 71, 84, 84, 81, + 139,139,138, 75, 75, 75, 74, 74, 74, 66, 66, 66,113,113,113,255, 0, + 255, 78, 78,167, 88, 88,152,255, 0,255,255, 0,255, 48, 48,225, 37, + 38,161,103,103, 98,114,114,111,106,106,103,106,106,115,112,112,115, + 111,111,111,105,105,105,113,113,113,113,113,113,255, 0,255, 83, 83, + 197, 45, 45,204,255, 0,255,255, 0,255, 59, 60,212, 81, 83,247, 72, + 72,146,255, 0,255,255, 0,255, 43, 44,213,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,105,105,181,113,114, + 255, 76, 76,207, 77, 77,191, 97, 98,244,127,128,255, 79, 79,220, 83, + 84,188, 87, 87,223,104,105,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,123,123,178, 80, 80,215, 84, 84, + 223, 80, 80,228, 81, 81,220, 74, 74,218, 79, 79,223, 77, 77,228, 83, + 83,239, 67, 68,231,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); Const - stdimg_help_16 : Array[0..821] of byte = ( + stdimg_choice_yes_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,192,161,139,164,117, 85,142, 85, 45,142, 85, 45,165,119, 87,193, - 161,139,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,198,169,149,147, 91, 53,203,175, - 155,229,214,203,248,244,241,249,245,242,232,219,209,211,186,167,149, - 94, 56,199,171,151,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,163,116, 84,175,134,105,243,237,233,221,201,186,199,165, - 139,187,145,113,193,153,121,213,183,159,233,218,205,248,243,239,183, - 145,117,166,120, 88,255, 0,255,255, 0,255,255, 0,255,199,170,150, - 174,133,105,243,238,233,183,143,114,165,114, 76,179,135,101,255,255, - 255,255,255,255,193,151,116,197,155,120,215,185,160,249,245,241,180, - 140,112,199,171,151,255, 0,255,255, 0,255,146, 91, 52,242,235,230, - 177,135,105,157,103, 64,163,111, 73,178,132, 98,255,255,255,255,255, - 255,189,146,111,193,150,114,197,155,120,214,183,157,247,241,237,147, - 93, 54,255, 0,255,192,161,139,195,166,145,211,188,173,148, 92, 51, - 154,100, 60,161,108, 69,169,120, 82,200,168,143,204,173,148,183,137, - 101,187,143,107,191,147,112,193,150,115,231,215,201,207,181,161,193, - 161,139,162,115, 83,221,204,192,175,134,106,145, 88, 47,151, 96, 56, - 157,103, 64,167,118, 81,228,212,200,229,214,202,180,134, 98,182,135, - 99,185,139,103,186,142,106,209,178,155,230,215,204,165,118, 86,141, - 83, 43,245,240,237,148, 94, 56,142, 83, 42,148, 91, 51,153, 98, 58, - 159,105, 66,243,237,232,255,255,255,208,181,160,176,127, 90,178,131, - 94,180,133, 96,189,148,117,248,243,240,142, 84, 45,141, 83, 43,245, - 240,237,147, 92, 54,138, 79, 37,144, 86, 45,149, 93, 52,154, 99, 59, - 181,139,109,252,251,249,254,254,254,193,157,130,172,122, 84,173,124, - 86,183,141,108,247,243,239,142, 84, 44,162,115, 83,221,204,192,172, - 130,101,135, 74, 32,139, 80, 39,144, 86, 45,149, 92, 52,153, 98, 58, - 194,161,137,255,255,255,243,236,232,165,114, 75,166,115, 77,195,161, - 134,225,210,198,164,117, 85,192,161,139,195,165,144,208,185,169,135, - 74, 32,135, 74, 32,159,110, 75,160,111, 77,148, 91, 50,168,122, 89, - 255,255,255,253,252,251,161,109, 70,159,106, 67,218,198,183,198,170, - 149,192,161,139,255, 0,255,146, 92, 53,241,234,229,165,120, 88,135, - 74, 32,176,136,108,254,253,253,233,222,214,246,242,239,255,255,255, - 220,202,189,152, 96, 56,179,137,107,242,235,230,145, 91, 52,255, 0, - 255,255, 0,255,198,169,149,173,131,103,242,235,231,166,120, 89,156, - 105, 71,222,206,194,247,243,240,241,234,230,208,184,167,160,111, 77, - 173,130,100,243,237,232,171,128, 98,198,169,149,255, 0,255,255, 0, - 255,255, 0,255,163,116, 84,170,127, 97,240,232,227,208,185,169,172, - 130,101,150, 96, 59,150, 96, 59,172,130,101,209,186,170,240,233,228, - 170,128, 98,163,116, 84,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,198,169,149,145, 91, 52,193,162,141,219,201,189,244, - 239,235,244,239,235,219,201,189,193,163,141,145, 90, 51,199,170,150, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,192,161,139,162,115, 83,141, 83, 43,141, - 83, 43,162,115, 83,192,161,139,255, 0,255,255, 0,255,255, 0,255, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255, 12,164, 60, 17,171, 71, 13,173, 73,104,175, + 120,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 87,183,107, 78,224,155, 92,234,170, 92,234,171, 35,192,104, 87,167, + 106,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 32,183, 89, + 102,255,205,104,255,201, 85,255,195, 73,252,184, 24,199,107, 85,166, + 102,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,157,207,165, 22,223,131, 47,255,181, + 45,255,174, 30,255,170, 3,255,160, 17,250,157, 12,190, 93, 68,158, + 86,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255, 68,173, 91, 0,248,147, 1,254,156, 10,254,160, + 18,251,159, 38,250,165, 49,242,160, 70,234,157, 21,183, 87, 74,169, + 94,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255, 7,173, 65, 7,243,144, 45,243,160, 72,243,171,105,199,139, + 96,231,164,112,241,183,110,233,172,102,224,157, 28,169, 74, 57,157, + 75,255, 0,255,255, 0,255,255, 0,255,255, 0,255,148,199,148, 18, + 202,101, 79,235,162,102,241,178, 85,205,129,255, 0,255,172,211,180, + 89,192,126,129,232,178,130,225,170,129,215,157, 45,168, 78, 63,165, + 77,255, 0,255,255, 0,255,255, 0,255,127,196,134, 86,221,149,112, + 231,171,111,233,173,152,207,158,255, 0,255,255, 0,255,255, 0,255, + 101,183,121,151,227,181,150,221,173,157,217,170, 60,168, 84, 44,152, + 56,255, 0,255,255, 0,255,255, 0,255,138,190,142, 97,180,115, 81, + 180,107,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 109,181,120,173,225,187,170,219,179,181,219,181, 84,174,101, 42,147, + 51,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 121,181,123,195,228,198,191,223,191,206,230,203,110,184,122,115,185, + 121,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 126,181,126,218,237,218,228,242,228,169,210,169,173,204,172,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 115,168,114,139,187,139,195,215,194,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255); Const - stdimg_dialog_error_32 : Array[0..3125] of byte = ( + stdimg_folder_new_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, + 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, + 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, + 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, + 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, + 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, + 134,213,172,134,213,172,134,212,172,134,212,172,134,212,172,134,213, + 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, + 215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,213,175, + 138,210,177,142,207,178,144,206,178,145,207,178,144,212,176,140,224, + 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, + 217,179,143,217,179,143,217,179,143,213,180,145,196,186,158,180,192, + 170,164,199,184,163,199,184,170,197,179,188,190,165,212,205,184,133, + 78, 38,135, 74, 32,230,205,181,217,179,143,217,179,143,217,179,143, + 217,179,143,212,180,146,187,190,165,144,206,198, 9,212,234, 95,222, + 232, 95,223,233, 10,212,236,128,212,211,169,216,209,124,104, 74,135, + 74, 32,231,207,184,217,179,143,217,179,143,217,179,143,214,179,144, + 192,188,161,139,206,200, 7,212,235,234,251,252, 4,212,237, 4,212, + 237,234,251,253, 7,212,237,111,226,235,107,153,141,135, 74, 32,232, + 210,188,217,179,143,217,179,143,216,179,143,208,182,149,165,197,181, + 89,219,229, 4,212,237,252,254,254,230,250,252,230,250,252,231,250, + 252, 4,213,237, 78,228,246, 92,189,192,136, 76, 34,230,209,188,234, + 212,192,234,212,192,233,212,192,216,214,198,146,220,221, 63,222,240, + 2,212,237,231,251,253,230,250,253,230,250,253,230,249,252, 1,212, + 237, 57,225,245, 86,202,209,139, 77, 36,136, 76, 34,135, 74, 32,135, + 74, 32,134, 74, 32,127, 92, 57, 97,161,154, 3,211,236,230,250,252, + 230,250,253,230,250,253,230,250,253,230,250,253,230,250,252, 4,213, + 237, 84,197,202,135, 74, 32,204,164,133,188,136, 95,188,136, 94,187, + 136, 94,178,143,106,123,167,154, 3,210,234,231,250,252,230,250,253, + 230,250,253,230,250,253,230,250,253,230,250,252, 4,213,236, 93,177, + 176,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,200, + 163,127,178,196,180, 8,210,233, 1,211,236, 0,212,237,237,251,253, + 237,251,253, 0,212,237, 1,212,237, 6,210,233,146,193,189,225,210, + 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,203, + 194,176,108,139,122, 80,218,232, 33,218,241, 0,212,237, 0,212,237, + 25,218,241, 70,227,245,157,241,251,231,252,254,255,255,255,225,210, + 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,134, 75, 33,207, + 211,204,190,245,252,129,235,248, 95,229,246, 90,229,246,118,234,248, + 183,244,252,234,252,254,253,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_arrow_right : Array[0..137] of byte = ( + 66, 77,138, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 4, 0, 0, 0, 7, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 84, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, + 0, 0, 0, 0,255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, 0, + 0, 0,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, 0, + 0,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, + 0,255); + +Const + stdimg_folder_up_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, + 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, + 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, + 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, + 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, + 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, + 134,213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213, + 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, + 215,175,138,215,175,138,143, 85, 42,143, 85, 42,143, 85, 42,143, 85, + 42,143, 85, 42,143, 85, 42,215,175,138,215,175,138,215,175,138,226, + 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, + 217,179,143,143, 85, 42,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,217,179,143,217,179,143,228,202,177,135, + 74, 32,135, 74, 32,230,205,181,217,179,143,143, 85, 42,205,164,128, + 143, 85, 42,205,164,128,143, 85, 42,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,217,179,143,230,205,181,135, 74, 32,135, + 74, 32,231,207,184,217,179,143,182,133, 95,143, 85, 42,143, 85, 42, + 143, 85, 42,182,133, 95,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,231,207,184,135, 74, 32,135, 74, 32,232, + 210,188,217,179,143,217,179,143,205,164,128,143, 85, 42,205,164,128, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,232,210,188,135, 74, 32,136, 76, 34,230,209,188,234, + 212,192,234,212,192,234,212,192,234,212,192,234,212,192,226,197,169, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,234,212,192,135, 74, 32,139, 77, 36,136, 76, 34,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,140, 82, 42,218,190,167,227,200,173, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,235,215, + 196,135, 74, 32,135, 74, 32,204,164,133,188,136, 95,188,136, 94,188, + 136, 94,188,136, 94,175,120, 80,144, 86, 46,220,194,172,236,217,199, + 236,217,199,236,217,199,236,217,199,236,217,199,233,214,196,138, 79, + 37,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,205, + 161,124,218,186,158,190,150,120,135, 74, 32,135, 74, 32,135, 74, 32, + 135, 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,168,147,225,210, + 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,218, + 191,169,144, 89, 49,225,210,200,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,210, + 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,225, + 210,200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_ellipse : Array[0..181] of byte = ( + 66, 77,182, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 10, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 128, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0, + 229,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0,229, 0, + 0,255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0, 0, 0, + 0, 0,255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0,255, + 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0, 0, 0, 0, 0, + 255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0,255, 0,229, + 255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0, + 229,255, 0,229,255, 0,229,255, 0,229, 0, 0); + +Const + stdimg_dialog_warning_32 : Array[0..3125] of byte = ( 66, 77, 54, 12, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 12, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,254,254,254,249,249,249,242,242,242,233, - 233,233,225,225,225,219,219,219,213,213,213,208,208,208,204,204,204, - 208,208,208,211,211,211,216,216,216,222,222,222,229,229,229,239,239, - 239,247,247,247,252,252,252,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,245,245,245,231,231, - 231,219,219,219,208,208,208,198,198,198,187,187,187,178,178,178,169, - 169,169,162,162,162,156,156,156,153,153,153,154,154,154,157,157,157, - 162,162,162,170,170,170,179,179,179,189,189,189,199,199,199,209,209, - 209,222,222,222,239,239,239,252,252,252,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,245,245,245,233,233,233,220,220,220,208,208,208,195,195, - 195,183,183,183,159,159,170,102,102,164, 44, 44,169, 20, 20,172, 8, - 8,175, 2, 2,177, 7, 7,174, 19, 19,171, 40, 40,165, 96, 96,158, - 149,149,160,172,172,172,184,184,184,197,197,197,209,209,209,222,222, - 222,235,235,235,252,252,252,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254, - 242,242,242,231,231,231,219,219,219,179,179,204, 60, 60,185, 6, 6, - 179, 16, 18,187, 25, 33,199, 39, 52,207, 49, 65,211, 57, 76,215, 48, - 65,210, 38, 50,203, 24, 32,197, 16, 17,184, 6, 6,178, 59, 59,182, - 171,171,196,209,209,209,221,221,221,232,232,232,244,244,244,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,250,250,253, - 101,101,208, 10, 10,182, 21, 26,196, 61, 78,218, 54, 70,218, 36, 46, - 211, 25, 30,207, 18, 22,205, 15, 17,203, 18, 22,203, 25, 30,205, 35, - 45,208, 52, 69,213, 55, 75,215, 21, 26,194, 9, 9,181,104,104,206, - 245,245,248,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,235,235,249, 51, 51,195, 17, 18,191, 59, 74,219, - 51, 64,218, 19, 21,209, 10, 10,206, 10, 10,205, 10, 10,205, 10, 10, - 204, 10, 10,203, 9, 9,203, 9, 9,202, 9, 9,201, 9, 9,200, 19, - 22,203, 47, 62,212, 53, 71,213, 15, 17,187, 54, 54,196,236,236,249, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,239,239,250, 27, - 27,187, 22, 26,198, 66, 82,225, 26, 31,214, 11, 11,210, 11, 11,209, - 11, 11,208, 11, 11,208, 10, 10,207, 10, 10,206, 10, 10,205, 10, 10, - 205, 10, 10,204, 10, 10,204, 9, 9,203, 9, 9,202, 9, 9,202, 24, - 30,206, 59, 78,217, 20, 24,193, 30, 30,188,240,240,250,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,252,252,254, 57, 57,197, 24, 27,202, 64, 78,226, 20, - 22,215, 12, 12,213, 12, 12,212, 12, 12,211, 11, 11,211, 11, 11,210, - 11, 11,209, 11, 11,209, 11, 11,208, 11, 11,207, 10, 10,207, 10, 10, - 206, 10, 10,205, 10, 10,204, 10, 10,204, 10, 10,203, 17, 20,205, 56, - 74,217, 21, 25,194, 60, 60,197,252,252,254,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,120,120, - 216, 19, 20,194, 68, 82,229, 19, 21,218, 13, 13,216, 13, 13,215, 12, - 12,214, 12, 12,214, 12, 12,213, 12, 12,212, 12, 12,211, 11, 11,211, - 11, 11,210, 11, 11,210, 11, 11,209, 11, 11,208, 11, 11,208, 10, 10, - 207, 10, 10,206, 10, 10,205, 10, 10,205, 17, 19,206, 60, 78,219, 18, - 19,191,124,124,217,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,230,230,247, 17, 17,187, 63, 75,228, 28, 31, - 222, 13, 13,219, 13, 13,218, 13, 13,217, 13, 13,216, 13, 13,216, 13, - 13,215, 12, 12,215, 12, 12,214, 12, 12,213, 12, 12,213, 12, 12,212, - 12, 12,211, 11, 11,210, 11, 11,210, 11, 11,209, 11, 11,208, 11, 11, - 208, 11, 11,207, 10, 10,207, 23, 28,210, 53, 69,217, 17, 17,185,232, - 232,248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 91, 91,207, 28, 31,208, 53, 61,229, 14, 14,221, 14, 14,221, 14, 14, - 220, 14, 14,220, 14, 14,219, 13, 13,218, 13, 13,218, 13, 13,217, 13, - 13,216, 13, 13,215, 12, 12,215, 12, 12,214, 12, 12,214, 12, 12,213, - 12, 12,212, 12, 12,211, 11, 11,211, 11, 11,210, 11, 11,209, 11, 11, - 209, 11, 11,208, 47, 59,217, 23, 27,200, 94, 94,208,255,255,255,255, - 255,255,255,255,255,255,255,255,240,240,250, 10, 10,183, 70, 82,232, - 29, 30,227, 29, 29,226, 22, 22,224, 14, 14,223, 14, 14,222, 14, 14, - 221, 14, 14,220, 14, 14,220, 14, 14,219, 13, 13,219, 13, 13,218, 13, - 13,217, 13, 13,216, 13, 13,216, 13, 13,215, 12, 12,214, 12, 12,214, - 12, 12,213, 12, 12,213, 12, 12,212, 12, 12,211, 11, 11,210, 18, 21, - 212, 60, 77,222, 9, 10,182,242,242,251,255,255,255,255,255,255,255, - 255,255,166,166,228, 24, 25,197,104,111,238, 84, 84,235, 84, 84,234, - 84, 84,234, 72, 72,232, 51, 51,229, 25, 25,225, 15, 15,223, 14, 14, - 222, 14, 14,221, 14, 14,221, 14, 14,220, 14, 14,219, 13, 13,219, 13, - 13,218, 13, 13,218, 13, 13,217, 13, 13,216, 13, 13,215, 12, 12,215, - 12, 12,214, 12, 12,213, 12, 12,213, 12, 12,212, 58, 72,223, 20, 22, - 193,170,170,229,255,255,255,255,255,255,255,255,255, 78, 78,204, 55, - 58,217,103,107,240, 82, 82,236, 83, 83,236, 83, 83,236, 83, 83,235, - 82, 82,234, 81, 81,234, 58, 58,230, 26, 26,225, 15, 15,224, 15, 15, - 223, 14, 14,223, 14, 14,222, 14, 14,221, 14, 14,220, 14, 14,220, 14, - 14,219, 13, 13,218, 13, 13,218, 13, 13,217, 13, 13,216, 13, 13,216, - 13, 13,215, 12, 12,214, 40, 48,221, 28, 34,205, 82, 82,203,255,255, - 255,255,255,255,255,255,255, 38, 38,193, 88, 94,229, 93, 95,240, 80, - 80,237, 80, 80,237, 80, 80,237,243,243,243,243,243,243,243,243,243, - 243,243,243,243,243,243,241,241,241,239,239,239,239,239,239,239,239, - 239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239, - 239,239,239,239,239,239,239,239, 13, 13,218, 13, 13,217, 23, 23,218, - 51, 56,223, 46, 55,215, 40, 40,192,255,255,255,255,255,255,255,255, - 255, 16, 16,185,109,115,238, 87, 87,240, 79, 79,239, 79, 79,239, 79, - 79,238,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243, - 243,243,243,243,243,243,240,240,240,239,239,239,239,239,239,239,239, - 239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239, - 239,239, 23, 23,221, 57, 57,226, 79, 79,229, 87, 89,229, 76, 87,225, - 19, 19,185,255,255,255,255,255,255,255,255,255, 3, 3,180,120,126, - 244, 81, 82,242, 77, 77,241, 77, 77,240, 77, 77,240,243,243,243,243, - 243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243, - 243,243,243,241,241,241,239,239,239,239,239,239,239,239,239,239,239, - 239,239,239,239,239,239,239,239,239,239,241,241,241, 74, 74,231, 76, - 76,231, 76, 76,230, 82, 84,230, 97,110,233, 5, 5,180,255,255,255, - 255,255,255,255,255,255, 16, 16,185,103,108,239, 84, 85,244, 75, 75, - 243, 75, 75,242, 75, 75,241,243,243,243,243,243,243,243,243,243,243, - 243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243, - 242,242,242,240,240,240,240,240,240,239,239,239,240,240,240,242,242, - 242,243,243,243,243,243,243, 75, 75,233, 75, 75,232, 75, 75,232, 83, - 85,233, 85, 95,228, 19, 19,186,255,255,255,255,255,255,255,255,255, - 37, 37,193, 82, 86,233, 87, 89,245, 73, 73,244, 73, 73,243, 74, 74, - 243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243, - 243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243, - 243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243, - 243, 73, 73,234, 72, 72,233, 73, 73,233, 87, 90,235, 69, 76,223, 40, - 40,193,255,255,255,255,255,255,255,255,255, 77, 77,205, 53, 56,223, - 97, 99,247, 72, 72,246, 71, 71,245, 71, 71,245, 71, 71,244, 71, 71, - 243, 72, 72,243, 72, 72,243, 71, 71,242, 71, 71,241, 71, 71,241, 71, - 71,240, 72, 72,240, 72, 72,240, 71, 71,239, 71, 71,239, 71, 71,238, - 71, 71,237, 71, 71,236, 71, 71,237, 71, 71,236, 71, 71,236, 71, 71, - 235, 71, 71,234, 94, 99,237, 44, 49,214, 81, 81,204,255,255,255,255, - 255,255,255,255,255,165,165,228, 29, 30,203,113,118,250, 71, 71,247, - 71, 71,247, 71, 71,246, 71, 71,246, 70, 70,245, 70, 70,245, 70, 70, - 244, 70, 70,244, 70, 70,243, 70, 70,242, 69, 69,242, 69, 69,242, 69, - 69,241, 69, 69,240, 70, 70,240, 70, 70,239, 69, 69,239, 69, 69,239, - 69, 69,238, 69, 69,237, 69, 69,237, 70, 70,236, 69, 69,236,108,116, - 241, 25, 26,198,170,170,229,255,255,255,255,255,255,255,255,255,240, - 240,250, 10, 10,184,116,121,249, 77, 78,249, 71, 71,249, 71, 71,248, - 71, 71,248, 71, 71,247, 71, 71,246, 71, 71,246, 71, 71,246, 70, 70, - 245, 70, 70,244, 70, 70,244, 70, 70,243, 70, 70,243, 70, 70,242, 69, - 69,242, 69, 69,241, 69, 69,241, 69, 69,240, 69, 69,239, 68, 68,239, - 68, 68,239, 68, 68,239, 74, 75,239,106,115,240, 11, 11,183,241,241, - 251,255,255,255,255,255,255,255,255,255,255,255,255, 89, 89,208, 45, - 46,223,106,109,252, 71, 71,250, 71, 71,250, 71, 71,250, 71, 71,249, - 71, 71,248, 71, 71,248, 71, 71,247, 71, 71,247, 71, 71,246, 71, 71, - 246, 70, 70,245, 70, 70,245, 70, 70,244, 70, 70,243, 70, 70,243, 70, - 70,242, 69, 69,242, 69, 69,242, 69, 69,241, 69, 69,240, 69, 69,240, - 100,107,242, 43, 45,215, 93, 93,209,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,230,230,247, 17, 17,189,111,115,250, 85, - 86,252, 72, 72,252, 71, 71,251, 71, 71,251, 71, 71,250, 71, 71,250, - 71, 71,249, 71, 71,249, 71, 71,248, 71, 71,247, 71, 71,247, 71, 71, - 246, 71, 71,246, 71, 71,246, 70, 70,245, 70, 70,244, 70, 70,244, 70, - 70,243, 70, 70,242, 69, 69,242, 81, 83,242,104,111,241, 18, 18,188, - 232,232,248,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,120,120,217, 27, 28,206,122,126,254, 79, 79,253, 72, - 72,253, 72, 72,253, 72, 72,252, 71, 71,251, 71, 71,251, 71, 71,250, - 71, 71,250, 71, 71,250, 71, 71,249, 71, 71,248, 71, 71,248, 71, 71, - 247, 71, 71,246, 71, 71,246, 71, 71,246, 70, 70,245, 70, 70,245, 75, - 76,245,117,124,247, 28, 29,202,123,123,217,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,252, - 254, 55, 55,198, 44, 44,218,121,124,254, 79, 80,254, 72, 72,254, 72, - 72,253, 72, 72,253, 72, 72,253, 72, 72,252, 72, 72,252, 71, 71,251, - 71, 71,250, 71, 71,250, 71, 71,250, 71, 71,249, 71, 71,249, 71, 71, - 248, 71, 71,247, 71, 71,247, 78, 79,247,115,122,248, 43, 45,214, 59, - 59,199,252,252,254,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,238,238,250, 28, 28, - 189, 45, 45,216,125,127,254, 86, 88,254, 72, 72,254, 72, 72,254, 72, - 72,254, 72, 72,254, 72, 72,253, 72, 72,253, 72, 72,253, 72, 72,252, - 71, 71,251, 71, 71,251, 71, 71,250, 71, 71,250, 71, 71,250, 86, 87, - 250,120,126,250, 43, 45,213, 29, 29,189,240,240,250,255,255,255,255, + 255,255,255,255,255,255,252,252,252,244,244,244,237,237,237,235,235, + 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, + 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, + 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, + 235,235,235,235,237,237,237,242,242,242,248,248,248,254,254,254,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,239,239,239, + 222,222,222,198,198,207,190,190,201,186,186,197,186,186,197,186,186, + 197,186,186,197,186,186,197,186,186,197,186,186,197,186,186,197,186, + 186,197,186,186,197,186,186,197,186,186,197,186,186,197,186,186,197, + 186,186,197,186,186,197,186,186,197,186,186,197,186,186,197,190,190, + 201,189,189,200,197,197,206,223,223,223,246,246,246,255,255,255,255, + 255,255,255,255,255,244,244,244,178,178,210, 22, 22,165, 0, 0,159, + 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0, + 159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, + 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, + 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0, + 159, 21, 21,165,173,173,209,250,250,250,255,255,255,255,255,255,243, + 243,243, 39, 39,171, 61, 61,196,112,112,224,117,117,226,116,116,226, + 113,113,225,111,111,225,108,108,224,105,105,223,102,102,223,100,100, + 222, 97, 97,222, 94, 94,221, 92, 92,220, 89, 89,220, 86, 86,219, 83, + 83,219, 81, 81,218, 78, 78,218, 75, 75,217, 72, 72,216, 69, 69,216, + 67, 67,215, 64, 64,215, 62, 62,214, 54, 54,212, 28, 28,188, 20, 20, + 166,246,246,246,255,255,255,255,255,255,253,253,253, 15, 15,166,121, + 121,221, 20, 20,208, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, + 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0, + 204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, + 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, + 0, 0,204, 10, 10,206, 56, 56,207, 2, 2,160,247,247,251,255,255, + 255,255,255,255,255,255,255, 90, 90,194, 89, 89,200, 58, 58,216, 0, + 0,204,163,163,219,210,210,224,210,210,224,211,211,225,212,212,226, + 212,212,226,213,213,227,214,214,228,215,215,229,216,216,230,216,216, + 230,217,217,231,217,217,231,218,218,232,218,218,232,219,219,233,220, + 220,234,221,221,235,222,222,236,193,193,231, 0, 0,204, 27, 27,209, + 44, 44,192, 53, 53,181,255,255,255,255,255,255,255,255,255,255,255, + 255,221,221,242, 25, 25,168,117,117,221, 8, 8,206, 80, 80,211,224, + 224,224,225,225,225,225,225,225,226,226,226,227,227,227,227,227,227, + 228,228,228,229,229,229,230,230,230,230,230,230,231,231,231,232,232, + 232,233,233,233,234,234,234,234,234,234,235,235,235,236,236,236,237, + 237,237,105,105,219, 3, 3,205, 59, 59,211, 14, 14,166,193,193,232, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,109,109, + 201, 85, 85,197, 68, 68,218, 2, 2,204,179,179,219,224,224,224,225, + 225,225,225,225,225,226,226,226,227,227,227,227,227,227,228,228,228, + 60, 60, 60, 55, 55, 55,230,230,230,231,231,231,232,232,232,233,233, + 233,234,234,234,234,234,234,235,235,235,205,205,231, 7, 7,205, 36, + 36,211, 47, 47,188, 70, 70,186,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,234,234,247, 23, 23,169,121,121, + 220, 14, 14,207, 59, 59,209,223,223,223,224,224,224,224,224,224,225, + 225,225,226,226,226,226,226,226,227,227,227, 55, 55, 55, 53, 53, 53, + 230,230,230,230,230,230,231,231,231,232,232,232,233,233,233,234,234, + 234,234,234,234, 82, 82,215, 8, 8,206, 67, 67,210, 10, 10,163,212, + 212,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,129,129,208, 74, 74,190, 81, 81,220, 0, 0, + 204,162,162,218,223,223,223,224,224,224,224,224,224,225,225,225,226, + 226,226,226,226,226,215,215,215,215,215,215,229,229,229,230,230,230, + 230,230,230,231,231,231,232,232,232,233,233,233,186,186,227, 1, 1, + 204, 47, 47,213, 46, 46,185, 96, 96,196,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,234,234,249, 50, 50,196, 30, 30, - 204,115,117,248,111,114,254, 80, 81,254, 72, 72,254, 72, 72,254, 72, - 72,254, 72, 72,254, 72, 72,254, 72, 72,253, 72, 72,253, 72, 72,253, - 72, 72,252, 81, 82,252,109,113,252,111,116,246, 28, 29,201, 52, 52, - 196,235,235,249,255,255,255,255,255,255,255,255,255,255,255,255,255, + 244,244,251, 25, 25,169,121,121,218, 23, 23,209, 42, 42,208,221,221, + 223,223,223,223,224,224,224,224,224,224,225,225,225,226,226,226, 37, + 37, 37, 37, 37, 37,228,228,228,229,229,229,229,229,229,230,230,230, + 231,231,231,232,232,232, 59, 59,211, 14, 14,207, 73, 73,209, 11, 11, + 164,228,228,245,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,151,151,216, + 63, 63,185, 94, 94,222, 0, 0,204,141,141,215,223,223,223,223,223, + 223,224,224,224,224,224,224,225,225,225, 27, 27, 27, 27, 27, 27,227, + 227,227,228,228,228,229,229,229,229,229,229,230,230,230,164,164,223, + 0, 0,204, 60, 60,215, 41, 41,179,120,120,205,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,249,249,253,105,105,212, 10, 10,184, 53, 54, - 218,122,124,251,117,120,254, 99,100,254, 88, 89,254, 82, 82,254, 77, - 78,254, 82, 82,254, 87, 89,254, 98,100,254,115,119,254,119,123,251, - 50, 51,216, 12, 12,185,105,105,212,250,250,253,255,255,255,255,255, + 255,255,255,255,255,255,255,255,251,251,253, 35, 35,174,116,116,215, + 34, 34,211, 27, 27,206,215,215,221,223,223,223,223,223,223,224,224, + 224,224,224,224, 13, 13, 13, 13, 13, 13,226,226,226,227,227,227,228, + 228,228,229,229,229,226,226,228, 40, 40,209, 24, 24,209, 75, 75,206, + 16, 16,167,241,241,250,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,172,172,224, 49, 49,178,106,106,223, 1, 1,204, + 121,121,213,222,222,222,222,222,222,223,223,223,224,224,224, 3, 3, + 3, 3, 3, 3,225,225,225,226,226,226,227,227,227,228,228,228,140, + 140,218, 1, 1,204, 75, 75,218, 34, 34,174,144,144,213,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,218,218,244, 74, 74,203, 11, 11,183, 35, 35, - 204, 68, 69,227, 92, 94,239,110,111,246,123,126,252,109,111,246, 91, - 93,238, 67, 68,227, 34, 34,204, 9, 9,183, 77, 77,204,219,219,244, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254, + 254,255, 49, 49,179,109,109,211, 47, 47,213, 16, 16,206,206,206,220, + 222,222,222,222,222,222,215,215,215, 0, 0, 0, 0, 0, 0,217,217, + 217,225,225,225,226,226,226,218,218,226, 25, 25,207, 36, 36,211, 74, + 74,203, 27, 27,171,249,249,253,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,193,193,232, 36, + 36,173,117,117,224, 4, 4,205,102,102,212,221,221,221,222,222,222, + 204,204,204, 0, 0, 0, 0, 0, 0,206,206,206,225,225,225,225,225, + 225,118,118,216, 4, 4,205, 87, 87,219, 27, 27,170,167,167,222,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,237,237,250,162,162,227, 75, 75,204, 38, 38, - 193, 17, 17,186, 4, 4,180, 17, 17,186, 38, 38,194, 77, 77,205,164, - 164,228,238,238,250,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255, 69, 69,186,100,100,205, 59, + 59,216, 7, 7,205,195,195,219,221,221,221,193,193,193, 0, 0, 0, + 0, 0, 0,195,195,195,224,224,224,206,206,223, 12, 12,205, 49, 49, + 214, 70, 70,199, 45, 45,178,254,254,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,211,211,238, 25, 25,170,124,124,224, 8, 8,206, 82, + 82,210,221,221,221,218,218,218,207,207,207,207,207,207,220,220,220, + 223,223,223, 97, 97,213, 9, 9,206, 98, 98,219, 17, 17,166,189,189, + 230,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255, 92, 92,194, 89, 89,199, 72, 72,218, 2, 2,204,180,180,217,221, + 221,221,221,221,221,222,222,222,222,222,222,192,192,220, 4, 4,204, + 64, 64,217, 65, 65,194, 68, 68,186,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255); - -Const - stdimg_menu_save_all_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,226,226,244, 20, 20, + 168,128,128,224, 15, 15,207, 63, 63,209,220,220,220,221,221,221,221, + 221,221,222,222,222, 74, 74,210, 17, 17,207,104,104,219, 11, 11,163, + 210,210,238,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,202,138, - 97,195,132, 88,211,139,104,225,143,112,220,141,108,218,139,109,215, - 138,110,205,139,108,171,109, 68,166, 95, 46,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,198,131, 85,239,206, - 186,221,255,255,135,238,199,162,244,215,162,246,215,140,238,199,224, - 255,255,221,162,133,171,106, 62,255,255,255,255,255,255,255,255,255, - 255,255,255,208,153,117,203,148,110,195,127, 81,239,182,154,234,243, - 232, 81,191,132,111,201,152,113,201,153, 84,191,132,228,244,233,221, - 156,123,170,105, 58,255,255,255,255,255,255,255,255,255,255,255,255, - 205,147,107,241,212,195,196,129, 84,234,182,151,243,243,234,237,241, - 230,239,241,230,239,240,230,237,241,229,243,245,237,213,156,121,176, - 112, 68,255,255,255,255,255,255,213,163,131,208,158,123,199,131, 88, - 238,180,153,201,139, 97,230,181,146,226,167,129,225,167,129,222,163, - 125,220,161,123,219,159,121,217,158,119,212,154,115,187,126, 87,255, - 255,255,255,255,255,210,157,121,242,216,201,201,145,106,225,190,159, - 202,141,101,234,184,153,221,165,126,221,166,128,219,163,124,217,160, - 122,217,160,121,216,159,120,216,158,120,191,132, 93,255,255,255,255, - 255,255,208,154,118,242,197,175,205,153,115,215,184,148,200,136, 93, - 239,191,161,253,252,250,254,252,251,254,253,253,254,253,252,253,251, - 250,253,252,251,221,168,133,193,127, 83,255,255,255,255,255,255,208, - 156,120,238,197,173,207,155,119,235,192,164,199,134, 91,239,192,158, - 255,255,255,204,147,110,255,255,255,255,255,255,255,251,247,255,248, - 241,228,175,140,199,138, 97,255,255,255,255,255,255,212,164,130,235, - 197,169,204,142,101,238,190,161,204,141,101,243,205,176,255,255,255, - 227,199,179,255,255,255,255,255,255,255,255,255,255,255,255,234,191, - 161,201,137, 96,255,255,255,255,255,255,213,165,134,238,199,175,202, - 140, 99,237,191,158,212,151,110,212,158,123,208,152,113,214,164,130, - 205,142,104,205,144,105,208,154,117,209,153,115,200,139, 98,238,220, - 208,255,255,255,255,255,255,212,161,127,242,205,181,210,156,121,244, - 211,186,255,255,255,231,206,189,255,255,254,255,255,255,251,246,242, - 248,241,237,237,199,173,208,152,117,255,255,255,255,255,255,255,255, - 255,255,255,255,211,160,126,242,205,179,218,165,129,212,160,126,214, - 166,131,219,176,146,211,157,123,211,158,123,211,159,123,209,154,117, - 207,154,118,240,225,214,255,255,255,255,255,255,255,255,255,255,255, - 255,215,165,134,246,216,193,255,255,255,233,211,195,255,255,255,255, - 255,255,255,255,255,255,255,255,238,205,181,212,162,130,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,221,173, - 141,221,179,151,218,174,143,223,183,156,216,166,136,216,168,137,218, - 175,146,219,175,145,212,164,131,241,227,217,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,114,114,202, 79, 79,193, 85, 85, + 220, 0, 0,204,162,162,215,220,220,220,220,220,220,173,173,217, 1, + 1,204, 80, 80,220, 59, 59,189, 92, 92,194,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); - -Const - stdimg_btn_ok_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,238,238,249, 20, 20,167,128,128,222, 25, 25,209, 44, 44, + 207,218,218,219,220,220,220, 53, 53,208, 28, 28,210,106,106,217, 10, + 10,164,226,226,244,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 137,137,211, 67, 67,187, 99, 99,223, 0, 0,204,143,143,214,152,152, + 214, 1, 1,204, 97, 97,223, 51, 51,184,118,118,204,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255, 55,131, 61, 52,125, - 58,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255, 64,142, 71, 84,163, 92, 79,159, 87, 51,125, - 57,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,246,246,252, 25, 25,169, + 122,122,218, 36, 36,211, 21, 21,206, 23, 23,205, 42, 42,212,104,104, + 215, 14, 14,165,239,239,249,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 73,154, 81, 91,172,100,119,202,130,116,200,126, 81,160, 89, 52,126, - 58,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 81,166, 90, 99,181,109, - 126,206,137,123,204,135,118,202,129,118,201,129, 82,162, 90, 53,127, - 59,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255, 89,176, 99,107,189,118,132,210,144,122,201,133, - 96,178,106, 99,180,109,120,201,131,120,203,130, 83,163, 92, 54,128, - 60,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,108,189,118,121,201,134,128,206,141, 83,167, 92,255,255,255, - 255,255,255, 92,173,103,124,204,134,121,203,133, 84,164, 93, 55,129, - 61,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,108,189,117,109,192,121,255,255,255,255,255,255,255,255,255, - 255,255,255, 94,174,104,125,205,137,124,205,135, 86,165, 95, 56,130, - 62,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 95,175,105,127,206,138,126,206,137, 87,166, 96, 57,131, - 63,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 96,176,106,129,207,141,127,207,139, 88,167, 97, 57,133, - 64,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,158,158,218, 53, 53,181,113,113,225, + 1, 1,204, 3, 3,205,113,113,225, 41, 41,177,142,142,212,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 98,178,108,130,209,143,122,200,133, 87,166, 96,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 99,179,109, 95,175,105,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,252,252,254, 37, 37,174,111,111,213, 66, 66,217, 70, 70,218, + 96, 96,210, 25, 25,170,248,248,252,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,180, + 180,227, 22, 22,168,109,109,218,106,106,218, 20, 20,169,165,165,221, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); - -Const - stdimg_folder_new_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,140,140,211, 12, + 12,165, 8, 8,163,124,124,206,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, - 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, - 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, - 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, - 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, - 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, - 134,213,172,134,213,172,134,212,172,134,212,172,134,212,172,134,213, - 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, - 215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,213,175, - 138,210,177,142,207,178,144,206,178,145,207,178,144,212,176,140,224, - 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, - 217,179,143,217,179,143,217,179,143,213,180,145,196,186,158,180,192, - 170,164,199,184,163,199,184,170,197,179,188,190,165,212,205,184,133, - 78, 38,135, 74, 32,230,205,181,217,179,143,217,179,143,217,179,143, - 217,179,143,212,180,146,187,190,165,144,206,198, 9,212,234, 95,222, - 232, 95,223,233, 10,212,236,128,212,211,169,216,209,124,104, 74,135, - 74, 32,231,207,184,217,179,143,217,179,143,217,179,143,214,179,144, - 192,188,161,139,206,200, 7,212,235,234,251,252, 4,212,237, 4,212, - 237,234,251,253, 7,212,237,111,226,235,107,153,141,135, 74, 32,232, - 210,188,217,179,143,217,179,143,216,179,143,208,182,149,165,197,181, - 89,219,229, 4,212,237,252,254,254,230,250,252,230,250,252,231,250, - 252, 4,213,237, 78,228,246, 92,189,192,136, 76, 34,230,209,188,234, - 212,192,234,212,192,233,212,192,216,214,198,146,220,221, 63,222,240, - 2,212,237,231,251,253,230,250,253,230,250,253,230,249,252, 1,212, - 237, 57,225,245, 86,202,209,139, 77, 36,136, 76, 34,135, 74, 32,135, - 74, 32,134, 74, 32,127, 92, 57, 97,161,154, 3,211,236,230,250,252, - 230,250,253,230,250,253,230,250,253,230,250,253,230,250,252, 4,213, - 237, 84,197,202,135, 74, 32,204,164,133,188,136, 95,188,136, 94,187, - 136, 94,178,143,106,123,167,154, 3,210,234,231,250,252,230,250,253, - 230,250,253,230,250,253,230,250,253,230,250,252, 4,213,236, 93,177, - 176,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,200, - 163,127,178,196,180, 8,210,233, 1,211,236, 0,212,237,237,251,253, - 237,251,253, 0,212,237, 1,212,237, 6,210,233,146,193,189,225,210, - 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,203, - 194,176,108,139,122, 80,218,232, 33,218,241, 0,212,237, 0,212,237, - 25,218,241, 70,227,245,157,241,251,231,252,254,255,255,255,225,210, - 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,134, 75, 33,207, - 211,204,190,245,252,129,235,248, 95,229,246, 90,229,246,118,234,248, - 183,244,252,234,252,254,253,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); + 255,255,255,255,255,255,255,255,255,255,252,252,254,251,251,253,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255); Const - stdimg_edit_paste_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,155,181,197, 18, 80,118, 1, 68,108, 1, 68, - 108, 1, 68,108, 1, 68,108, 1, 68,108, 1, 68,108, 1, 68,108, 1, - 68,108, 1, 68,108, 1, 68,108, 19, 80,117,162,186,201,255, 0,255, - 255, 0,255, 13, 76,115, 35,127,186, 59,125,167,100,111,115,104,108, - 106,104,108,106,104,108,106,104,108,106,104,108,106, 61,124,163, 61, - 124,163, 61,124,163, 34,123,179, 16, 78,116,255, 0,255,255, 0,255, - 9, 74,114, 38,135,197, 99,109,112,237,238,237,254,254,254,254,254, - 254,254,254,254,238,239,239,253,254,254,100,105,103, 39,135,197, 39, - 135,197, 39,135,197, 3, 68,108,255, 0,255,255, 0,255, 9, 74,114, - 38,135,197,100,104,102,255,255,255,228,231,231,213,216,216,190,194, - 193,180,183,183,255,255,255,255,255,255,100,105,103, 39,135,197, 40, - 134,194, 3, 68,108,255, 0,255,255, 0,255, 9, 74,114, 38,135,197, - 100,104,102,255,255,255,231,233,233,229,231,231,214,217,217,182,185, - 185,255,255,255,255,255,255,255,255,255,100,105,103, 40,134,194, 3, - 68,108,255, 0,255,255, 0,255, 9, 75,114, 38,135,197,100,104,102, - 255,255,255,234,236,236,232,234,234,230,232,232,203,206,205,182,186, - 185,181,185,184,255,255,255,100,105,103, 40,134,194, 3, 68,108,255, - 0,255,255, 0,255, 9, 75,114, 38,135,197,100,104,102,255,255,255, - 237,238,238,235,236,236,233,235,235,231,233,233,216,218,218,202,205, - 204,255,255,255,100,105,103, 40,134,194, 3, 68,108,255, 0,255,255, - 0,255, 9, 75,114, 38,135,197,100,104,102,255,255,255,239,240,240, - 238,239,239,236,237,237,234,235,235,232,234,234,217,219,219,255,255, - 255,100,105,103, 40,134,194, 3, 68,108,255, 0,255,255, 0,255, 9, - 75,114, 38,135,197,100,104,102,255,255,255,239,240,240,181,181,179, - 181,181,179,180,180,178,178,178,177,232,234,234,255,255,255,100,105, - 103, 40,134,194, 3, 68,108,255, 0,255,255, 0,255, 9, 75,115, 38, - 135,197,100,104,102,255,255,255,239,240,240,239,240,240,239,240,240, - 239,240,240,237,239,239,235,237,237,255,255,255,100,105,103, 40,134, - 194, 3, 68,108,255, 0,255,255, 0,255, 9, 75,115, 38,135,197,100, - 104,102,255,255,255,239,240,240,181,181,179,181,181,179,181,181,179, - 181,181,179,238,239,239,255,255,255,100,105,103, 40,134,194, 3, 68, - 108,255, 0,255,255, 0,255, 9, 75,115, 39,136,198,100,104,102,255, - 255,255,239,240,240,239,240,240,239,240,240,239,240,240,239,240,240, - 239,240,240,255,255,255,100,105,103, 40,134,194, 3, 68,108,255, 0, - 255,255, 0,255, 9, 75,115, 39,136,198,100,111,113,241,241,241,224, - 224,224,187,187,187,187,187,187,187,187,187,187,187,187,224,224,224, - 242,242,242,100,109,110, 39,135,197, 3, 68,108,255, 0,255,255, 0, - 255, 13, 77,116, 36,132,192, 62,126,164,100,109,112, 94, 94, 94,124, - 127,127,125,128,128,125,128,128,123,126,126, 94, 94, 94,100,108,110, - 64,124,161, 35,127,185, 16, 78,117,255, 0,255,255, 0,255,155,182, - 197, 18, 80,119, 1, 68,108, 3, 68,107, 91, 92, 92,137,149,149,138, - 151,151,138,151,151,137,149,149, 91, 92, 92, 3, 68,107, 1, 68,108, - 19, 81,118,162,186,201,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,137,138,138, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92,137,138,138,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); + stdimg_arrow_down : Array[0..149] of byte = ( + 66, 77,150, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 7, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 96, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, + 255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255, 0, 0, 0, + 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); Const stdimg_dialog_confirmation_32 : Array[0..3125] of byte = ( @@ -739,7 +776,73 @@ Const 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255); Const - stdimg_list_remove_16 : Array[0..821] of byte = ( + stdimg_document : Array[0..1061] of byte = ( + 66, 77, 38, 4, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 240, 3, 0, 0,235, 10, 0, 0,235, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 98, 98, + 98, 91, 91, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 97, 97, 97, + 255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, + 88, 88, 88, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, + 0,255,255, 0,255, 88, 88, 88,182,193,198,182,193,198,172,189,196, + 163,184,195,154,179,194,145,175,192,136,170,191,127,165,190,118,160, + 189,115,158,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, + 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,225, + 237,244,216,232,242,208,228,240,200,222,238,191,218,236,184,214,233, + 176,209,231,167,204,229,120,161,188, 48, 48, 48, 90, 90, 90,255, 0, + 255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, + 88,222,222,222,233,241,247,137,144,148,132,141,147,127,139,146,122, + 136,145,117,133,143,112,130,142,176,209,231,127,163,188, 48, 48, 48, + 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255, + 255, 0,255, 88, 88, 88,222,222,222,242,246,250,234,242,248,226,238, + 245,218,233,242,210,228,240,201,224,238,193,220,236,186,214,233,133, + 166,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, + 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,251,252,252, + 148,151,152,143,148,151,138,145,149,133,142,148,128,139,146,123,136, + 145,194,219,236,138,168,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, + 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222, + 222,222,255,255,255,252,253,253,244,248,250,235,243,248,228,238,245, + 220,234,243,212,230,241,202,223,236,144,171,188, 48, 48, 48, 90, 90, + 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0, + 255, 88, 88, 88,222,222,222,255,255,255,155,155,155,154,154,154,148, + 151,152,143,148,151,139,145,149,134,143,148,212,226,236,151,174,188, + 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255, + 255, 0,255,255, 0,255, 88, 88, 88,223,223,223,255,255,255,255,255, + 255,255,255,255,254,254,254,245,248,251,237,244,248,227,237,243,220, + 231,238,151,174,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, + 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222, + 255,255,255,155,155,155,155,155,155,155,155,155,155,155,155,246,249, + 251,236,240,244,217,224,231,175,182,190, 48, 48, 48, 90, 90, 90,255, + 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, + 88, 88,222,222,222,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,245,245,246,222,224,226,177,183,188,132,137,143, 48, 48, + 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0, + 255,255, 0,255, 88, 88, 88,222,222,222,255,255,255,155,155,155,155, + 155,155,155,155,155,255,255,255,137,137,137,112,112,112,107,107,107, + 66, 66, 66, 48, 48, 48, 96, 96, 96,255, 0,255,255, 0,255, 0, 0, + 255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,255,255, + 255,255,255,255,255,255,255,255,255,255,252,252,252,112,112,112,206, + 206,206,255,255,255,153,153,153, 48, 48, 48,135,135,135,255, 0,255, + 255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88, + 222,222,222,255,255,255,255,255,255,255,255,255,255,255,255,234,234, + 234,109,109,109,255,255,255,153,153,153, 88, 88, 88,135,135,135,255, + 0,255,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, + 0,255, 88, 88, 88,222,222,222,222,222,222,222,222,222,222,222,222, + 222,222,222,177,183,188, 88, 88, 88,153,153,153, 88, 88, 88,135,135, + 135,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0,255, 0, + 255,255, 0,255,255, 0,255, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255, 0, 0); + +Const + stdimg_folder_open_file_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, @@ -749,969 +852,903 @@ Const 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 165,129,103,139, 82, 41,139, 82, 41,157,108, 74,157,108, 74,157,108, + 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157, + 108, 74,139, 82, 41,145,110, 84,255,255,255,255,255,255,139, 82, 41, + 209,165,123,210,165,124,210,165,124,210,165,124,210,165,124,210,165, + 124,210,165,124,210,165,124,210,165,124,210,165,124,210,165,124,209, + 165,123,139, 82, 41,255,255,255,255,255,255,157,104, 63,208,161,116, + 207,159,114,207,159,114,207,159,114,207,159,114,207,159,114,207,159, + 114,207,159,114,207,159,114,207,159,114,207,159,114,208,161,116,139, + 82, 41,255,255,255,139, 82, 41,196,151,112,208,162,119,207,160,117, + 207,160,117,207,160,117,207,160,117,207,160,117,207,160,117,207,160, + 117,207,160,117,207,160,117,207,160,117,208,162,119,196,151,112,139, + 82, 41,139, 82, 41,206,164,127,210,165,123,209,164,122,209,164,122, + 209,164,122,209,164,122,209,164,122,209,164,122,209,164,122,209,164, + 122,209,164,122,209,164,122,210,166,124,212,169,129,139, 82, 41,139, + 82, 41,215,180,148,220,186,153,220,186,153,220,186,153,220,185,152, + 216,179,143,212,169,130,211,168,127,211,168,127,211,168,127,211,168, + 127,211,168,127,212,168,128,209,169,133,139, 82, 41,139, 82, 41,139, + 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41, + 210,173,142,218,180,145,217,179,145,217,179,145,217,179,145,217,179, + 145,217,180,145,217,183,152,139, 82, 41,255,255,255,139, 82, 41,127, + 120,111,253,253,253,248,249,249,243,241,240,205,137, 89,139, 82, 41, + 139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, + 41,139, 82, 41,139, 82, 41,255,255,255,139, 82, 41,142,136,127,242, + 242,242,241,242,241,241,241,241,205,137, 89,255,247,240,253,231,214, + 253,230,212,252,228,208,251,227,203,254,243,232,205,136, 88,139, 82, + 41,255,255,255,255,255,255,139, 82, 41,177,154,132,151,138,124,150, + 137,123,148,136,121,205,137, 89,255,247,242, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92,253,242,231,205,137, 89,139, 82, 41,255,255, + 255,255,255,255,139, 82, 41,218,183,153,212,172,137,212,172,137,213, + 174,140,205,136, 88,254,247,241,252,228,209,251,226,204,249,221,196, + 247,218,192,252,242,233,205,137, 89,139, 82, 41,255,255,255,255,255, + 255,157,103, 62,197,159,132,213,181,155,213,181,155,211,179,152,204, + 135, 87,255,247,241, 93, 93, 93, 92, 92, 92, 92, 92, 92,254,249,243, + 255,247,240,205,137, 89,255,255,255,255,255,255,255,255,255,255,255, + 255,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,205,137, 89,255, + 247,240,255,247,240,255,247,240,255,247,240,255,247,240,255,247,240, + 205,137, 89,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,205,137, 89,205,137, 89,205, + 137, 89,205,137, 89,205,137, 89,205,137, 89,205,137, 89,205,137, 89, + 255,255,255,255,255,255); + +Const + stdimg_arrow_left : Array[0..137] of byte = ( + 66, 77,138, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 4, 0, 0, 0, 7, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 84, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, + 255,255, 0,255, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, + 255, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, + 0, 0); + +Const + stdimg_dialog_error_32 : Array[0..3125] of byte = ( + 66, 77, 54, 12, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 12, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,254,254,254,249,249,249,242,242,242,233, + 233,233,225,225,225,219,219,219,213,213,213,208,208,208,204,204,204, + 208,208,208,211,211,211,216,216,216,222,222,222,229,229,229,239,239, + 239,247,247,247,252,252,252,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,245,245,245,231,231, + 231,219,219,219,208,208,208,198,198,198,187,187,187,178,178,178,169, + 169,169,162,162,162,156,156,156,153,153,153,154,154,154,157,157,157, + 162,162,162,170,170,170,179,179,179,189,189,189,199,199,199,209,209, + 209,222,222,222,239,239,239,252,252,252,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,245,245,245,233,233,233,220,220,220,208,208,208,195,195, + 195,183,183,183,159,159,170,102,102,164, 44, 44,169, 20, 20,172, 8, + 8,175, 2, 2,177, 7, 7,174, 19, 19,171, 40, 40,165, 96, 96,158, + 149,149,160,172,172,172,184,184,184,197,197,197,209,209,209,222,222, + 222,235,235,235,252,252,252,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254, + 242,242,242,231,231,231,219,219,219,179,179,204, 60, 60,185, 6, 6, + 179, 16, 18,187, 25, 33,199, 39, 52,207, 49, 65,211, 57, 76,215, 48, + 65,210, 38, 50,203, 24, 32,197, 16, 17,184, 6, 6,178, 59, 59,182, + 171,171,196,209,209,209,221,221,221,232,232,232,244,244,244,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,250,250,253, + 101,101,208, 10, 10,182, 21, 26,196, 61, 78,218, 54, 70,218, 36, 46, + 211, 25, 30,207, 18, 22,205, 15, 17,203, 18, 22,203, 25, 30,205, 35, + 45,208, 52, 69,213, 55, 75,215, 21, 26,194, 9, 9,181,104,104,206, + 245,245,248,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,235,235,249, 51, 51,195, 17, 18,191, 59, 74,219, + 51, 64,218, 19, 21,209, 10, 10,206, 10, 10,205, 10, 10,205, 10, 10, + 204, 10, 10,203, 9, 9,203, 9, 9,202, 9, 9,201, 9, 9,200, 19, + 22,203, 47, 62,212, 53, 71,213, 15, 17,187, 54, 54,196,236,236,249, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,239,239,250, 27, + 27,187, 22, 26,198, 66, 82,225, 26, 31,214, 11, 11,210, 11, 11,209, + 11, 11,208, 11, 11,208, 10, 10,207, 10, 10,206, 10, 10,205, 10, 10, + 205, 10, 10,204, 10, 10,204, 9, 9,203, 9, 9,202, 9, 9,202, 24, + 30,206, 59, 78,217, 20, 24,193, 30, 30,188,240,240,250,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,252,252,254, 57, 57,197, 24, 27,202, 64, 78,226, 20, + 22,215, 12, 12,213, 12, 12,212, 12, 12,211, 11, 11,211, 11, 11,210, + 11, 11,209, 11, 11,209, 11, 11,208, 11, 11,207, 10, 10,207, 10, 10, + 206, 10, 10,205, 10, 10,204, 10, 10,204, 10, 10,203, 17, 20,205, 56, + 74,217, 21, 25,194, 60, 60,197,252,252,254,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,120,120, + 216, 19, 20,194, 68, 82,229, 19, 21,218, 13, 13,216, 13, 13,215, 12, + 12,214, 12, 12,214, 12, 12,213, 12, 12,212, 12, 12,211, 11, 11,211, + 11, 11,210, 11, 11,210, 11, 11,209, 11, 11,208, 11, 11,208, 10, 10, + 207, 10, 10,206, 10, 10,205, 10, 10,205, 17, 19,206, 60, 78,219, 18, + 19,191,124,124,217,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,230,230,247, 17, 17,187, 63, 75,228, 28, 31, + 222, 13, 13,219, 13, 13,218, 13, 13,217, 13, 13,216, 13, 13,216, 13, + 13,215, 12, 12,215, 12, 12,214, 12, 12,213, 12, 12,213, 12, 12,212, + 12, 12,211, 11, 11,210, 11, 11,210, 11, 11,209, 11, 11,208, 11, 11, + 208, 11, 11,207, 10, 10,207, 23, 28,210, 53, 69,217, 17, 17,185,232, + 232,248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 91, 91,207, 28, 31,208, 53, 61,229, 14, 14,221, 14, 14,221, 14, 14, + 220, 14, 14,220, 14, 14,219, 13, 13,218, 13, 13,218, 13, 13,217, 13, + 13,216, 13, 13,215, 12, 12,215, 12, 12,214, 12, 12,214, 12, 12,213, + 12, 12,212, 12, 12,211, 11, 11,211, 11, 11,210, 11, 11,209, 11, 11, + 209, 11, 11,208, 47, 59,217, 23, 27,200, 94, 94,208,255,255,255,255, + 255,255,255,255,255,255,255,255,240,240,250, 10, 10,183, 70, 82,232, + 29, 30,227, 29, 29,226, 22, 22,224, 14, 14,223, 14, 14,222, 14, 14, + 221, 14, 14,220, 14, 14,220, 14, 14,219, 13, 13,219, 13, 13,218, 13, + 13,217, 13, 13,216, 13, 13,216, 13, 13,215, 12, 12,214, 12, 12,214, + 12, 12,213, 12, 12,213, 12, 12,212, 12, 12,211, 11, 11,210, 18, 21, + 212, 60, 77,222, 9, 10,182,242,242,251,255,255,255,255,255,255,255, + 255,255,166,166,228, 24, 25,197,104,111,238, 84, 84,235, 84, 84,234, + 84, 84,234, 72, 72,232, 51, 51,229, 25, 25,225, 15, 15,223, 14, 14, + 222, 14, 14,221, 14, 14,221, 14, 14,220, 14, 14,219, 13, 13,219, 13, + 13,218, 13, 13,218, 13, 13,217, 13, 13,216, 13, 13,215, 12, 12,215, + 12, 12,214, 12, 12,213, 12, 12,213, 12, 12,212, 58, 72,223, 20, 22, + 193,170,170,229,255,255,255,255,255,255,255,255,255, 78, 78,204, 55, + 58,217,103,107,240, 82, 82,236, 83, 83,236, 83, 83,236, 83, 83,235, + 82, 82,234, 81, 81,234, 58, 58,230, 26, 26,225, 15, 15,224, 15, 15, + 223, 14, 14,223, 14, 14,222, 14, 14,221, 14, 14,220, 14, 14,220, 14, + 14,219, 13, 13,218, 13, 13,218, 13, 13,217, 13, 13,216, 13, 13,216, + 13, 13,215, 12, 12,214, 40, 48,221, 28, 34,205, 82, 82,203,255,255, + 255,255,255,255,255,255,255, 38, 38,193, 88, 94,229, 93, 95,240, 80, + 80,237, 80, 80,237, 80, 80,237,243,243,243,243,243,243,243,243,243, + 243,243,243,243,243,243,241,241,241,239,239,239,239,239,239,239,239, + 239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239, + 239,239,239,239,239,239,239,239, 13, 13,218, 13, 13,217, 23, 23,218, + 51, 56,223, 46, 55,215, 40, 40,192,255,255,255,255,255,255,255,255, + 255, 16, 16,185,109,115,238, 87, 87,240, 79, 79,239, 79, 79,239, 79, + 79,238,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243, + 243,243,243,243,243,243,240,240,240,239,239,239,239,239,239,239,239, + 239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239, + 239,239, 23, 23,221, 57, 57,226, 79, 79,229, 87, 89,229, 76, 87,225, + 19, 19,185,255,255,255,255,255,255,255,255,255, 3, 3,180,120,126, + 244, 81, 82,242, 77, 77,241, 77, 77,240, 77, 77,240,243,243,243,243, + 243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243, + 243,243,243,241,241,241,239,239,239,239,239,239,239,239,239,239,239, + 239,239,239,239,239,239,239,239,239,239,241,241,241, 74, 74,231, 76, + 76,231, 76, 76,230, 82, 84,230, 97,110,233, 5, 5,180,255,255,255, + 255,255,255,255,255,255, 16, 16,185,103,108,239, 84, 85,244, 75, 75, + 243, 75, 75,242, 75, 75,241,243,243,243,243,243,243,243,243,243,243, + 243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243, + 242,242,242,240,240,240,240,240,240,239,239,239,240,240,240,242,242, + 242,243,243,243,243,243,243, 75, 75,233, 75, 75,232, 75, 75,232, 83, + 85,233, 85, 95,228, 19, 19,186,255,255,255,255,255,255,255,255,255, + 37, 37,193, 82, 86,233, 87, 89,245, 73, 73,244, 73, 73,243, 74, 74, + 243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243, + 243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243, + 243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243, + 243, 73, 73,234, 72, 72,233, 73, 73,233, 87, 90,235, 69, 76,223, 40, + 40,193,255,255,255,255,255,255,255,255,255, 77, 77,205, 53, 56,223, + 97, 99,247, 72, 72,246, 71, 71,245, 71, 71,245, 71, 71,244, 71, 71, + 243, 72, 72,243, 72, 72,243, 71, 71,242, 71, 71,241, 71, 71,241, 71, + 71,240, 72, 72,240, 72, 72,240, 71, 71,239, 71, 71,239, 71, 71,238, + 71, 71,237, 71, 71,236, 71, 71,237, 71, 71,236, 71, 71,236, 71, 71, + 235, 71, 71,234, 94, 99,237, 44, 49,214, 81, 81,204,255,255,255,255, + 255,255,255,255,255,165,165,228, 29, 30,203,113,118,250, 71, 71,247, + 71, 71,247, 71, 71,246, 71, 71,246, 70, 70,245, 70, 70,245, 70, 70, + 244, 70, 70,244, 70, 70,243, 70, 70,242, 69, 69,242, 69, 69,242, 69, + 69,241, 69, 69,240, 70, 70,240, 70, 70,239, 69, 69,239, 69, 69,239, + 69, 69,238, 69, 69,237, 69, 69,237, 70, 70,236, 69, 69,236,108,116, + 241, 25, 26,198,170,170,229,255,255,255,255,255,255,255,255,255,240, + 240,250, 10, 10,184,116,121,249, 77, 78,249, 71, 71,249, 71, 71,248, + 71, 71,248, 71, 71,247, 71, 71,246, 71, 71,246, 71, 71,246, 70, 70, + 245, 70, 70,244, 70, 70,244, 70, 70,243, 70, 70,243, 70, 70,242, 69, + 69,242, 69, 69,241, 69, 69,241, 69, 69,240, 69, 69,239, 68, 68,239, + 68, 68,239, 68, 68,239, 74, 75,239,106,115,240, 11, 11,183,241,241, + 251,255,255,255,255,255,255,255,255,255,255,255,255, 89, 89,208, 45, + 46,223,106,109,252, 71, 71,250, 71, 71,250, 71, 71,250, 71, 71,249, + 71, 71,248, 71, 71,248, 71, 71,247, 71, 71,247, 71, 71,246, 71, 71, + 246, 70, 70,245, 70, 70,245, 70, 70,244, 70, 70,243, 70, 70,243, 70, + 70,242, 69, 69,242, 69, 69,242, 69, 69,241, 69, 69,240, 69, 69,240, + 100,107,242, 43, 45,215, 93, 93,209,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,230,230,247, 17, 17,189,111,115,250, 85, + 86,252, 72, 72,252, 71, 71,251, 71, 71,251, 71, 71,250, 71, 71,250, + 71, 71,249, 71, 71,249, 71, 71,248, 71, 71,247, 71, 71,247, 71, 71, + 246, 71, 71,246, 71, 71,246, 70, 70,245, 70, 70,244, 70, 70,244, 70, + 70,243, 70, 70,242, 69, 69,242, 81, 83,242,104,111,241, 18, 18,188, + 232,232,248,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,120,120,217, 27, 28,206,122,126,254, 79, 79,253, 72, + 72,253, 72, 72,253, 72, 72,252, 71, 71,251, 71, 71,251, 71, 71,250, + 71, 71,250, 71, 71,250, 71, 71,249, 71, 71,248, 71, 71,248, 71, 71, + 247, 71, 71,246, 71, 71,246, 71, 71,246, 70, 70,245, 70, 70,245, 75, + 76,245,117,124,247, 28, 29,202,123,123,217,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,252, + 254, 55, 55,198, 44, 44,218,121,124,254, 79, 80,254, 72, 72,254, 72, + 72,253, 72, 72,253, 72, 72,253, 72, 72,252, 72, 72,252, 71, 71,251, + 71, 71,250, 71, 71,250, 71, 71,250, 71, 71,249, 71, 71,249, 71, 71, + 248, 71, 71,247, 71, 71,247, 78, 79,247,115,122,248, 43, 45,214, 59, + 59,199,252,252,254,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,238,238,250, 28, 28, + 189, 45, 45,216,125,127,254, 86, 88,254, 72, 72,254, 72, 72,254, 72, + 72,254, 72, 72,254, 72, 72,253, 72, 72,253, 72, 72,253, 72, 72,252, + 71, 71,251, 71, 71,251, 71, 71,250, 71, 71,250, 71, 71,250, 86, 87, + 250,120,126,250, 43, 45,213, 29, 29,189,240,240,250,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,234,234,249, 50, 50,196, 30, 30, + 204,115,117,248,111,114,254, 80, 81,254, 72, 72,254, 72, 72,254, 72, + 72,254, 72, 72,254, 72, 72,254, 72, 72,253, 72, 72,253, 72, 72,253, + 72, 72,252, 81, 82,252,109,113,252,111,116,246, 28, 29,201, 52, 52, + 196,235,235,249,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,249,249,253,105,105,212, 10, 10,184, 53, 54, + 218,122,124,251,117,120,254, 99,100,254, 88, 89,254, 82, 82,254, 77, + 78,254, 82, 82,254, 87, 89,254, 98,100,254,115,119,254,119,123,251, + 50, 51,216, 12, 12,185,105,105,212,250,250,253,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,218,218,244, 74, 74,203, 11, 11,183, 35, 35, + 204, 68, 69,227, 92, 94,239,110,111,246,123,126,252,109,111,246, 91, + 93,238, 67, 68,227, 34, 34,204, 9, 9,183, 77, 77,204,219,219,244, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,182,132, 93,164,101, 52,164,101, 52, - 164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, - 52,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, - 255,255,255,255,255,164,101, 52,229,204,180,219,183,149,219,182,148, - 218,180,146,218,179,144,217,173,134,216,170,131,215,168,127,215,166, - 125,224,190,159,164,101, 52,255,255,255,255,255,255,255,255,255,255, - 255,255,164,101, 52,232,211,192,231,209,187,231,209,188,230,206,183, - 230,206,183,230,206,183,230,206,183,230,205,182,230,204,181,230,204, - 182,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,182, - 132, 93,164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52, - 164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52,182,132, - 93,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,237,237,250,162,162,227, 75, 75,204, 38, 38, + 193, 17, 17,186, 4, 4,180, 17, 17,186, 38, 38,194, 77, 77,205,164, + 164,228,238,238,250,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); - -Const - stdimg_arrow_right : Array[0..89] of byte = ( - 66, 77, 90, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 40, 0, 0, - 0, 4, 0, 0, 0, 7, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 28, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 2, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0,255,255,255, 0,112, 0, 0, 0, 48, 0, - 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 48, 0, 0, - 0,112, 0, 0, 0); + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255); Const - stdimg_choice_yes_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255, 12,164, 60, 17,171, 71, 13,173, 73,104,175, - 120,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 87,183,107, 78,224,155, 92,234,170, 92,234,171, 35,192,104, 87,167, - 106,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 32,183, 89, - 102,255,205,104,255,201, 85,255,195, 73,252,184, 24,199,107, 85,166, - 102,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,157,207,165, 22,223,131, 47,255,181, - 45,255,174, 30,255,170, 3,255,160, 17,250,157, 12,190, 93, 68,158, - 86,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255, 68,173, 91, 0,248,147, 1,254,156, 10,254,160, - 18,251,159, 38,250,165, 49,242,160, 70,234,157, 21,183, 87, 74,169, - 94,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255, 7,173, 65, 7,243,144, 45,243,160, 72,243,171,105,199,139, - 96,231,164,112,241,183,110,233,172,102,224,157, 28,169, 74, 57,157, - 75,255, 0,255,255, 0,255,255, 0,255,255, 0,255,148,199,148, 18, - 202,101, 79,235,162,102,241,178, 85,205,129,255, 0,255,172,211,180, - 89,192,126,129,232,178,130,225,170,129,215,157, 45,168, 78, 63,165, - 77,255, 0,255,255, 0,255,255, 0,255,127,196,134, 86,221,149,112, - 231,171,111,233,173,152,207,158,255, 0,255,255, 0,255,255, 0,255, - 101,183,121,151,227,181,150,221,173,157,217,170, 60,168, 84, 44,152, - 56,255, 0,255,255, 0,255,255, 0,255,138,190,142, 97,180,115, 81, - 180,107,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 109,181,120,173,225,187,170,219,179,181,219,181, 84,174,101, 42,147, - 51,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 121,181,123,195,228,198,191,223,191,206,230,203,110,184,122,115,185, - 121,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 126,181,126,218,237,218,228,242,228,169,210,169,173,204,172,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 115,168,114,139,187,139,195,215,194,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); - -Const - stdimg_checkboxes : Array[0..2601] of byte = ( - 66, 77, 42, 10, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 65, 0, 0, 0, 13, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 244, 9, 0, 0,196, 14, 0, 0,196, 14, 0, 0, 0, 0, 0, 0, 0, + stdimg_dialog_information_32 : Array[0..3125] of byte = ( + 66, 77, 54, 12, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 12, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254, + 254,254,252,252,252,248,248,248,245,245,245,243,243,243,241,241,241, + 239,239,239,239,239,239,241,241,241,243,243,243,245,245,245,249,249, + 249,252,252,252,254,254,254,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,254,254,254,249,249,249,243,243,243,238,238,238,233,233,233,229, + 229,229,223,223,223,216,216,216,201,201,201,198,198,198,207,207,207, + 209,209,209,214,214,214,221,221,221,228,228,228,232,232,232,236,236, + 236,242,242,242,250,250,250,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,254,254,254,248,248,248,242,242, + 242,236,236,236,230,230,230,223,223,223,210,210,210,195,195,195,117, + 117,117, 92, 92, 92, 92, 92, 92,112,112,112,170,170,170,183,183,183, + 194,194,194,206,206,206,218,218,218,229,229,229,234,234,234,240,240, + 240,246,246,246,254,254,254,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,249,249,249,243,243,243,238,238,238,232,232, + 232,226,226,226,215,215,215,154,154,154, 97, 97, 97,185,185,185,185, + 185,185,106,106,106,142,142,142,191,191,191,201,201,201,211,211,211, + 223,223,223,230,230,230,236,236,236,241,241,241,247,247,247,254,254, + 254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,251,251,251,247,247,247,242,242,242,208,214,214,123,144, + 144, 53, 84, 84, 44, 77, 77, 46, 80, 80, 44, 79, 79, 46, 78, 78, 64, + 90, 90,114,138,138,222,223,223,233,233,233,236,236,236,241,241,241, + 245,245,245,250,250,250,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255, 51, 88, 88, 65,125,125,118,178,177,148,198, + 196,177,224,221,167,213,210,154,203,200, 93,137,136, 63,104,105, 69, + 101,101,242,244,244,252,252,252,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 0,127,127,127,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,255,255,255, - 127,127,127,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,255,255,255,127,127,127,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,255,255,255,127,127,127,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,255,255,255,127,127, - 127,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255,255,255, + 45, 88, 88, 90,161,161,242,251,250,197,244,242,198,247,244,185,233, + 231,141,183,181,126,169,169, 97,143,145, 49, 89, 89,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, - 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, - 255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127,127, 0, - 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255, - 255,127,127,127, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0, 0,255, - 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255, - 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, - 127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,127,127,127,127,127, - 127, 52, 52, 52, 52, 52, 52,127,127,127,191,191,191,255,255,255,127, - 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, - 191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255, - 255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0,255,255,255,191,191,191,255,255,255,127,127, - 127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191, - 255,255,255,127,127,127, 0, 0, 0,127,127,127, 52, 52, 52, 52, 52, - 52, 52, 52, 52,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52,127, - 127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127,127, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255, - 255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, - 255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, - 0,127,127,127,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52,127,127,127,127,127,127,191,191,191,255,255,255, - 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, - 191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,154,174,174, 61,112,112, + 134,166,165,192,241,238,198,247,244,189,239,237,171,223,221, 80,123, + 123, 62,102,102,116,140,140,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0, - 255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,127, - 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, - 191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127, - 127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52,127,127,127,127,127,127, - 127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127, - 127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191, - 255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, - 255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, - 0, 0,127,127,127,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52,127,127,127,127,127,127,191,191,191,255,255, - 255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 191,191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, - 0,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,191,191,191,255,255,255, - 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, - 191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, 52, 52, 52, - 52, 52, 52, 52, 52, 52,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, - 52,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127, - 127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191, - 191,255,255,255,127,127,127, 0, 0, 0,255,255,255, 0, 0, 0, 0, - 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, - 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, - 0, 0, 0,127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,127,127, - 127,127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,191,191,191,255, - 255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,191,191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, - 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255, - 255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0, - 127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, - 191,191,255,255,255,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,191,191,191,255,255,255,127,127,127, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,191,191,191,255,255,255,127,127, - 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,191,191, - 255,255,255,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,191,191,191,255,255,255, 0,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,255,255,255,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,255, - 255,255,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,255,255,255,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,255,255,255,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,255,255,255, - 0); - -Const - stdimg_arrow_left : Array[0..89] of byte = ( - 66, 77, 90, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 40, 0, 0, - 0, 4, 0, 0, 0, 7, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 28, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 2, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0,255,255,255, 0,224, 0, 0, 0,192, 0, - 0, 0,128, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,192, 0, 0, - 0,224, 0, 0, 0); - -Const - stdimg_ellipse : Array[0..181] of byte = ( - 66, 77,182, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 10, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0, - 229,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0,229, 0, - 0,255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0, 0, 0, - 0, 0,255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0,255, - 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0, 0, 0, 0, 0, - 255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0,255, 0,229, - 255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0, - 229,255, 0,229,255, 0,229,255, 0,229, 0, 0); - -Const - stdimg_refresh_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,197,157,126,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,225,205,189,189,144,108,174,118, 73,166,105, 57,176, - 122, 79,196,156,124,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,164,101, 52,203,167,139,255, 0,255,225,204,188,172,113, - 68,184,134, 93,206,166,132,216,182,151,219,185,153,211,172,138,195, - 149,111,169,109, 63,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 165,104, 56,185,136, 96,180,129, 88,180,128, 86,227,202,180,236,218, - 201,231,209,188,227,201,176,222,190,160,210,171,136,206,165,130,211, - 174,142,169,110, 64,255, 0,255,255, 0,255,255, 0,255,167,105, 58, - 241,228,216,212,178,149,244,233,224,243,232,221,237,220,204,210,173, - 143,179,125, 83,166,104, 56,166,105, 57,166,106, 58,169,109, 61,176, - 120, 76,197,157,125,255, 0,255,255, 0,255,166,104, 57,246,238,230, - 245,236,227,245,237,228,230,210,193,179,126, 84,185,136, 97,255, 0, - 255,255, 0,255,217,191,171,175,117, 74,182,124, 79,167,107, 59,167, - 107, 59,255, 0,255,255, 0,255,165,104, 55,246,238,230,235,215,196, - 234,217,201,164,102, 53,217,191,171,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,173,115, 70,225,196,174,200,158,124,164,101, 52,255, - 0,255,255, 0,255,165,103, 54,245,237,229,246,237,229,245,236,228, - 215,184,157,177,122, 79,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,165,103, 54,255, 0,255,255, - 0,255,166,105, 57,164,102, 53,164,102, 53,165,102, 54,165,103, 54, - 165,103, 55,189,143,108,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,198,158,128,164,101, 52,175,120, 76,178,123, 82,178,123, - 82,178,124, 82,164,101, 52,255, 0,255,255, 0,255,165,103, 54,217, - 189,167,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,187,139,102,209,174,145,246,238,231,242,230,219,246,238, - 230,167,108, 61,255, 0,255,255, 0,255,164,102, 54,168,108, 61,221, - 187,162,174,118, 75,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 221,197,179,164,102, 53,233,215,199,235,216,198,245,236,227,168,109, - 62,255, 0,255,255, 0,255,170,111, 65,171,112, 65,169,109, 61,170, - 112, 66,213,184,162,255, 0,255,255, 0,255,183,134, 95,188,141,103, - 235,219,205,245,235,226,246,238,230,246,238,230,169,109, 62,255, 0, - 255,255, 0,255,202,164,135,192,145,106,197,152,114,168,107, 60,164, - 102, 53,168,108, 60,186,139,101,217,187,161,241,228,216,242,230,219, - 243,232,221,206,168,137,234,216,200,169,110, 63,255, 0,255,255, 0, - 255,255, 0,255,169,111, 65,211,173,140,220,189,157,221,190,161,229, - 203,180,233,211,191,238,221,204,240,226,213,231,210,191,178,124, 82, - 187,141,104,174,117, 73,165,104, 55,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,169,109, 63,193,146,107,211,176,143,223,194,168,222, - 193,168,212,177,147,188,140,102,170,112, 67,224,202,185,255, 0,255, - 219,194,174,164,101, 52,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,200,161,132,178,125, 83,168,108, 61,176,120, 77,190, - 145,110,225,205,189,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 212,182,159,255, 0,255); - -Const - stdimg_arrow_down : Array[0..77] of byte = ( - 66, 77, 78, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 40, 0, 0, - 0, 7, 0, 0, 0, 4, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 2, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0,255,255,255, 0,238, 0, 0, 0,198, 0, - 0, 0,130, 0, 0, 0, 0, 0, 0, 0); + 255,255,255,255,255, 57, 95, 95, 71,134,133,193,230,229,186,234,232, + 183,230,227,167,210,209,143,186,186,135,185,185, 97,143,145, 49, 85, + 85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 71, + 123,122,111,177,177,183,176,175,132,129,125,118,108,106,115,104,101, + 122,116,113,116,120,118, 85,106,105, 70,101,101,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,129,141,139,118,111,106,181, + 174,170,220,215,211,231,228,225,235,231,228,235,232,230,214,214,211, + 144,139,137,122,117,115,251,250,250,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,229,227,226,131,118,114,218,210,203,206,205,198,145,154,149,167, + 186,181,167,192,189,142,166,166,201,221,219,238,235,233,178,171,168, + 173,166,164,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,149,137,134,221,205, + 197,240,227,218,206,203,194,159,161,158,202,210,206,203,217,215,151, + 161,160,225,233,233,253,250,249,254,243,242,133,121,118,241,240,240, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,245,244,244,127,114,110,244,229,220,238,225,213,218,211, + 205,229,223,218,250,246,242,252,251,248,223,222,222,221,221,220,253, + 251,250,253,244,242,190,178,175,209,205,204,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,214,211,210, + 160,146,140,242,226,214,239,224,213,233,227,220,245,238,232,249,245, + 241,252,249,247,251,250,248,224,224,223,251,249,247,252,245,242,215, + 205,202,183,175,173,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,229,227,226,130,117,114,223,206,194,236,218,203, + 242,231,223,245,236,228,245,237,230,248,243,238,250,247,244,252,249, + 247,248,246,245,252,248,246,250,244,239,251,241,237,139,127,124,209, + 205,204,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,235,233,233,129, + 116,112,213,193,179,233,210,193,231,212,194,248,243,238,240,230,221, + 240,237,233,241,239,237,238,237,237,234,233,231,228,226,226,235,234, + 232,247,241,235,248,238,232,248,237,233,139,127,123,218,214,212,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,254,254,254,142,129,124,202,177,157,226,199,177,222, + 195,169,243,234,226,250,247,246,248,247,246,239,234,231,236,231,226, + 230,226,222,229,226,222,225,223,221,226,226,226,212,210,208,242,232, + 222,245,231,224,243,230,225,133,120,117,249,249,249,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,206,202, + 200,158,136,124,222,190,165,213,178,146,220,191,164,251,249,247,240, + 230,221,238,225,213,242,230,221,243,234,224,244,235,227,245,237,230, + 245,237,230,216,213,211,206,205,205,240,227,216,236,221,207,246,232, + 224,194,180,172,193,188,185,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,154,141,137,201,167,145,208,169, + 134,211,173,140,227,204,184,237,221,207,239,226,214,242,231,221,243, + 234,225,245,237,230,246,239,232,245,237,229,242,233,223,241,231,220, + 245,236,228,237,222,209,233,215,200,234,216,200,240,225,219,148,136, + 133,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,129,114,110,220,181,158,201,154,113,216,184,155,233,215, + 198,236,220,206,238,225,212,241,228,217,242,231,222,243,234,226,245, + 236,228,245,237,230,245,236,229,241,229,218,236,221,207,233,216,200, + 231,211,192,227,203,182,252,239,235,125,113,109,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,118,104,100, + 227,182,158,205,152,111,226,202,180,233,214,198,235,219,204,237,223, + 209,239,226,214,241,230,219,242,231,222,243,233,224,243,234,224,243, + 234,225,242,231,221,236,219,205,230,210,191,227,203,182,223,196,171, + 252,239,236,118,105,101,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,128,113,109,223,177,154,212,153,114, + 228,207,187,232,214,196,234,217,202,236,222,207,238,224,211,240,227, + 216,240,229,217,242,230,220,241,230,220,241,230,219,240,229,218,237, + 223,210,226,202,180,223,196,172,221,191,166,249,234,230,127,114,110, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,149,135,131,207,164,142,221,161,125,230,202,180,232,213,195, + 234,217,201,235,219,204,237,222,208,238,225,212,239,226,215,240,227, + 216,239,227,215,239,226,214,239,226,214,238,224,210,223,197,173,218, + 188,160,224,195,173,232,214,204,148,135,131,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,196,191,189,170, + 138,124,229,173,143,224,178,149,234,213,196,234,215,199,234,218,202, + 237,221,206,237,223,209,238,223,211,238,224,212,238,224,212,238,224, + 211,236,222,208,236,220,205,219,189,162,214,179,148,236,214,198,185, + 166,155,196,191,189,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,246,245,245,130,115,110,224,175,150,223, + 159,123,230,196,174,234,214,197,234,216,201,236,219,204,236,220,206, + 236,221,207,237,222,209,237,222,208,236,220,206,235,219,204,232,213, + 195,211,175,143,217,182,153,239,220,209,130,116,111,246,245,245,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,199,192,191,154,129,117,231,183,157,222,157,120,226, + 187,161,234,213,196,234,216,200,235,218,203,236,219,205,236,220,206, + 236,219,205,235,218,202,234,217,201,217,186,156,211,173,139,243,224, + 213,163,143,131,199,192,191,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254, + 254,162,149,146,166,137,122,232,185,162,223,162,128,216,161,125,221, + 185,157,226,201,179,231,212,194,234,216,200,230,210,192,225,200,177, + 214,180,149,213,175,144,240,219,207,177,154,142,162,149,146,254,254, + 254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,252,251,251,161,149, + 146,147,127,118,221,179,158,233,184,158,222,167,134,212,156,116,206, + 152,111,204,153,111,204,157,116,214,174,141,231,202,182,231,207,193, + 155,136,127,161,149,146,252,251,251,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,199,193,192,127,112, + 108,165,139,127,207,169,149,230,192,173,236,202,183,237,204,187,232, + 201,185,212,181,165,170,148,137,128,113,109,199,193,192,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,250,250,249,206,202,200,162,150, + 146,134,119,113,120,106,102,120,106,102,134,119,113,162,150,146,206, + 202,200,250,250,249,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255); Const - stdimg_font_16 : Array[0..821] of byte = ( + stdimg_menu_preferences_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,128,128,128,135,135,135,133, - 133,133,133,133,133,128,128,128,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 88, 88, 88,102,102,102,108,108,108, 99, - 99, 99, 83, 83, 83,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 81, 81, 81, 84, 84, 84, 81, 81, 81,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 60, 77,162, 76, 89,162, 77, 90,161, 74, 87,161, 73, 84, - 156,255, 0,255, 80, 80, 77, 45, 45, 45, 74, 74, 74,255, 0,255,255, + 0, 0, 0,215,194,180,135, 74, 32,135, 74, 32,135, 74, 32,223,207, + 196,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 36, 59,219, 0, 43,255, 0, 47,255, 0, 39,239, 45, 62,197,255, 0, - 255, 65, 65, 63, 7, 7, 7, 60, 60, 60,255, 0,255,255, 0,255,255, + 135, 74, 32,190,165,146,184,156,134,184,156,134,135, 74, 32,223,207, + 196,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,193, + 196,195,154,158,157,193,196,195,255, 0,255,255, 0,255,135, 74, 32, + 204,187,173,167,145,125,181,149,122,174,139,114,135, 74, 32,223,207, + 196,255, 0,255,255, 0,255,255, 0,255,219,220,220,133,138,136,158, + 161,160,133,138,136,255, 0,255,255, 0,255,135, 74, 32,204,187,173, + 164,141,120,162,138,116,180,149,122,179,147,124,135, 74, 32,255, 0, + 255,255, 0,255,219,220,220,133,138,136,210,211,212,194,195,196,133, + 138,136,255, 0,255,255, 0,255,232,221,213,135, 74, 32,212,200,189, + 164,141,120,164,141,120,190,165,146,135, 74, 32,255, 0,255,219,220, + 220,133,138,136,226,227,228,194,196,198,133,138,136,193,196,195,255, + 0,255,255, 0,255,255, 0,255,243,237,233,135, 74, 32,204,187,173, + 204,187,173,179,147,124,135, 74, 32,193,196,195,133,138,136,211,211, + 212,189,190,191,133,138,136,219,220,220,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,243,237,233,135, 74, 32,135, 74, 32, + 135, 74, 32,133,131,125,170,173,173,200,201,202,189,190,191,133,138, + 136,219,220,220,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 19, 38,213, 0, 32,255, 80, 88,168,255, 0,255,255, 0,255, 55, 55, - 55, 0, 0, 0, 58, 58, 58,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 28, 37,212, - 0, 16,255, 86, 89,166,255, 0,255,255, 0,255, 55, 55, 55, 1, 1, - 1, 58, 58, 58,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255, 27, 28,213, 0, 3,255, - 85, 85,168,255, 0,255,255, 0,255, 55, 55, 55, 0, 0, 0, 58, 58, - 58,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 27, 27,213, 0, 0,255, 84, 84,166, - 255, 0,255,255, 0,255, 57, 57, 57, 11, 11, 11, 60, 60, 60,255, 0, + 181,183,184,133,138,136,183,184,185,133,138,136,219,220,220,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,219, + 220,220,133,138,136,133,138,136,133,138,136,133,138,136,208,209,210, + 163,164,164,133,138,136,193,196,195,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,219,220,220,133,138,136,243, + 243,243,239,240,240,237,238,238,234,236,236,182,185,186,133,138,136, + 219,220,220,133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,133,138,136,245,246,246,169,172,171,133, + 138,136,247,247,247,226,227,229,170,173,173,245,246,246,255, 0,255, + 219,220,220,133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,219,220,220,133,138,136,255, 0,255,219,220,220,133, + 138,136,250,250,250,133,138,136,255, 0,255,255, 0,255,255, 0,255, + 219,220,220,133,138,136,135,140,138,179,179,179,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,133,138,136,238, + 240,240,133,138,136,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 133,138,136,240,240,240,133,138,136,179,179,179,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,133,138,136,233,235,236,133,138,136,219, + 220,220,255, 0,255,255, 0,255,255, 0,255,255, 0,255,179,179,179, + 133,138,136,238,239,239,133,138,136,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,219,220,220,133,138,136,219,220,220,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,179,179,179, + 133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0,255,255, 0, 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255, 27, 27,220, 3, 4,166, 62, 62, 88,255, 0,255, - 255, 0,255, 71, 71, 71, 49, 49, 49, 71, 71, 71,255, 0,255,255, 0, - 255,100,100,100,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255, 27, 27,224, 19, 19,138, 52, 52, 32,255, 0,255,255, 0,255, - 78, 78, 78, 93, 93, 93, 76, 76, 76,255, 0,255,255, 0,255, 40, 40, - 40,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 29, - 29,225, 24, 24,153,113,113, 93, 65, 65, 65, 71, 71, 71, 84, 84, 81, - 139,139,138, 75, 75, 75, 74, 74, 74, 66, 66, 66,113,113,113,255, 0, - 255, 78, 78,167, 88, 88,152,255, 0,255,255, 0,255, 48, 48,225, 37, - 38,161,103,103, 98,114,114,111,106,106,103,106,106,115,112,112,115, - 111,111,111,105,105,105,113,113,113,113,113,113,255, 0,255, 83, 83, - 197, 45, 45,204,255, 0,255,255, 0,255, 59, 60,212, 81, 83,247, 72, - 72,146,255, 0,255,255, 0,255, 43, 44,213,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,105,105,181,113,114, - 255, 76, 76,207, 77, 77,191, 97, 98,244,127,128,255, 79, 79,220, 83, - 84,188, 87, 87,223,104,105,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,123,123,178, 80, 80,215, 84, 84, - 223, 80, 80,228, 81, 81,220, 74, 74,218, 79, 79,223, 77, 77,228, 83, - 83,239, 67, 68,231,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255); Const - stdimg_radiobuttons : Array[0..2213] of byte = ( - 66, 77,166, 8, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 60, 0, 0, 0, 12, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 112, 8, 0, 0,196, 14, 0, 0,196, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255,255,255,255,255,255,191,191,191,191,191,191,191,191,191, - 191,191,191,255,255,255,255,255,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255,255,255,255,255,255,191,191,191,191,191,191,191, - 191,191,191,191,191,255,255,255,255,255,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255,255,255,255,255,255,191,191,191,191,191, - 191,191,191,191,191,191,191,255,255,255,255,255,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255,255,255,255,255,255,191,191,191, - 191,191,191,191,191,191,191,191,191,255,255,255,255,255,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255,255,255,255,255,255,191, - 191,191,191,191,191,191,191,191,191,191,191,255,255,255,255,255,255, - 255, 0,255,255, 0,255,255, 0,255,127,127,127,191,191,191,191,191, - 191,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,191, - 191,191,255,255,255,255, 0,255,255, 0,255,127,127,127,191,191,191, - 191,191,191,255,255,255,255,255,255,255,255,255,255,255,255,191,191, - 191,191,191,191,255,255,255,255, 0,255,255, 0,255,127,127,127,191, - 191,191,191,191,191,127,127,127,127,127,127,127,127,127,127,127,127, - 191,191,191,191,191,191,255,255,255,255, 0,255,255, 0,255,127,127, - 127,191,191,191,191,191,191,127,127,127,127,127,127,127,127,127,127, - 127,127,191,191,191,191,191,191,255,255,255,255, 0,255,255, 0,255, - 127,127,127,191,191,191,191,191,191,127,127,127,127,127,127,127,127, - 127,127,127,127,191,191,191,191,191,191,255,255,255,255, 0,255,255, - 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, 0, - 255,255, 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255, - 255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, - 255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, - 191,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 191,191,191,255,255,255,255, 0,255,127,127,127, 0, 0, 0,255,255, + stdimg_folder_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0, - 255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255, - 255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, - 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255,127,127, - 127, 0, 0, 0,127,127,127,127,127,127,127,127,127, 0, 0, 0, 0, - 0, 0,127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, - 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, - 255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191, - 191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, - 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, - 127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127, - 127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, - 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, - 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,255,255,255,191,191,191,255,255,255,127, - 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255,255, - 255,127,127,127, 0, 0, 0,127,127,127,127,127,127, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,191,191,191, - 255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, - 191,191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255, - 255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, - 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, - 127,127,127,127,127,127,127,127,127, 0, 0, 0, 0, 0, 0,127,127, - 127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, - 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255,255, 0, - 255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, 0,255, - 255, 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, - 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255,255, - 255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191, - 255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, - 191,191,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, - 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, - 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255,127,127, - 127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, - 127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255, - 127,127,127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,127,127, - 127,127,127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, - 0,255,127,127,127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127, - 127,127,127,127,127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0, - 255,255, 0,255,255, 0,255,127,127,127,127,127,127, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127, - 127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127, - 127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127, - 127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127, - 127,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, - 127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,127,127,127,127,127,127,127,127,127,127,127, - 127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127,127,127,127, - 127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127,127, - 127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127, - 127,127,127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127, - 127,127,127,127,127,127,127,127,127,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255); + 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, + 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, + 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, + 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, + 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, + 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, + 134,213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213, + 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, + 215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,215,175, + 138,215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,226, + 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,217,179,143,217,179,143,228,202,177,135, + 74, 32,135, 74, 32,230,205,181,217,179,143,217,179,143,217,179,143, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,217,179,143,230,205,181,135, 74, 32,135, + 74, 32,231,207,184,217,179,143,217,179,143,217,179,143,217,179,143, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,231,207,184,135, 74, 32,135, 74, 32,232, + 210,188,217,179,143,217,179,143,217,179,143,217,179,143,217,179,143, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,232,210,188,135, 74, 32,136, 76, 34,230,209,188,234, + 212,192,234,212,192,234,212,192,234,212,192,234,212,192,226,197,169, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,234,212,192,135, 74, 32,139, 77, 36,136, 76, 34,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,140, 82, 42,218,190,167,227,200,173, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,235,215, + 196,135, 74, 32,135, 74, 32,204,164,133,188,136, 95,188,136, 94,188, + 136, 94,188,136, 94,175,120, 80,144, 86, 46,220,194,172,236,217,199, + 236,217,199,236,217,199,236,217,199,236,217,199,233,214,196,138, 79, + 37,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,205, + 161,124,218,186,158,190,150,120,135, 74, 32,135, 74, 32,135, 74, 32, + 135, 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,168,147,225,210, + 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,218, + 191,169,144, 89, 49,225,210,200,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,210, + 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,225, + 210,200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); Const - stdimg_edit : Array[0..821] of byte = ( + stdimg_edit_delete_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0,235, 10, 0, 0,235, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 98,146, 94, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98,146, 94, 98,146, 94, - 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255, - 255,255,255,255,160,160,160,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255, 0, 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, - 88, 88, 88,220,220,220,160,160,160,160,160,160, 0, 0, 0,160,160, - 160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, - 160,160, 0, 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, 88, 88, 88, - 220,220,220,255,255,255,255,255,255, 88, 88, 88, 48, 48, 48, 0, 0, - 64,195,195,195,220,220,220,255,255,255,255,255,255,255,255,255, 0, - 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, 88, 88, 88,220,220,220, - 255,255,255,255,255,255,255,255,255, 88, 88, 88,168,220,255, 0, 88, - 192, 0, 88,192,195,195,195,220,220,220,255,255,255, 0, 0, 0, 98, - 146, 94, 98,146, 94, 98,146, 94, 88, 88, 88,220,220,220,195,195,195, - 195,195,195,195,195,195,160,160,160,168,220,255,168,220,255,168,220, - 255, 0, 88,192, 0, 88,192,160,160,160, 0, 0, 0, 98,146, 94, 98, - 146, 94, 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255, - 255,255,255,255,255,255, 88,168,255,168,220,255,168,220,255,168,220, - 255,168,220,255, 0, 0, 64, 0, 0, 0, 98,146, 94, 98,146, 94, 98, - 146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255,255, - 255,255,255,160,160,160,168,220,255,168,220,255, 0,128,255, 0,128, - 255, 0, 88,192, 48, 48, 48, 98,146, 94, 98,146, 94, 98,146, 94, 88, - 88, 88,220,220,220,195,195,195,195,195,195,195,195,195,195,195,195, - 195,195,195, 88,168,255,168,220,255, 0,128,255, 0,128,255, 0,128, - 255, 0, 88,192, 48, 48, 48, 98,146, 94, 98,146, 94, 88, 88, 88,220, - 220,220,255,255,255,255,255,255,255,255,255,255,255,255,195,195,195, - 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, - 255, 0, 88,192, 0, 0, 64, 98,146, 94, 88, 88, 88,220,220,220,255, - 255,255,255,255,255,255,255,255,255,255,255,195,195,195,255,255,255, - 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, - 255, 0, 88,192, 98,146, 94, 88, 88, 88,220,220,220,195,195,195,195, - 195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195, - 195,195,195, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, - 255, 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255, - 255,255,255,255,255,195,195,195,255,255,255,255,255,255,255,255,255, - 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 98,146, - 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255,255,255, - 255,255,195,195,195,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 88,168,255, 88,168,255, 0,128,255, 98,146, 94, 88, 88, - 88,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, - 220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, - 88, 88, 88, 88,168,255, 88,168,255, 98,146, 94, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 98,146, 94, 98,146, 94); + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,186,188,188,145,148,147,173,176,175,255,255, + 255,255,255,255,144,148,146,158,161,160,163,166,164,255,255,255,255, + 255,255,219,220,219,151,153,153,189,191,190,255,255,255,255,255,255, + 255,255,255,141,145,144,250,250,250,151,154,153,169,172,171,159,162, + 161,150,154,152,238,239,239,170,174,172,155,158,157,152,155,154,139, + 142,141,255,255,255,172,175,175,255,255,255,255,255,255,255,255,255, + 186,188,188,142,146,145,246,246,246,153,156,155,171,173,172,143,147, + 144,224,225,224,178,180,180,211,213,212,152,155,154,236,236,236,160, + 163,162,212,213,213,255,255,255,255,255,255,255,255,255,255,255,255, + 141,144,143,221,222,221,142,147,144,201,201,201,138,143,140,206,208, + 207,164,166,165,200,200,200,124,128,127,227,228,228,146,149,148,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,117,121,120, + 203,205,204,133,138,135,166,167,166,146,147,147,179,180,179,146,147, + 146,182,183,182,124,128,127,189,190,189,123,126,125,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,106,110,109,205,206,206, + 108,111,111,172,174,173,109,112,111,175,177,176,108,111,110,178,180, + 179,111,115,114,179,180,180,109,113,112,255,255,255,255,255,255,255, + 255,255,165,118, 87,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32, + 135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, + 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,165,118, 87,135, + 74, 32,221,187,156,207,159,114,207,159,114,207,159,114,207,159,114, + 207,159,114,207,159,114,207,159,114,207,159,114,207,159,114,207,159, + 114,207,159,114,207,159,114,221,187,156,135, 74, 32,135, 74, 32,221, + 187,156,221,187,156,221,187,156,221,187,156,221,187,156,221,187,156, + 221,187,156,221,187,156,221,187,156,221,187,156,221,187,156,221,187, + 156,221,187,156,221,187,156,135, 74, 32,135, 74, 32,221,187,156,202, + 138, 88,202,138, 88,202,138, 88,202,138, 88,202,138, 88,202,138, 88, + 202,138, 88,202,138, 88,202,138, 88,202,138, 88,202,138, 88,202,138, + 88,221,187,156,135, 74, 32,135, 74, 32,221,187,156,134, 82, 44,134, + 81, 43,134, 81, 43,134, 81, 43,134, 81, 43,134, 81, 43,134, 82, 44, + 134, 82, 44,134, 82, 44,134, 82, 44,134, 82, 44,134, 82, 44,221,187, + 156,135, 74, 32,135, 74, 32,221,187,156,106, 91, 78,201,201,201,156, + 156,156,156,156,156,156,156,156,155,155,155,155,155,155,155,155,155, + 155,155,155,155,155,155,155,155,155,106, 91, 78,221,187,156,135, 74, + 32,135, 74, 32,221,187,156,119,124,122,217,217,217,189,189,189,189, + 189,189,189,189,189,189,189,189,188,188,188,188,188,188,188,188,188, + 191,191,191,192,192,192,119,124,122,221,187,156,135, 74, 32,195,165, + 144,135, 74, 32,133,138,136,231,231,231,215,215,215,214,214,214,214, + 214,214,214,214,214,214,214,214,213,213,213,213,213,213,218,218,218, + 220,220,220,133,138,136,135, 74, 32,195,165,144,255,255,255,255,255, + 255,133,138,136,241,241,241,235,235,235,235,235,235,235,235,235,234, + 234,234,234,234,234,234,234,234,234,234,234,234,234,234,233,233,233, + 133,138,136,255,255,255,255,255,255,255,255,255,255,255,255,171,174, + 173,133,138,136,133,138,136,133,138,136,133,138,136,133,138,136,133, + 138,136,133,138,136,133,138,136,133,138,136,133,138,136,171,174,173, + 255,255,255,255,255,255); Const - stdimg_menu_quit_16 : Array[0..821] of byte = ( + stdimg_btn_cancel_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31, - 163, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31,163, 31, - 31,163, 31, 31,163, 31, 31,163,255, 0,255,255, 0,255,255, 0,255, - 33, 33,176, 6, 5,193, 0, 0,194, 0, 0,201, 0, 0,206, 0, 0, - 217, 24, 24,228, 26, 26,234, 12, 15,235, 6, 12,236, 26, 36,239, 36, - 48,241, 50, 67,251, 42, 47,189,255, 0,255,255, 0,255, 16, 16,173, - 0, 0,181, 0, 0,190, 0, 0,195,108,108,225,216,216,249,255,255, - 255,255,255,255,227,227,253,133,136,243, 24, 34,233, 31, 43,235, 45, - 60,239, 39, 46,196,255, 0,255,255, 0,255, 16, 16,170, 0, 0,181, - 1, 1,187,142,142,229,255,255,255,223,223,246,144,144,233,139,139, - 235,212,212,246,255,255,255,173,177,248, 32, 44,235, 42, 57,239, 38, - 45,195,255, 0,255,255, 0,255, 18, 18,168, 1, 1,179,105,105,214, - 255,255,255,173,173,233, 10, 10,206, 0, 0,213, 0, 0,221, 2, 2, - 224,149,151,238,255,255,255,147,153,246, 29, 43,237, 37, 44,193,255, - 0,255,255, 0,255, 23, 23,166, 23, 23,185,211,211,242,246,246,252, - 51, 51,207, 30, 30,212, 31, 31,218, 19, 19,222, 0, 0,227, 7, 10, - 227,228,228,250,235,236,254, 41, 53,238, 34, 40,192,255, 0,255,255, - 0,255, 27, 27,164, 51, 51,190,239,239,250,220,220,246, 44, 44,203, - 54, 54,212, 50, 50,217, 54, 54,223, 57, 56,230, 18, 19,230,181,182, - 247,255,255,255, 51, 60,238, 30, 35,190,255, 0,255,255, 0,255, 31, - 31,163, 58, 58,188,227,227,245,239,239,251, 67, 67,206, 61, 61,210, - 155,155,235,158,158,239, 73, 73,227, 74, 74,233,222,222,252,239,240, - 253, 30, 36,234, 28, 31,189,255, 0,255,255, 0,255, 36, 36,162, 65, - 65,188,170,170,222,255,255,255,159,159,229, 74, 74,208,238,238,251, - 244,244,253, 84, 84,224,149,149,239,255,255,255,197,197,244, 14, 16, - 231, 22, 23,187,255, 0,255,255, 0,255, 40, 40,162, 89, 89,193, 97, - 97,194,221,221,238,255,255,255,147,147,224,225,225,247,230,230,249, - 160,160,235,255,255,255,233,233,246,131,131,230, 99, 99,237, 23, 23, - 185,255, 0,255,255, 0,255, 46, 46,163,107,107,195,100,100,195,113, - 113,198,175,175,215,133,133,212,231,231,248,233,233,250,165,165,225, - 208,208,232,135,135,222,123,123,229,141,141,234, 53, 53,186,255, 0, - 255,255, 0,255, 55, 55,165,120,120,195,118,118,196,118,118,200,113, - 113,199,123,123,207,241,241,251,246,246,253,131,131,216,128,128,215, - 137,137,224,143,143,225,150,150,229, 68, 68,186,255, 0,255,255, 0, - 255, 84, 84,167,172,172,222,170,170,219,172,172,222,175,175,225,179, - 179,229,176,176,228,179,179,231,189,189,237,191,191,238,195,195,239, - 197,197,240,209,209,247,163,163,193,255, 0,255,255, 0,255,255, 0, - 255,103,103,175,100,100,172,100,100,171,101,101,172,101,101,172,101, - 101,173,102,102,173,102,102,173,102,102,173,103,103,173,104,104,173, - 104,104,175,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255, 63, 61,237, 59, 56,235,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 33, + 31,227, 30, 28,226,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 74, 71,240, 79, 76,242, 64, 62,237, 60, 57,235,255,255, + 255,255,255,255,255,255,255,255,255,255, 39, 37,229, 36, 34,228, 49, + 47,234, 31, 29,226,255,255,255,255,255,255,255,255,255, 84, 81,243, + 88, 86,245, 99, 97,250, 88, 85,246, 65, 63,237, 61, 58,236,255,255, + 255,255,255,255, 48, 45,231, 44, 42,230, 65, 63,241, 76, 74,246, 49, + 47,234, 31, 29,226,255,255,255,255,255,255, 89, 86,245, 91, 88,246, + 101, 98,250,113,112,255, 89, 86,246, 66, 64,238, 62, 59,236, 57, 55, + 235, 53, 50,233, 71, 69,242, 99, 98,255, 74, 72,244, 47, 45,233, 34, + 32,227,255,255,255,255,255,255,255,255,255, 90, 87,245, 91, 89,246, + 102, 99,250,116,113,255, 90, 88,246, 67, 65,238, 62, 60,236, 80, 77, + 244,104,103,255, 80, 78,245, 54, 52,235, 42, 39,229,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 91, 88,246, 92, 90,246, + 103,100,250,116,114,255,115,112,255,112,110,255,110,108,255, 87, 85, + 247, 63, 61,238, 50, 48,232,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 92, 89,246, 93, 91,247, + 121,118,255, 89, 86,255, 87, 84,255,114,112,255, 72, 70,240, 60, 57, + 235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 97, 94,248, 93, 90,246,125,121,255, + 94, 91,255, 91, 88,255,118,116,255, 70, 67,239, 65, 63,237,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,105,103,251,102, 99,249,112,109,251,128,126,255,126,123,255, + 124,121,255,121,119,255, 94, 92,247, 71, 68,239, 66, 64,238,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,113,110,253,110, + 107,252,119,116,253,134,130,255,118,115,252,100, 98,248, 96, 93,247, + 109,106,250,123,121,255, 96, 93,247, 72, 69,239, 67, 65,238,255,255, + 255,255,255,255,255,255,255,118,115,255,116,113,254,125,122,254,138, + 135,255,124,121,253,108,105,251, 99, 97,249, 95, 92,247, 97, 94,248, + 110,108,250,125,122,255, 97, 95,247, 73, 70,240, 68, 65,238,255,255, + 255,255,255,255,119,116,255,122,119,255,129,126,255,129,126,254,116, + 113,253,108,105,251,255,255,255,255,255,255, 96, 93,247, 98, 95,248, + 111,109,251,126,124,255, 98, 95,248, 74, 71,240, 69, 66,238,255,255, + 255,255,255,255,119,116,255,122,119,255,121,118,254,114,111,253,255, + 255,255,255,255,255,255,255,255,255,255,255, 97, 94,248,100, 97,248, + 106,104,249, 84, 81,243, 79, 77,242,255,255,255,255,255,255,255,255, + 255,255,255,255,119,116,255,119,116,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 98, 95,248, 93, 91,247, + 89, 86,245,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 99, 96,248,255,255,255, + 255,255,255,255,255,255); Const - stdimg_arrow_up : Array[0..77] of byte = ( - 66, 77, 78, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 40, 0, 0, - 0, 7, 0, 0, 0, 4, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 2, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,130, 0, - 0, 0,198, 0, 0, 0,238, 0, 0, 0); + stdimg_edit_paste_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,155,181,197, 18, 80,118, 1, 68,108, 1, 68, + 108, 1, 68,108, 1, 68,108, 1, 68,108, 1, 68,108, 1, 68,108, 1, + 68,108, 1, 68,108, 1, 68,108, 19, 80,117,162,186,201,255, 0,255, + 255, 0,255, 13, 76,115, 35,127,186, 59,125,167,100,111,115,104,108, + 106,104,108,106,104,108,106,104,108,106,104,108,106, 61,124,163, 61, + 124,163, 61,124,163, 34,123,179, 16, 78,116,255, 0,255,255, 0,255, + 9, 74,114, 38,135,197, 99,109,112,237,238,237,254,254,254,254,254, + 254,254,254,254,238,239,239,253,254,254,100,105,103, 39,135,197, 39, + 135,197, 39,135,197, 3, 68,108,255, 0,255,255, 0,255, 9, 74,114, + 38,135,197,100,104,102,255,255,255,228,231,231,213,216,216,190,194, + 193,180,183,183,255,255,255,255,255,255,100,105,103, 39,135,197, 40, + 134,194, 3, 68,108,255, 0,255,255, 0,255, 9, 74,114, 38,135,197, + 100,104,102,255,255,255,231,233,233,229,231,231,214,217,217,182,185, + 185,255,255,255,255,255,255,255,255,255,100,105,103, 40,134,194, 3, + 68,108,255, 0,255,255, 0,255, 9, 75,114, 38,135,197,100,104,102, + 255,255,255,234,236,236,232,234,234,230,232,232,203,206,205,182,186, + 185,181,185,184,255,255,255,100,105,103, 40,134,194, 3, 68,108,255, + 0,255,255, 0,255, 9, 75,114, 38,135,197,100,104,102,255,255,255, + 237,238,238,235,236,236,233,235,235,231,233,233,216,218,218,202,205, + 204,255,255,255,100,105,103, 40,134,194, 3, 68,108,255, 0,255,255, + 0,255, 9, 75,114, 38,135,197,100,104,102,255,255,255,239,240,240, + 238,239,239,236,237,237,234,235,235,232,234,234,217,219,219,255,255, + 255,100,105,103, 40,134,194, 3, 68,108,255, 0,255,255, 0,255, 9, + 75,114, 38,135,197,100,104,102,255,255,255,239,240,240,181,181,179, + 181,181,179,180,180,178,178,178,177,232,234,234,255,255,255,100,105, + 103, 40,134,194, 3, 68,108,255, 0,255,255, 0,255, 9, 75,115, 38, + 135,197,100,104,102,255,255,255,239,240,240,239,240,240,239,240,240, + 239,240,240,237,239,239,235,237,237,255,255,255,100,105,103, 40,134, + 194, 3, 68,108,255, 0,255,255, 0,255, 9, 75,115, 38,135,197,100, + 104,102,255,255,255,239,240,240,181,181,179,181,181,179,181,181,179, + 181,181,179,238,239,239,255,255,255,100,105,103, 40,134,194, 3, 68, + 108,255, 0,255,255, 0,255, 9, 75,115, 39,136,198,100,104,102,255, + 255,255,239,240,240,239,240,240,239,240,240,239,240,240,239,240,240, + 239,240,240,255,255,255,100,105,103, 40,134,194, 3, 68,108,255, 0, + 255,255, 0,255, 9, 75,115, 39,136,198,100,111,113,241,241,241,224, + 224,224,187,187,187,187,187,187,187,187,187,187,187,187,224,224,224, + 242,242,242,100,109,110, 39,135,197, 3, 68,108,255, 0,255,255, 0, + 255, 13, 77,116, 36,132,192, 62,126,164,100,109,112, 94, 94, 94,124, + 127,127,125,128,128,125,128,128,123,126,126, 94, 94, 94,100,108,110, + 64,124,161, 35,127,185, 16, 78,117,255, 0,255,255, 0,255,155,182, + 197, 18, 80,119, 1, 68,108, 3, 68,107, 91, 92, 92,137,149,149,138, + 151,151,138,151,151,137,149,149, 91, 92, 92, 3, 68,107, 1, 68,108, + 19, 81,118,162,186,201,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,137,138,138, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92,137,138,138,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); Const - stdimg_executable_16 : Array[0..821] of byte = ( + stdimg_help_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, - 54,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218,199,195,195,159, - 157,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,120, 72, 54,218,199,195,188,151,145,204,176,172,221,202, - 200,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54, - 218,199,195,181,142,133,182,144,135,183,145,137,217,197,193,190,154, - 148,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,120, 72, 54,218,199,195,174,136,122, - 175,135,122,176,137,124,193,162,152,216,196,191,188,153,144,181,143, - 133,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,120, 72, 54,218,199,195,201,177,167,200,176,165,187,155,143, - 183,149,136,171,131,116,198,170,161,194,163,153,175,136,123,177,137, - 125,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,207,185,175,207,186,176,208,187,177,209,187,178,202,178,167, - 187,156,142,205,181,171,209,188,179,173,134,119,171,130,115,172,132, - 117,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,204,182,171,205,183,172,206,184,173,206,185,174,199,174,162, - 176,140,124,191,162,149,203,179,169,170,130,113,153,111, 86,120, 72, - 54,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,202,180,167,203,180,168,203,181,169,204,182,170,176,142,124, - 180,148,131,177,144,127,153,111, 86,120, 72, 54,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,200,177,163,200,178,164,201,178,165,186,158,141,150,106, 81, - 153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,198,174,159,198,175,160,186,159,141,144,100, 72,120, 72, 54, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,195,171,155,159,122, 95,120, 72, 54,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255,192,161,139,164,117, 85,142, 85, 45,142, 85, 45,165,119, 87,193, + 161,139,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,198,169,149,147, 91, 53,203,175, + 155,229,214,203,248,244,241,249,245,242,232,219,209,211,186,167,149, + 94, 56,199,171,151,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,163,116, 84,175,134,105,243,237,233,221,201,186,199,165, + 139,187,145,113,193,153,121,213,183,159,233,218,205,248,243,239,183, + 145,117,166,120, 88,255, 0,255,255, 0,255,255, 0,255,199,170,150, + 174,133,105,243,238,233,183,143,114,165,114, 76,179,135,101,255,255, + 255,255,255,255,193,151,116,197,155,120,215,185,160,249,245,241,180, + 140,112,199,171,151,255, 0,255,255, 0,255,146, 91, 52,242,235,230, + 177,135,105,157,103, 64,163,111, 73,178,132, 98,255,255,255,255,255, + 255,189,146,111,193,150,114,197,155,120,214,183,157,247,241,237,147, + 93, 54,255, 0,255,192,161,139,195,166,145,211,188,173,148, 92, 51, + 154,100, 60,161,108, 69,169,120, 82,200,168,143,204,173,148,183,137, + 101,187,143,107,191,147,112,193,150,115,231,215,201,207,181,161,193, + 161,139,162,115, 83,221,204,192,175,134,106,145, 88, 47,151, 96, 56, + 157,103, 64,167,118, 81,228,212,200,229,214,202,180,134, 98,182,135, + 99,185,139,103,186,142,106,209,178,155,230,215,204,165,118, 86,141, + 83, 43,245,240,237,148, 94, 56,142, 83, 42,148, 91, 51,153, 98, 58, + 159,105, 66,243,237,232,255,255,255,208,181,160,176,127, 90,178,131, + 94,180,133, 96,189,148,117,248,243,240,142, 84, 45,141, 83, 43,245, + 240,237,147, 92, 54,138, 79, 37,144, 86, 45,149, 93, 52,154, 99, 59, + 181,139,109,252,251,249,254,254,254,193,157,130,172,122, 84,173,124, + 86,183,141,108,247,243,239,142, 84, 44,162,115, 83,221,204,192,172, + 130,101,135, 74, 32,139, 80, 39,144, 86, 45,149, 92, 52,153, 98, 58, + 194,161,137,255,255,255,243,236,232,165,114, 75,166,115, 77,195,161, + 134,225,210,198,164,117, 85,192,161,139,195,165,144,208,185,169,135, + 74, 32,135, 74, 32,159,110, 75,160,111, 77,148, 91, 50,168,122, 89, + 255,255,255,253,252,251,161,109, 70,159,106, 67,218,198,183,198,170, + 149,192,161,139,255, 0,255,146, 92, 53,241,234,229,165,120, 88,135, + 74, 32,176,136,108,254,253,253,233,222,214,246,242,239,255,255,255, + 220,202,189,152, 96, 56,179,137,107,242,235,230,145, 91, 52,255, 0, + 255,255, 0,255,198,169,149,173,131,103,242,235,231,166,120, 89,156, + 105, 71,222,206,194,247,243,240,241,234,230,208,184,167,160,111, 77, + 173,130,100,243,237,232,171,128, 98,198,169,149,255, 0,255,255, 0, + 255,255, 0,255,163,116, 84,170,127, 97,240,232,227,208,185,169,172, + 130,101,150, 96, 59,150, 96, 59,172,130,101,209,186,170,240,233,228, + 170,128, 98,163,116, 84,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,198,169,149,145, 91, 52,193,162,141,219,201,189,244, + 239,235,244,239,235,219,201,189,193,163,141,145, 90, 51,199,170,150, 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255,255, 0,255,255, 0,255,192,161,139,162,115, 83,141, 83, 43,141, + 83, 43,162,115, 83,192,161,139,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255); Const - stdimg_dialog_information_32 : Array[0..3125] of byte = ( - 66, 77, 54, 12, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 32, 0, 0, 0, 32, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 12, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + stdimg_list_remove_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254, - 254,254,252,252,252,248,248,248,245,245,245,243,243,243,241,241,241, - 239,239,239,239,239,239,241,241,241,243,243,243,245,245,245,249,249, - 249,252,252,252,254,254,254,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,254,254,254,249,249,249,243,243,243,238,238,238,233,233,233,229, - 229,229,223,223,223,216,216,216,201,201,201,198,198,198,207,207,207, - 209,209,209,214,214,214,221,221,221,228,228,228,232,232,232,236,236, - 236,242,242,242,250,250,250,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,254,254,254,248,248,248,242,242, - 242,236,236,236,230,230,230,223,223,223,210,210,210,195,195,195,117, - 117,117, 92, 92, 92, 92, 92, 92,112,112,112,170,170,170,183,183,183, - 194,194,194,206,206,206,218,218,218,229,229,229,234,234,234,240,240, - 240,246,246,246,254,254,254,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,249,249,249,243,243,243,238,238,238,232,232, - 232,226,226,226,215,215,215,154,154,154, 97, 97, 97,185,185,185,185, - 185,185,106,106,106,142,142,142,191,191,191,201,201,201,211,211,211, - 223,223,223,230,230,230,236,236,236,241,241,241,247,247,247,254,254, - 254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,251,251,251,247,247,247,242,242,242,208,214,214,123,144, - 144, 53, 84, 84, 44, 77, 77, 46, 80, 80, 44, 79, 79, 46, 78, 78, 64, - 90, 90,114,138,138,222,223,223,233,233,233,236,236,236,241,241,241, - 245,245,245,250,250,250,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255, 51, 88, 88, 65,125,125,118,178,177,148,198, - 196,177,224,221,167,213,210,154,203,200, 93,137,136, 63,104,105, 69, - 101,101,242,244,244,252,252,252,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 45, 88, 88, 90,161,161,242,251,250,197,244,242,198,247,244,185,233, - 231,141,183,181,126,169,169, 97,143,145, 49, 89, 89,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,154,174,174, 61,112,112, - 134,166,165,192,241,238,198,247,244,189,239,237,171,223,221, 80,123, - 123, 62,102,102,116,140,140,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255, 57, 95, 95, 71,134,133,193,230,229,186,234,232, - 183,230,227,167,210,209,143,186,186,135,185,185, 97,143,145, 49, 85, - 85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 71, - 123,122,111,177,177,183,176,175,132,129,125,118,108,106,115,104,101, - 122,116,113,116,120,118, 85,106,105, 70,101,101,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,129,141,139,118,111,106,181, - 174,170,220,215,211,231,228,225,235,231,228,235,232,230,214,214,211, - 144,139,137,122,117,115,251,250,250,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,229,227,226,131,118,114,218,210,203,206,205,198,145,154,149,167, - 186,181,167,192,189,142,166,166,201,221,219,238,235,233,178,171,168, - 173,166,164,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,149,137,134,221,205, - 197,240,227,218,206,203,194,159,161,158,202,210,206,203,217,215,151, - 161,160,225,233,233,253,250,249,254,243,242,133,121,118,241,240,240, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,245,244,244,127,114,110,244,229,220,238,225,213,218,211, - 205,229,223,218,250,246,242,252,251,248,223,222,222,221,221,220,253, - 251,250,253,244,242,190,178,175,209,205,204,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,214,211,210, - 160,146,140,242,226,214,239,224,213,233,227,220,245,238,232,249,245, - 241,252,249,247,251,250,248,224,224,223,251,249,247,252,245,242,215, - 205,202,183,175,173,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,229,227,226,130,117,114,223,206,194,236,218,203, - 242,231,223,245,236,228,245,237,230,248,243,238,250,247,244,252,249, - 247,248,246,245,252,248,246,250,244,239,251,241,237,139,127,124,209, - 205,204,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,235,233,233,129, - 116,112,213,193,179,233,210,193,231,212,194,248,243,238,240,230,221, - 240,237,233,241,239,237,238,237,237,234,233,231,228,226,226,235,234, - 232,247,241,235,248,238,232,248,237,233,139,127,123,218,214,212,255, + 255,255,255,255,255,255,255,255,182,132, 93,164,101, 52,164,101, 52, + 164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, + 52,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, + 255,255,255,255,255,164,101, 52,229,204,180,219,183,149,219,182,148, + 218,180,146,218,179,144,217,173,134,216,170,131,215,168,127,215,166, + 125,224,190,159,164,101, 52,255,255,255,255,255,255,255,255,255,255, + 255,255,164,101, 52,232,211,192,231,209,187,231,209,188,230,206,183, + 230,206,183,230,206,183,230,206,183,230,205,182,230,204,181,230,204, + 182,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,182, + 132, 93,164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52, + 164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52,182,132, + 93,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,254,254,254,142,129,124,202,177,157,226,199,177,222, - 195,169,243,234,226,250,247,246,248,247,246,239,234,231,236,231,226, - 230,226,222,229,226,222,225,223,221,226,226,226,212,210,208,242,232, - 222,245,231,224,243,230,225,133,120,117,249,249,249,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,206,202, - 200,158,136,124,222,190,165,213,178,146,220,191,164,251,249,247,240, - 230,221,238,225,213,242,230,221,243,234,224,244,235,227,245,237,230, - 245,237,230,216,213,211,206,205,205,240,227,216,236,221,207,246,232, - 224,194,180,172,193,188,185,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,154,141,137,201,167,145,208,169, - 134,211,173,140,227,204,184,237,221,207,239,226,214,242,231,221,243, - 234,225,245,237,230,246,239,232,245,237,229,242,233,223,241,231,220, - 245,236,228,237,222,209,233,215,200,234,216,200,240,225,219,148,136, - 133,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,129,114,110,220,181,158,201,154,113,216,184,155,233,215, - 198,236,220,206,238,225,212,241,228,217,242,231,222,243,234,226,245, - 236,228,245,237,230,245,236,229,241,229,218,236,221,207,233,216,200, - 231,211,192,227,203,182,252,239,235,125,113,109,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,118,104,100, - 227,182,158,205,152,111,226,202,180,233,214,198,235,219,204,237,223, - 209,239,226,214,241,230,219,242,231,222,243,233,224,243,234,224,243, - 234,225,242,231,221,236,219,205,230,210,191,227,203,182,223,196,171, - 252,239,236,118,105,101,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,128,113,109,223,177,154,212,153,114, - 228,207,187,232,214,196,234,217,202,236,222,207,238,224,211,240,227, - 216,240,229,217,242,230,220,241,230,220,241,230,219,240,229,218,237, - 223,210,226,202,180,223,196,172,221,191,166,249,234,230,127,114,110, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,149,135,131,207,164,142,221,161,125,230,202,180,232,213,195, - 234,217,201,235,219,204,237,222,208,238,225,212,239,226,215,240,227, - 216,239,227,215,239,226,214,239,226,214,238,224,210,223,197,173,218, - 188,160,224,195,173,232,214,204,148,135,131,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,196,191,189,170, - 138,124,229,173,143,224,178,149,234,213,196,234,215,199,234,218,202, - 237,221,206,237,223,209,238,223,211,238,224,212,238,224,212,238,224, - 211,236,222,208,236,220,205,219,189,162,214,179,148,236,214,198,185, - 166,155,196,191,189,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,246,245,245,130,115,110,224,175,150,223, - 159,123,230,196,174,234,214,197,234,216,201,236,219,204,236,220,206, - 236,221,207,237,222,209,237,222,208,236,220,206,235,219,204,232,213, - 195,211,175,143,217,182,153,239,220,209,130,116,111,246,245,245,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,199,192,191,154,129,117,231,183,157,222,157,120,226, - 187,161,234,213,196,234,216,200,235,218,203,236,219,205,236,220,206, - 236,219,205,235,218,202,234,217,201,217,186,156,211,173,139,243,224, - 213,163,143,131,199,192,191,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254, - 254,162,149,146,166,137,122,232,185,162,223,162,128,216,161,125,221, - 185,157,226,201,179,231,212,194,234,216,200,230,210,192,225,200,177, - 214,180,149,213,175,144,240,219,207,177,154,142,162,149,146,254,254, - 254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,252,251,251,161,149, - 146,147,127,118,221,179,158,233,184,158,222,167,134,212,156,116,206, - 152,111,204,153,111,204,157,116,214,174,141,231,202,182,231,207,193, - 155,136,127,161,149,146,252,251,251,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_folder_open_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,199,193,192,127,112, - 108,165,139,127,207,169,149,230,192,173,236,202,183,237,204,187,232, - 201,185,212,181,165,170,148,137,128,113,109,199,193,192,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,250,250,249,206,202,200,162,150, - 146,134,119,113,120,106,102,120,106,102,134,119,113,162,150,146,206, - 202,200,250,250,249,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 165,129,103,139, 82, 41,139, 82, 41,157,108, 74,157,108, 74,157,108, + 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157, + 108, 74,139, 82, 41,145,110, 84,255,255,255,255,255,255,139, 82, 41, + 209,165,123,210,165,124,210,165,124,210,165,124,210,165,124,210,165, + 124,210,165,124,210,165,124,210,165,124,210,165,124,210,165,124,209, + 165,123,139, 82, 41,255,255,255,255,255,255,157,104, 63,208,161,116, + 207,159,114,207,159,114,207,159,114,207,159,114,207,159,114,207,159, + 114,207,159,114,207,159,114,207,159,114,207,159,114,208,161,116,139, + 82, 41,255,255,255,139, 82, 41,196,151,112,208,162,119,207,160,117, + 207,160,117,207,160,117,207,160,117,207,160,117,207,160,117,207,160, + 117,207,160,117,207,160,117,207,160,117,208,162,119,196,151,112,139, + 82, 41,139, 82, 41,206,164,127,210,165,123,209,164,122,209,164,122, + 209,164,122,209,164,122,209,164,122,209,164,122,209,164,122,209,164, + 122,209,164,122,209,164,122,210,166,124,212,169,129,139, 82, 41,139, + 82, 41,215,180,148,220,186,153,220,186,153,220,186,153,220,185,152, + 216,178,142,212,169,129,211,168,127,211,168,127,211,168,127,211,168, + 127,211,168,127,212,169,129,209,169,133,139, 82, 41,139, 82, 41,139, + 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41, + 210,173,142,218,180,145,217,179,145,217,179,145,217,179,145,217,179, + 145,217,180,145,217,183,152,139, 82, 41,255,255,255,139, 82, 41,127, + 120,111,253,253,253,248,249,249,243,241,240,210,190,176,139, 82, 41, + 139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, + 41,139, 82, 41,139, 82, 41,255,255,255,139, 82, 41,142,136,127,242, + 242,242,241,242,241,241,241,241,239,239,238,239,239,238,239,239,238, + 239,239,238,239,239,238,239,239,238,239,239,238,125,110, 96,139, 82, + 41,255,255,255,255,255,255,139, 82, 41,177,154,132,151,138,124,150, + 137,123,148,136,121,148,137,123,149,142,131,149,141,130,147,139,129, + 145,137,127,143,135,124,141,133,123,169,151,133,139, 82, 41,255,255, + 255,255,255,255,139, 82, 41,218,183,153,212,172,137,212,172,137,213, + 174,140,217,183,154,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41, + 139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,255,255,255,255,255, + 255,157,103, 62,197,159,132,213,181,155,213,181,155,211,179,152,139, + 82, 41,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255); + 255,255,255,255,255,255); Const - stdimg_link : Array[0..449] of byte = ( - 66, 77,194, 1, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 11, 0, 0, 0, 11, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 140, 1, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255,255,255, + stdimg_edit_cut_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,172,172,226, 37, 37,178, 26, 26,175, 29, 29, + 174,209,209,239,255,255,255,255,255,255,255,255,255,255,255,255,172, + 172,226, 70, 70,190, 27, 27,176, 39, 39,179,209,209,239,255,255,255, + 255,255,255, 49, 49,182, 41, 41,219, 36, 36,209, 31, 31,206, 31, 31, + 177,209,209,239,255,255,255,255,255,255,209,209,239, 29, 29,177, 36, + 36,212, 34, 34,208, 31, 31,206, 39, 39,178,255,255,255,255,255,255, + 19, 19,173, 33, 33,208,255,255,255,117,117,213, 35, 35,211, 52, 52, + 184,255,255,255,255,255,255, 59, 59,187, 37, 37,214,114,114,214,255, + 255,255, 35, 35,210, 22, 22,173,255,255,255,255,255,255, 43, 43,179, + 37, 37,213,134,134,213,255,255,255, 38, 38,208, 13, 13,170,255,255, + 255,255,255,255, 5, 5,169, 38, 39,205,255,255,255,137,137,214, 34, + 34,209, 43, 43,179,255,255,255,255,255,255,172,172,226, 7, 7,168, + 35, 35,209, 73, 73,192, 26, 27,194, 1, 1,166,255,255,255,241,242, + 250, 30, 31,205, 25, 27,193, 74, 74,193, 33, 33,206, 7, 7,167,143, + 143,216,255,255,255,255,255,255,255,255,255,142,142,215, 9, 9,170, + 34, 34,210, 31, 31,206, 16, 17,184, 92, 94,196, 6, 7,169, 26, 26, + 201, 34, 34,209, 33, 33,203, 12, 12,170,171,171,225,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,127,127,210, + 33, 33,175, 6, 6,166, 70, 75,163, 2, 2,166, 25, 26,199, 37, 37, + 178,131,131,211,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,212,214,213, + 132,137,137,195,198,197,175,178,179, 52, 55,160,231,232,232,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255, - 255,255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255, - 255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255, - 255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255, - 255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, - 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128, - 128,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, - 128,128,128,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, - 0, 0,128,128,128,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,181,184,183,184,188,187, + 230,232,231,167,172,170,139,144,142,184,187,186,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 0, 0, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128, 0, 0, 0, 0, 0, 0); + 255,255,255,255,255,231,232,232,136,141,139,223,225,225,245,246,245, + 151,156,154,165,169,168,140,145,143,231,232,232,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,152,156,154,178,182,181,247,247,247,142,147,145,156,160,159, + 179,182,181,182,187,185,172,175,174,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,228,229,229,136, + 141,139,217,220,219,239,240,239,171,175,173,184,187,186,179,184,182, + 203,206,205,137,142,140,197,199,198,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,144,148,146,176,181,179,246, + 247,247,155,159,157,202,204,203,255,255,255,141,146,144,201,206,204, + 172,176,175,156,160,159,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,136,141,139,208,212,210,239,240,239,179, + 183,181,255,255,255,255,255,255,225,227,226,167,172,170,195,200,198, + 142,147,145,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,143,148,146,247,247,247,170,173,172,202,204,203,255, + 255,255,255,255,255,255,255,255,152,156,155,208,211,210,169,173,171, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,221,223,222,145,149,148,162,166,165,255,255,255,255,255,255,255, + 255,255,255,255,255,185,187,186,148,152,150,255,255,255,255,255,255, + 255,255,255,255,255,255); Const - stdimg_menu_exit_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,165,193,214,128,167,197, 99,148,184, 22, 94,147, 29, 99,151, - 153,153,153,113,113,113, 84, 84, 84, 81, 81, 81, 79, 79, 79, 76, 76, - 76, 74, 74, 74, 71, 71, 71, 69, 69, 69, 37,103,157, 50,116,168, 61, - 124,175, 71,132,181, 78,138,186, 62,126,173, 32,101,152,255,255,255, - 255,255,255, 88, 88, 88,162,162,162,162,162,162,163,163,163,164,164, - 164,164,164,164,165,165,165, 47,111,165,120,171,210,120,171,211,115, - 167,209,105,160,205, 64,127,174, 35,103,154,255,255,255,255,255,255, - 92, 92, 92,161,161,161, 60,115, 64,160,161,161,163,163,163,163,163, - 163,164,164,164, 54,116,170,125,175,212, 91,154,201, 84,149,199, 88, - 150,200, 65,128,174, 38,105,157,255,255,255,255,255,255, 96, 96, 96, - 160,160,160, 61,118, 65, 54,113, 57,162,162,162,162,162,162,163,163, - 163, 61,121,176,130,179,215, 98,159,204, 90,154,201, 94,155,202, 67, - 129,175, 44,109,160, 55,130, 62, 52,126, 59, 49,121, 55, 46,117, 52, - 73,145, 80, 70,143, 76, 57,115, 61,161,161,161,162,162,162, 69,126, - 180,136,183,217,103,163,207, 97,158,204, 99,159,204, 69,131,177, 49, - 113,164, 59,135, 66,137,203,146,132,200,141,128,198,136,123,195,131, - 119,193,127, 71,143, 77, 59,116, 63,161,161,161, 76,132,186,141,187, - 219,110,168,209,102,166,209, 95,180,223, 71,133,177, 55,117,169, 62, - 139, 70,143,206,153,125,198,135,120,195,129,115,192,124,116,192,124, - 121,194,129, 73,144, 79, 84,127, 87, 84,137,191,148,191,221,117,173, - 212, 99,184,225, 75,212,255, 66,139,184, 61,122,173, 65,144, 74,148, - 210,159,145,208,154,141,205,150,137,203,146,132,200,141, 81,152, 88, - 65,124, 70,159,159,159, 90,142,196,152,195,224,124,179,215,116,175, - 214, 94,196,237, 75,136,179, 69,127,178, 68,148, 77, 66,145, 75, 63, - 141, 72, 61,137, 69, 93,164,101, 90,160, 97, 69,131, 75,158,158,158, - 158,158,158, 96,146,201,158,199,226,131,184,218,125,180,215,126,179, - 215, 79,137,180, 75,132,183,255,255,255,255,255,255,119,119,119,154, - 154,154, 61,138, 69, 73,138, 79,156,156,156,157,157,157,157,157,157, - 102,150,204,162,203,227,137,189,220,131,185,218,132,185,218, 81,139, - 181, 82,137,188,255,255,255,255,255,255,122,122,122,153,153,153, 82, - 145, 89,153,154,153,155,155,155,156,156,156,156,156,156,108,154,208, - 167,206,229,143,193,223,137,189,220,139,189,220, 83,141,182, 90,142, - 194,255,255,255,255,255,255,125,125,125,153,153,153,153,153,153,154, - 154,154,154,154,154,155,155,155,155,155,155,111,157,211,170,209,231, - 171,209,231,152,199,225,145,194,222, 86,143,183, 96,147,198,255,255, - 255,255,255,255,128,128,128,126,126,126,124,124,124,122,122,122,119, - 119,119,117,117,117,114,114,114,113,158,212,111,158,214,135,178,220, - 171,211,232,169,208,230, 88,144,184,103,151,203,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,132,172,220,109,156,212, - 133,177,218, 90,145,185,109,156,207,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,177,202,232, - 108,156,211,112,158,210); - -Const - stdimg_menu_save_16 : Array[0..821] of byte = ( + stdimg_menu_save_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, @@ -1763,264 +1800,276 @@ Const 231,206,188,255,255,255); Const - stdimg_btn_cancel_16 : Array[0..821] of byte = ( + stdimg_arrow_up : Array[0..149] of byte = ( + 66, 77,150, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 7, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 96, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, + 255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, + 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, + 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0); + +Const + stdimg_executable_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255, 63, 61,237, 59, 56,235,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 33, - 31,227, 30, 28,226,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 74, 71,240, 79, 76,242, 64, 62,237, 60, 57,235,255,255, - 255,255,255,255,255,255,255,255,255,255, 39, 37,229, 36, 34,228, 49, - 47,234, 31, 29,226,255,255,255,255,255,255,255,255,255, 84, 81,243, - 88, 86,245, 99, 97,250, 88, 85,246, 65, 63,237, 61, 58,236,255,255, - 255,255,255,255, 48, 45,231, 44, 42,230, 65, 63,241, 76, 74,246, 49, - 47,234, 31, 29,226,255,255,255,255,255,255, 89, 86,245, 91, 88,246, - 101, 98,250,113,112,255, 89, 86,246, 66, 64,238, 62, 59,236, 57, 55, - 235, 53, 50,233, 71, 69,242, 99, 98,255, 74, 72,244, 47, 45,233, 34, - 32,227,255,255,255,255,255,255,255,255,255, 90, 87,245, 91, 89,246, - 102, 99,250,116,113,255, 90, 88,246, 67, 65,238, 62, 60,236, 80, 77, - 244,104,103,255, 80, 78,245, 54, 52,235, 42, 39,229,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 91, 88,246, 92, 90,246, - 103,100,250,116,114,255,115,112,255,112,110,255,110,108,255, 87, 85, - 247, 63, 61,238, 50, 48,232,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 92, 89,246, 93, 91,247, - 121,118,255, 89, 86,255, 87, 84,255,114,112,255, 72, 70,240, 60, 57, - 235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255, 97, 94,248, 93, 90,246,125,121,255, - 94, 91,255, 91, 88,255,118,116,255, 70, 67,239, 65, 63,237,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,105,103,251,102, 99,249,112,109,251,128,126,255,126,123,255, - 124,121,255,121,119,255, 94, 92,247, 71, 68,239, 66, 64,238,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,113,110,253,110, - 107,252,119,116,253,134,130,255,118,115,252,100, 98,248, 96, 93,247, - 109,106,250,123,121,255, 96, 93,247, 72, 69,239, 67, 65,238,255,255, - 255,255,255,255,255,255,255,118,115,255,116,113,254,125,122,254,138, - 135,255,124,121,253,108,105,251, 99, 97,249, 95, 92,247, 97, 94,248, - 110,108,250,125,122,255, 97, 95,247, 73, 70,240, 68, 65,238,255,255, - 255,255,255,255,119,116,255,122,119,255,129,126,255,129,126,254,116, - 113,253,108,105,251,255,255,255,255,255,255, 96, 93,247, 98, 95,248, - 111,109,251,126,124,255, 98, 95,248, 74, 71,240, 69, 66,238,255,255, - 255,255,255,255,119,116,255,122,119,255,121,118,254,114,111,253,255, - 255,255,255,255,255,255,255,255,255,255,255, 97, 94,248,100, 97,248, - 106,104,249, 84, 81,243, 79, 77,242,255,255,255,255,255,255,255,255, - 255,255,255,255,119,116,255,119,116,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 98, 95,248, 93, 91,247, - 89, 86,245,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 99, 96,248,255,255,255, - 255,255,255,255,255,255); + 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, + 54,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218,199,195,195,159, + 157,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,120, 72, 54,218,199,195,188,151,145,204,176,172,221,202, + 200,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54, + 218,199,195,181,142,133,182,144,135,183,145,137,217,197,193,190,154, + 148,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,120, 72, 54,218,199,195,174,136,122, + 175,135,122,176,137,124,193,162,152,216,196,191,188,153,144,181,143, + 133,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,120, 72, 54,218,199,195,201,177,167,200,176,165,187,155,143, + 183,149,136,171,131,116,198,170,161,194,163,153,175,136,123,177,137, + 125,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,207,185,175,207,186,176,208,187,177,209,187,178,202,178,167, + 187,156,142,205,181,171,209,188,179,173,134,119,171,130,115,172,132, + 117,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,204,182,171,205,183,172,206,184,173,206,185,174,199,174,162, + 176,140,124,191,162,149,203,179,169,170,130,113,153,111, 86,120, 72, + 54,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,202,180,167,203,180,168,203,181,169,204,182,170,176,142,124, + 180,148,131,177,144,127,153,111, 86,120, 72, 54,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,200,177,163,200,178,164,201,178,165,186,158,141,150,106, 81, + 153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,198,174,159,198,175,160,186,159,141,144,100, 72,120, 72, 54, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,195,171,155,159,122, 95,120, 72, 54,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); Const - stdimg_folder_up_16 : Array[0..821] of byte = ( + stdimg_search_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, - 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, - 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, - 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, - 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, - 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, - 134,213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213, - 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, - 215,175,138,215,175,138,143, 85, 42,143, 85, 42,143, 85, 42,143, 85, - 42,143, 85, 42,143, 85, 42,215,175,138,215,175,138,215,175,138,226, - 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, - 217,179,143,143, 85, 42,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,217,179,143,217,179,143,228,202,177,135, - 74, 32,135, 74, 32,230,205,181,217,179,143,143, 85, 42,205,164,128, - 143, 85, 42,205,164,128,143, 85, 42,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,217,179,143,230,205,181,135, 74, 32,135, - 74, 32,231,207,184,217,179,143,182,133, 95,143, 85, 42,143, 85, 42, - 143, 85, 42,182,133, 95,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,231,207,184,135, 74, 32,135, 74, 32,232, - 210,188,217,179,143,217,179,143,205,164,128,143, 85, 42,205,164,128, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,232,210,188,135, 74, 32,136, 76, 34,230,209,188,234, - 212,192,234,212,192,234,212,192,234,212,192,234,212,192,226,197,169, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,234,212,192,135, 74, 32,139, 77, 36,136, 76, 34,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,140, 82, 42,218,190,167,227,200,173, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,235,215, - 196,135, 74, 32,135, 74, 32,204,164,133,188,136, 95,188,136, 94,188, - 136, 94,188,136, 94,175,120, 80,144, 86, 46,220,194,172,236,217,199, - 236,217,199,236,217,199,236,217,199,236,217,199,233,214,196,138, 79, - 37,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,205, - 161,124,218,186,158,190,150,120,135, 74, 32,135, 74, 32,135, 74, 32, - 135, 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,168,147,225,210, - 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,218, - 191,169,144, 89, 49,225,210,200,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,210, - 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,225, - 210,200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,100,148,186, 34, + 103,157,129,168,198,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,111,156,194, 85,141,188,137,181,221, 24, + 95,151,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,123,164,202,100,151,197,157,193,228,102,153,199, 49,113,165,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,233,207,186, + 219,178,146,211,166,128,208,161,124,210,166,133,174,161,153,117,162, + 204,171,203,232,118,164,206, 64,123,175,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,232,202,176,232,201,174,245,225,205, + 247,229,211,247,229,209,243,221,200,223,186,156,199,168,145,134,174, + 213, 80,135,187,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,241,219,200,237,208,183,248,232,217,245,222,200,243,216,189, + 243,214,187,244,219,194,247,228,210,223,187,157,160,151,149,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,238, + 206,178,247,231,215,246,225,204,244,219,194,244,218,192,243,216,189, + 243,215,187,244,219,194,243,222,201,210,168,135,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,240,206,175,249, + 236,223,245,223,200,245,221,198,244,220,195,244,218,193,243,217,190, + 243,215,189,248,230,211,211,166,128,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,244,211,181,249,237,225,246, + 225,204,245,223,201,245,222,199,244,220,196,244,219,194,244,218,192, + 248,231,214,215,171,135,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,248,219,193,249,235,222,247,231,214,246, + 225,204,245,224,202,245,222,200,245,221,197,246,225,203,245,226,208, + 223,185,153,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,252,234,216,248,226,204,250,238,227,247,231,214,246, + 226,206,246,225,203,246,227,208,249,234,221,236,207,181,236,212,191, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,251,228,206,249,226,205,250,236,222,249,238,226,249, + 237,226,248,233,218,240,213,189,237,208,183,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,252,234,217,250,221,194,246,214,185,244,211,181,243, + 212,184,245,224,205,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); Const - stdimg_folder_open_16 : Array[0..821] of byte = ( + stdimg_menu_quit_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 165,129,103,139, 82, 41,139, 82, 41,157,108, 74,157,108, 74,157,108, - 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157, - 108, 74,139, 82, 41,145,110, 84,255,255,255,255,255,255,139, 82, 41, - 209,165,123,210,165,124,210,165,124,210,165,124,210,165,124,210,165, - 124,210,165,124,210,165,124,210,165,124,210,165,124,210,165,124,209, - 165,123,139, 82, 41,255,255,255,255,255,255,157,104, 63,208,161,116, - 207,159,114,207,159,114,207,159,114,207,159,114,207,159,114,207,159, - 114,207,159,114,207,159,114,207,159,114,207,159,114,208,161,116,139, - 82, 41,255,255,255,139, 82, 41,196,151,112,208,162,119,207,160,117, - 207,160,117,207,160,117,207,160,117,207,160,117,207,160,117,207,160, - 117,207,160,117,207,160,117,207,160,117,208,162,119,196,151,112,139, - 82, 41,139, 82, 41,206,164,127,210,165,123,209,164,122,209,164,122, - 209,164,122,209,164,122,209,164,122,209,164,122,209,164,122,209,164, - 122,209,164,122,209,164,122,210,166,124,212,169,129,139, 82, 41,139, - 82, 41,215,180,148,220,186,153,220,186,153,220,186,153,220,185,152, - 216,178,142,212,169,129,211,168,127,211,168,127,211,168,127,211,168, - 127,211,168,127,212,169,129,209,169,133,139, 82, 41,139, 82, 41,139, - 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41, - 210,173,142,218,180,145,217,179,145,217,179,145,217,179,145,217,179, - 145,217,180,145,217,183,152,139, 82, 41,255,255,255,139, 82, 41,127, - 120,111,253,253,253,248,249,249,243,241,240,210,190,176,139, 82, 41, - 139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, - 41,139, 82, 41,139, 82, 41,255,255,255,139, 82, 41,142,136,127,242, - 242,242,241,242,241,241,241,241,239,239,238,239,239,238,239,239,238, - 239,239,238,239,239,238,239,239,238,239,239,238,125,110, 96,139, 82, - 41,255,255,255,255,255,255,139, 82, 41,177,154,132,151,138,124,150, - 137,123,148,136,121,148,137,123,149,142,131,149,141,130,147,139,129, - 145,137,127,143,135,124,141,133,123,169,151,133,139, 82, 41,255,255, - 255,255,255,255,139, 82, 41,218,183,153,212,172,137,212,172,137,213, - 174,140,217,183,154,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41, - 139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,255,255,255,255,255, - 255,157,103, 62,197,159,132,213,181,155,213,181,155,211,179,152,139, - 82, 41,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31, + 163, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31,163, 31, + 31,163, 31, 31,163, 31, 31,163,255, 0,255,255, 0,255,255, 0,255, + 33, 33,176, 6, 5,193, 0, 0,194, 0, 0,201, 0, 0,206, 0, 0, + 217, 24, 24,228, 26, 26,234, 12, 15,235, 6, 12,236, 26, 36,239, 36, + 48,241, 50, 67,251, 42, 47,189,255, 0,255,255, 0,255, 16, 16,173, + 0, 0,181, 0, 0,190, 0, 0,195,108,108,225,216,216,249,255,255, + 255,255,255,255,227,227,253,133,136,243, 24, 34,233, 31, 43,235, 45, + 60,239, 39, 46,196,255, 0,255,255, 0,255, 16, 16,170, 0, 0,181, + 1, 1,187,142,142,229,255,255,255,223,223,246,144,144,233,139,139, + 235,212,212,246,255,255,255,173,177,248, 32, 44,235, 42, 57,239, 38, + 45,195,255, 0,255,255, 0,255, 18, 18,168, 1, 1,179,105,105,214, + 255,255,255,173,173,233, 10, 10,206, 0, 0,213, 0, 0,221, 2, 2, + 224,149,151,238,255,255,255,147,153,246, 29, 43,237, 37, 44,193,255, + 0,255,255, 0,255, 23, 23,166, 23, 23,185,211,211,242,246,246,252, + 51, 51,207, 30, 30,212, 31, 31,218, 19, 19,222, 0, 0,227, 7, 10, + 227,228,228,250,235,236,254, 41, 53,238, 34, 40,192,255, 0,255,255, + 0,255, 27, 27,164, 51, 51,190,239,239,250,220,220,246, 44, 44,203, + 54, 54,212, 50, 50,217, 54, 54,223, 57, 56,230, 18, 19,230,181,182, + 247,255,255,255, 51, 60,238, 30, 35,190,255, 0,255,255, 0,255, 31, + 31,163, 58, 58,188,227,227,245,239,239,251, 67, 67,206, 61, 61,210, + 155,155,235,158,158,239, 73, 73,227, 74, 74,233,222,222,252,239,240, + 253, 30, 36,234, 28, 31,189,255, 0,255,255, 0,255, 36, 36,162, 65, + 65,188,170,170,222,255,255,255,159,159,229, 74, 74,208,238,238,251, + 244,244,253, 84, 84,224,149,149,239,255,255,255,197,197,244, 14, 16, + 231, 22, 23,187,255, 0,255,255, 0,255, 40, 40,162, 89, 89,193, 97, + 97,194,221,221,238,255,255,255,147,147,224,225,225,247,230,230,249, + 160,160,235,255,255,255,233,233,246,131,131,230, 99, 99,237, 23, 23, + 185,255, 0,255,255, 0,255, 46, 46,163,107,107,195,100,100,195,113, + 113,198,175,175,215,133,133,212,231,231,248,233,233,250,165,165,225, + 208,208,232,135,135,222,123,123,229,141,141,234, 53, 53,186,255, 0, + 255,255, 0,255, 55, 55,165,120,120,195,118,118,196,118,118,200,113, + 113,199,123,123,207,241,241,251,246,246,253,131,131,216,128,128,215, + 137,137,224,143,143,225,150,150,229, 68, 68,186,255, 0,255,255, 0, + 255, 84, 84,167,172,172,222,170,170,219,172,172,222,175,175,225,179, + 179,229,176,176,228,179,179,231,189,189,237,191,191,238,195,195,239, + 197,197,240,209,209,247,163,163,193,255, 0,255,255, 0,255,255, 0, + 255,103,103,175,100,100,172,100,100,171,101,101,172,101,101,172,101, + 101,173,102,102,173,102,102,173,102,102,173,103,103,173,104,104,173, + 104,104,175,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); Const - stdimg_folder_16 : Array[0..821] of byte = ( + stdimg_menu_exit_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,165,193,214,128,167,197, 99,148,184, 22, 94,147, 29, 99,151, + 153,153,153,113,113,113, 84, 84, 84, 81, 81, 81, 79, 79, 79, 76, 76, + 76, 74, 74, 74, 71, 71, 71, 69, 69, 69, 37,103,157, 50,116,168, 61, + 124,175, 71,132,181, 78,138,186, 62,126,173, 32,101,152,255,255,255, + 255,255,255, 88, 88, 88,162,162,162,162,162,162,163,163,163,164,164, + 164,164,164,164,165,165,165, 47,111,165,120,171,210,120,171,211,115, + 167,209,105,160,205, 64,127,174, 35,103,154,255,255,255,255,255,255, + 92, 92, 92,161,161,161, 60,115, 64,160,161,161,163,163,163,163,163, + 163,164,164,164, 54,116,170,125,175,212, 91,154,201, 84,149,199, 88, + 150,200, 65,128,174, 38,105,157,255,255,255,255,255,255, 96, 96, 96, + 160,160,160, 61,118, 65, 54,113, 57,162,162,162,162,162,162,163,163, + 163, 61,121,176,130,179,215, 98,159,204, 90,154,201, 94,155,202, 67, + 129,175, 44,109,160, 55,130, 62, 52,126, 59, 49,121, 55, 46,117, 52, + 73,145, 80, 70,143, 76, 57,115, 61,161,161,161,162,162,162, 69,126, + 180,136,183,217,103,163,207, 97,158,204, 99,159,204, 69,131,177, 49, + 113,164, 59,135, 66,137,203,146,132,200,141,128,198,136,123,195,131, + 119,193,127, 71,143, 77, 59,116, 63,161,161,161, 76,132,186,141,187, + 219,110,168,209,102,166,209, 95,180,223, 71,133,177, 55,117,169, 62, + 139, 70,143,206,153,125,198,135,120,195,129,115,192,124,116,192,124, + 121,194,129, 73,144, 79, 84,127, 87, 84,137,191,148,191,221,117,173, + 212, 99,184,225, 75,212,255, 66,139,184, 61,122,173, 65,144, 74,148, + 210,159,145,208,154,141,205,150,137,203,146,132,200,141, 81,152, 88, + 65,124, 70,159,159,159, 90,142,196,152,195,224,124,179,215,116,175, + 214, 94,196,237, 75,136,179, 69,127,178, 68,148, 77, 66,145, 75, 63, + 141, 72, 61,137, 69, 93,164,101, 90,160, 97, 69,131, 75,158,158,158, + 158,158,158, 96,146,201,158,199,226,131,184,218,125,180,215,126,179, + 215, 79,137,180, 75,132,183,255,255,255,255,255,255,119,119,119,154, + 154,154, 61,138, 69, 73,138, 79,156,156,156,157,157,157,157,157,157, + 102,150,204,162,203,227,137,189,220,131,185,218,132,185,218, 81,139, + 181, 82,137,188,255,255,255,255,255,255,122,122,122,153,153,153, 82, + 145, 89,153,154,153,155,155,155,156,156,156,156,156,156,108,154,208, + 167,206,229,143,193,223,137,189,220,139,189,220, 83,141,182, 90,142, + 194,255,255,255,255,255,255,125,125,125,153,153,153,153,153,153,154, + 154,154,154,154,154,155,155,155,155,155,155,111,157,211,170,209,231, + 171,209,231,152,199,225,145,194,222, 86,143,183, 96,147,198,255,255, + 255,255,255,255,128,128,128,126,126,126,124,124,124,122,122,122,119, + 119,119,117,117,117,114,114,114,113,158,212,111,158,214,135,178,220, + 171,211,232,169,208,230, 88,144,184,103,151,203,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, - 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, - 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, - 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, - 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, - 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, - 134,213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213, - 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, - 215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,215,175, - 138,215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,226, - 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,217,179,143,217,179,143,228,202,177,135, - 74, 32,135, 74, 32,230,205,181,217,179,143,217,179,143,217,179,143, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,217,179,143,230,205,181,135, 74, 32,135, - 74, 32,231,207,184,217,179,143,217,179,143,217,179,143,217,179,143, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,231,207,184,135, 74, 32,135, 74, 32,232, - 210,188,217,179,143,217,179,143,217,179,143,217,179,143,217,179,143, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,232,210,188,135, 74, 32,136, 76, 34,230,209,188,234, - 212,192,234,212,192,234,212,192,234,212,192,234,212,192,226,197,169, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,234,212,192,135, 74, 32,139, 77, 36,136, 76, 34,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,140, 82, 42,218,190,167,227,200,173, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,235,215, - 196,135, 74, 32,135, 74, 32,204,164,133,188,136, 95,188,136, 94,188, - 136, 94,188,136, 94,175,120, 80,144, 86, 46,220,194,172,236,217,199, - 236,217,199,236,217,199,236,217,199,236,217,199,233,214,196,138, 79, - 37,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,205, - 161,124,218,186,158,190,150,120,135, 74, 32,135, 74, 32,135, 74, 32, - 135, 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,168,147,225,210, - 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,218, - 191,169,144, 89, 49,225,210,200,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,210, - 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,225, - 210,200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,132,172,220,109,156,212, + 133,177,218, 90,145,185,109,156,207,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,177,202,232, + 108,156,211,112,158,210); Const - stdimg_folder_open_file_16 : Array[0..821] of byte = ( + stdimg_menu_check_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 165,129,103,139, 82, 41,139, 82, 41,157,108, 74,157,108, 74,157,108, - 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157, - 108, 74,139, 82, 41,145,110, 84,255,255,255,255,255,255,139, 82, 41, - 209,165,123,210,165,124,210,165,124,210,165,124,210,165,124,210,165, - 124,210,165,124,210,165,124,210,165,124,210,165,124,210,165,124,209, - 165,123,139, 82, 41,255,255,255,255,255,255,157,104, 63,208,161,116, - 207,159,114,207,159,114,207,159,114,207,159,114,207,159,114,207,159, - 114,207,159,114,207,159,114,207,159,114,207,159,114,208,161,116,139, - 82, 41,255,255,255,139, 82, 41,196,151,112,208,162,119,207,160,117, - 207,160,117,207,160,117,207,160,117,207,160,117,207,160,117,207,160, - 117,207,160,117,207,160,117,207,160,117,208,162,119,196,151,112,139, - 82, 41,139, 82, 41,206,164,127,210,165,123,209,164,122,209,164,122, - 209,164,122,209,164,122,209,164,122,209,164,122,209,164,122,209,164, - 122,209,164,122,209,164,122,210,166,124,212,169,129,139, 82, 41,139, - 82, 41,215,180,148,220,186,153,220,186,153,220,186,153,220,185,152, - 216,179,143,212,169,130,211,168,127,211,168,127,211,168,127,211,168, - 127,211,168,127,212,168,128,209,169,133,139, 82, 41,139, 82, 41,139, - 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41, - 210,173,142,218,180,145,217,179,145,217,179,145,217,179,145,217,179, - 145,217,180,145,217,183,152,139, 82, 41,255,255,255,139, 82, 41,127, - 120,111,253,253,253,248,249,249,243,241,240,205,137, 89,139, 82, 41, - 139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, - 41,139, 82, 41,139, 82, 41,255,255,255,139, 82, 41,142,136,127,242, - 242,242,241,242,241,241,241,241,205,137, 89,255,247,240,253,231,214, - 253,230,212,252,228,208,251,227,203,254,243,232,205,136, 88,139, 82, - 41,255,255,255,255,255,255,139, 82, 41,177,154,132,151,138,124,150, - 137,123,148,136,121,205,137, 89,255,247,242, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92,253,242,231,205,137, 89,139, 82, 41,255,255, - 255,255,255,255,139, 82, 41,218,183,153,212,172,137,212,172,137,213, - 174,140,205,136, 88,254,247,241,252,228,209,251,226,204,249,221,196, - 247,218,192,252,242,233,205,137, 89,139, 82, 41,255,255,255,255,255, - 255,157,103, 62,197,159,132,213,181,155,213,181,155,211,179,152,204, - 135, 87,255,247,241, 93, 93, 93, 92, 92, 92, 92, 92, 92,254,249,243, - 255,247,240,205,137, 89,255,255,255,255,255,255,255,255,255,255,255, - 255,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,205,137, 89,255, - 247,240,255,247,240,255,247,240,255,247,240,255,247,240,255,247,240, - 205,137, 89,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,205,137, 89,205,137, 89,205, - 137, 89,205,137, 89,205,137, 89,205,137, 89,205,137, 89,205,137, 89, - 255,255,255,255,255,255); + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, + 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, + 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); Const stdimg_btn_close_16 : Array[0..821] of byte = ( @@ -2075,347 +2124,450 @@ Const 255,255,255,255,255,255); Const - stdimg_edit_copy_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,180,183, - 181,134,139,137,133,138,136,133,138,136,133,138,136,133,138,136,133, - 138,136,133,138,136,164,167,166,194,197,196,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,136,141,139,244,244, - 244,246,247,247,245,246,246,251,252,252,251,251,251,212,212,212,150, - 154,152,226,228,227,133,138,136,194,197,196,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,136,141,139,249,250,250,239,240, - 240,239,240,240,239,240,240,250,250,250,250,250,250,149,154,152,250, - 250,250,226,227,227,133,138,136,157,161,160,219,220,220,195,197,196, - 195,197,196,195,197,196,135,140,138,253,254,254,239,240,240,239,240, - 240,239,240,240,239,240,240,250,250,250,149,154,152,250,250,250,247, - 248,248,226,228,227,133,138,136,196,198,197,249,249,249,249,250,250, - 249,249,249,136,141,139,255,255,255,239,240,240,239,240,240,239,240, - 240,239,240,240,239,240,240,137,142,140,137,142,140,137,142,140,137, - 142,140,133,138,136,196,198,197,252,252,252,245,245,245,245,245,245, - 136,141,139,255,255,255,239,240,240,198,199,199,198,199,199,198,199, - 199,198,199,199,198,199,199,238,238,238,246,247,247,195,196,195,133, - 138,136,196,198,197,255,255,255,246,246,246,225,226,226,135,140,138, - 255,255,255,239,240,240,239,240,240,239,240,240,239,240,240,239,240, - 240,239,240,240,239,240,240,250,250,250,243,243,243,133,138,136,196, - 198,197,255,255,255,246,247,247,246,246,246,136,141,139,255,255,255, - 239,240,240,198,199,199,198,199,199,198,199,199,198,199,199,198,199, - 199,239,240,240,239,240,240,255,255,255,133,138,136,196,198,197,255, - 255,255,247,247,247,226,227,227,135,140,138,255,255,255,239,240,240, - 239,240,240,239,240,240,239,240,240,239,240,240,239,240,240,239,240, - 240,239,240,240,255,255,255,133,138,136,196,198,197,255,255,255,247, - 248,248,247,247,247,136,141,139,255,255,255,239,240,240,198,199,199, - 198,199,199,198,199,199,198,199,199,198,199,199,198,199,199,239,240, - 240,255,255,255,133,138,136,196,198,197,255,255,255,247,248,248,227, - 228,228,135,140,138,255,255,255,239,240,240,239,240,240,239,240,240, - 239,240,240,239,240,240,239,240,240,239,240,240,239,240,240,255,255, - 255,133,138,136,196,198,197,255,255,255,247,248,248,247,248,248,136, - 141,139,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,133,138, - 136,196,198,197,255,255,255,247,248,248,227,228,228,170,173,173,133, - 138,136,133,138,136,133,138,136,133,138,136,133,138,136,133,138,136, - 133,138,136,133,138,136,133,138,136,133,138,136,177,180,179,196,198, - 197,255,255,255,247,248,248,247,247,247,247,247,247,247,247,247,247, - 247,247,247,247,247,247,248,248,247,248,248,255,255,255,194,197,196, - 255,255,255,255,255,255,255,255,255,255,255,255,196,198,197,255,255, + stdimg_bevel : Array[0..1709] of byte = ( + 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 120, 6, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,200,208,212, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,194,197,196,255,255,255, - 255,255,255,255,255,255,255,255,255,219,220,220,194,197,196,194,197, - 196,194,197,196,194,197,196,194,197,196,194,197,196,194,197,196,194, - 197,196,194,197,196,194,197,196,217,219,218,255,255,255,255,255,255, - 255,255,255,255,255,255); + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, + 255,128,128,128,200,208,212,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, + 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, 0,255, + 255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,255,255, + 255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255, + 255,255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, + 200,208,212,200,208,212,128,128,128,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,200,208,212,128, + 128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255, + 128,128,128,255,255,255,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,128,128,128,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,255,255,255, + 200,208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, + 0,255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128, + 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,255,255,255,200,208,212,128,128,128,255,255,255,255, 0,255,255, + 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,128,128,128,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,255,255,255,200,208,212,128,128,128,255,255,255, + 255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255, + 255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,255,255,255,200,208,212,128,128, + 128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128, + 128,128,255,255,255,200,208,212,200,208,212,200,208,212,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0, + 255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, + 200,208,212,200,208,212,128,128,128,255,255,255,255, 0,255,255, 0, + 255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,255, + 255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, + 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255, + 200,208,212,255,255,255,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,128,128,128,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128, + 255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128, + 128,255,255,255,200,208,212,255,255,255,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,128,128,128,200,208,212,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, + 0,255,128,128,128,255,255,255,200,208,212,255,255,255,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, + 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,255,255, + 255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,128, + 128,128,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, + 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, 0, + 255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200, + 208,212,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,128,128,128,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,255, + 255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, + 255,255,255,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, + 128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, + 255,128,128,128,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,200,208,212,255,255,255,255, 0,255,255, 0,255, 0, + 0, 0,255, 0,255,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,200,208,212,255, 0,255, + 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255, 0, 0, 0); Const - stdimg_edit_delete_16 : Array[0..821] of byte = ( + stdimg_choice_no_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,186,188,188,145,148,147,173,176,175,255,255, - 255,255,255,255,144,148,146,158,161,160,163,166,164,255,255,255,255, - 255,255,219,220,219,151,153,153,189,191,190,255,255,255,255,255,255, - 255,255,255,141,145,144,250,250,250,151,154,153,169,172,171,159,162, - 161,150,154,152,238,239,239,170,174,172,155,158,157,152,155,154,139, - 142,141,255,255,255,172,175,175,255,255,255,255,255,255,255,255,255, - 186,188,188,142,146,145,246,246,246,153,156,155,171,173,172,143,147, - 144,224,225,224,178,180,180,211,213,212,152,155,154,236,236,236,160, - 163,162,212,213,213,255,255,255,255,255,255,255,255,255,255,255,255, - 141,144,143,221,222,221,142,147,144,201,201,201,138,143,140,206,208, - 207,164,166,165,200,200,200,124,128,127,227,228,228,146,149,148,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,117,121,120, - 203,205,204,133,138,135,166,167,166,146,147,147,179,180,179,146,147, - 146,182,183,182,124,128,127,189,190,189,123,126,125,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,106,110,109,205,206,206, - 108,111,111,172,174,173,109,112,111,175,177,176,108,111,110,178,180, - 179,111,115,114,179,180,180,109,113,112,255,255,255,255,255,255,255, - 255,255,165,118, 87,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32, - 135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, - 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,165,118, 87,135, - 74, 32,221,187,156,207,159,114,207,159,114,207,159,114,207,159,114, - 207,159,114,207,159,114,207,159,114,207,159,114,207,159,114,207,159, - 114,207,159,114,207,159,114,221,187,156,135, 74, 32,135, 74, 32,221, - 187,156,221,187,156,221,187,156,221,187,156,221,187,156,221,187,156, - 221,187,156,221,187,156,221,187,156,221,187,156,221,187,156,221,187, - 156,221,187,156,221,187,156,135, 74, 32,135, 74, 32,221,187,156,202, - 138, 88,202,138, 88,202,138, 88,202,138, 88,202,138, 88,202,138, 88, - 202,138, 88,202,138, 88,202,138, 88,202,138, 88,202,138, 88,202,138, - 88,221,187,156,135, 74, 32,135, 74, 32,221,187,156,134, 82, 44,134, - 81, 43,134, 81, 43,134, 81, 43,134, 81, 43,134, 81, 43,134, 82, 44, - 134, 82, 44,134, 82, 44,134, 82, 44,134, 82, 44,134, 82, 44,221,187, - 156,135, 74, 32,135, 74, 32,221,187,156,106, 91, 78,201,201,201,156, - 156,156,156,156,156,156,156,156,155,155,155,155,155,155,155,155,155, - 155,155,155,155,155,155,155,155,155,106, 91, 78,221,187,156,135, 74, - 32,135, 74, 32,221,187,156,119,124,122,217,217,217,189,189,189,189, - 189,189,189,189,189,189,189,189,188,188,188,188,188,188,188,188,188, - 191,191,191,192,192,192,119,124,122,221,187,156,135, 74, 32,195,165, - 144,135, 74, 32,133,138,136,231,231,231,215,215,215,214,214,214,214, - 214,214,214,214,214,214,214,214,213,213,213,213,213,213,218,218,218, - 220,220,220,133,138,136,135, 74, 32,195,165,144,255,255,255,255,255, - 255,133,138,136,241,241,241,235,235,235,235,235,235,235,235,235,234, - 234,234,234,234,234,234,234,234,234,234,234,234,234,234,233,233,233, - 133,138,136,255,255,255,255,255,255,255,255,255,255,255,255,171,174, - 173,133,138,136,133,138,136,133,138,136,133,138,136,133,138,136,133, - 138,136,133,138,136,133,138,136,133,138,136,133,138,136,171,174,173, - 255,255,255,255,255,255); + 0, 0, 0,255, 0,255,255, 0,255, 98, 98,162,164,164,178,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,152,152,171,101,101,160,255, 0,255,255, 0,255, + 255, 0,255, 48, 48,162, 55, 55,241, 19, 19,202,152,152,172,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,135, + 135,164, 17, 17,205, 48, 48,234, 61, 61,154,255, 0,255,255, 0,255, + 8, 8,224, 72, 72,245, 76, 76,240, 5, 5,200,135,135,163,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,116,116,157, 5, 5,205, 90, + 90,239, 90, 90,244, 9, 9,217,255, 0,255,255, 0,255, 34, 34,254, + 55, 55,255, 89, 89,255, 74, 74,237, 5, 5,199,119,119,156,255, 0, + 255,255, 0,255, 98, 98,152, 8, 8,206, 90, 90,237,115,115,255, 85, + 85,255, 54, 54,253,255, 0,255,255, 0,255, 29, 29,255, 43, 43,255, + 57, 57,255, 86, 86,255, 69, 69,235, 5, 5,196,102,102,148, 85, 85, + 147, 9, 9,203, 84, 84,237,106,106,255, 80, 80,255, 65, 65,255, 52, + 52,255,255, 0,255,255, 0,255,255, 0,255, 30, 30,255, 43, 43,255, + 53, 53,255, 74, 74,255, 55, 55,232, 1, 1,187, 6, 6,192, 68, 68, + 237, 88, 88,255, 71, 71,255, 62, 62,255, 54, 54,249,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255, 31, 31,251, 47, 47,255, + 60, 60,255, 78, 78,255, 49, 49,232, 55, 55,237, 75, 75,255, 56, 56, + 255, 50, 50,255, 55, 55,241,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255, 77, 77,238, 97, 97,255, + 96, 96,255, 96, 96,255, 98, 98,255, 98, 98,255, 91, 91,255, 73, 73, + 227,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255, 43, 43,156, 61, 61,244, 99, 99,255, + 99, 99,255,100,100,255,100,100,255, 54, 54,237, 75, 75,146,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255, 47, 47,123, 0, 0,166, 49, 49,242,107,107,255,106,106,255, + 106,106,255,105,105,255, 33, 33,230, 0, 0,152, 82, 82,127,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 43, 43,115, 0, + 0,164, 55, 55,243,121,121,255,120,120,255,121,121,255,121,121,255, + 120,120,255,116,116,255, 38, 38,229, 0, 0,146, 82, 82,123,255, 0, + 255,255, 0,255,255, 0,255, 45, 45,112, 0, 0,156, 66, 66,242,138, + 138,255,137,137,255,136,136,255,102,102,209,103,103,224,141,141,255, + 136,136,255,132,132,255, 42, 42,227, 0, 0,139, 91, 91,128,255, 0, + 255,255, 0,255, 0, 0,156, 73, 73,242,155,155,255,153,153,255,153, + 153,255,115,115,207,255, 0,255,255, 0,255,110,110,228,158,158,255, + 153,153,255,148,148,255, 47, 47,229, 13, 13,130,255, 0,255,255, 0, + 255, 85, 85,254,174,174,255,169,169,255,168,168,255,119,119,205,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,118,118,228,175,175,255, + 169,169,255,169,169,255, 60, 60,222,255, 0,255,255, 0,255,127,127, + 208,187,187,255,187,187,255,122,122,207,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,126,126,228,200,200,255, + 164,164,255,152,152,199,255, 0,255,255, 0,255,255, 0,255,126,126, + 210,127,127,214,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,121,121,231,154,154,197, + 255, 0,255,255, 0,255); Const - stdimg_search_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + stdimg_radiobuttons : Array[0..2213] of byte = ( + 66, 77,166, 8, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 60, 0, 0, 0, 12, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 112, 8, 0, 0,196, 14, 0, 0,196, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255,255,255,255,255,255,255,255,255,255,255,255, 0,255,255, 0, 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,100,148,186, 34, - 103,157,129,168,198,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,111,156,194, 85,141,188,137,181,221, 24, - 95,151,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,123,164,202,100,151,197,157,193,228,102,153,199, 49,113,165,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,233,207,186, - 219,178,146,211,166,128,208,161,124,210,166,133,174,161,153,117,162, - 204,171,203,232,118,164,206, 64,123,175,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,232,202,176,232,201,174,245,225,205, - 247,229,211,247,229,209,243,221,200,223,186,156,199,168,145,134,174, - 213, 80,135,187,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,241,219,200,237,208,183,248,232,217,245,222,200,243,216,189, - 243,214,187,244,219,194,247,228,210,223,187,157,160,151,149,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,238, - 206,178,247,231,215,246,225,204,244,219,194,244,218,192,243,216,189, - 243,215,187,244,219,194,243,222,201,210,168,135,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,240,206,175,249, - 236,223,245,223,200,245,221,198,244,220,195,244,218,193,243,217,190, - 243,215,189,248,230,211,211,166,128,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,244,211,181,249,237,225,246, - 225,204,245,223,201,245,222,199,244,220,196,244,219,194,244,218,192, - 248,231,214,215,171,135,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,248,219,193,249,235,222,247,231,214,246, - 225,204,245,224,202,245,222,200,245,221,197,246,225,203,245,226,208, - 223,185,153,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,252,234,216,248,226,204,250,238,227,247,231,214,246, - 226,206,246,225,203,246,227,208,249,234,221,236,207,181,236,212,191, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,251,228,206,249,226,205,250,236,222,249,238,226,249, - 237,226,248,233,218,240,213,189,237,208,183,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,252,234,217,250,221,194,246,214,185,244,211,181,243, - 212,184,245,224,205,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0,255, 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 255,255, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); - -Const - stdimg_dialog_warning_32 : Array[0..3125] of byte = ( - 66, 77, 54, 12, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 32, 0, 0, 0, 32, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 12, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255, 0,255,255, 0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255,255,255,255,255,255,191,191,191,191,191,191,191,191,191, + 191,191,191,255,255,255,255,255,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255,255,255,255,255,255,191,191,191,191,191,191,191, + 191,191,191,191,191,255,255,255,255,255,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255,255,255,255,255,255,191,191,191,191,191, + 191,191,191,191,191,191,191,255,255,255,255,255,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255,255,255,255,255,255,191,191,191, + 191,191,191,191,191,191,191,191,191,255,255,255,255,255,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255,255,255,255,255,255,191, + 191,191,191,191,191,191,191,191,191,191,191,255,255,255,255,255,255, + 255, 0,255,255, 0,255,255, 0,255,127,127,127,191,191,191,191,191, + 191,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,191, + 191,191,255,255,255,255, 0,255,255, 0,255,127,127,127,191,191,191, + 191,191,191,255,255,255,255,255,255,255,255,255,255,255,255,191,191, + 191,191,191,191,255,255,255,255, 0,255,255, 0,255,127,127,127,191, + 191,191,191,191,191,127,127,127,127,127,127,127,127,127,127,127,127, + 191,191,191,191,191,191,255,255,255,255, 0,255,255, 0,255,127,127, + 127,191,191,191,191,191,191,127,127,127,127,127,127,127,127,127,127, + 127,127,191,191,191,191,191,191,255,255,255,255, 0,255,255, 0,255, + 127,127,127,191,191,191,191,191,191,127,127,127,127,127,127,127,127, + 127,127,127,127,191,191,191,191,191,191,255,255,255,255, 0,255,255, + 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, 0, + 255,255, 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255, + 255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, + 255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, + 191,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 191,191,191,255,255,255,255, 0,255,127,127,127, 0, 0, 0,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0, + 255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255, + 255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, + 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255,127,127, + 127, 0, 0, 0,127,127,127,127,127,127,127,127,127, 0, 0, 0, 0, + 0, 0,127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, + 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, + 255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191, + 191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, + 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, + 127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127, + 127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, + 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, + 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,255,255,255,191,191,191,255,255,255,127, + 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255,255, + 255,127,127,127, 0, 0, 0,127,127,127,127,127,127, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,191,191,191, + 255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, + 191,191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,252,252,252,244,244,244,237,237,237,235,235, - 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, - 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, - 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, - 235,235,235,235,237,237,237,242,242,242,248,248,248,254,254,254,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,239,239,239, - 222,222,222,198,198,207,190,190,201,186,186,197,186,186,197,186,186, - 197,186,186,197,186,186,197,186,186,197,186,186,197,186,186,197,186, - 186,197,186,186,197,186,186,197,186,186,197,186,186,197,186,186,197, - 186,186,197,186,186,197,186,186,197,186,186,197,186,186,197,190,190, - 201,189,189,200,197,197,206,223,223,223,246,246,246,255,255,255,255, - 255,255,255,255,255,244,244,244,178,178,210, 22, 22,165, 0, 0,159, - 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0, - 159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, - 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, - 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0, - 159, 21, 21,165,173,173,209,250,250,250,255,255,255,255,255,255,243, - 243,243, 39, 39,171, 61, 61,196,112,112,224,117,117,226,116,116,226, - 113,113,225,111,111,225,108,108,224,105,105,223,102,102,223,100,100, - 222, 97, 97,222, 94, 94,221, 92, 92,220, 89, 89,220, 86, 86,219, 83, - 83,219, 81, 81,218, 78, 78,218, 75, 75,217, 72, 72,216, 69, 69,216, - 67, 67,215, 64, 64,215, 62, 62,214, 54, 54,212, 28, 28,188, 20, 20, - 166,246,246,246,255,255,255,255,255,255,253,253,253, 15, 15,166,121, - 121,221, 20, 20,208, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, - 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0, - 204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, - 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, - 0, 0,204, 10, 10,206, 56, 56,207, 2, 2,160,247,247,251,255,255, - 255,255,255,255,255,255,255, 90, 90,194, 89, 89,200, 58, 58,216, 0, - 0,204,163,163,219,210,210,224,210,210,224,211,211,225,212,212,226, - 212,212,226,213,213,227,214,214,228,215,215,229,216,216,230,216,216, - 230,217,217,231,217,217,231,218,218,232,218,218,232,219,219,233,220, - 220,234,221,221,235,222,222,236,193,193,231, 0, 0,204, 27, 27,209, - 44, 44,192, 53, 53,181,255,255,255,255,255,255,255,255,255,255,255, - 255,221,221,242, 25, 25,168,117,117,221, 8, 8,206, 80, 80,211,224, - 224,224,225,225,225,225,225,225,226,226,226,227,227,227,227,227,227, - 228,228,228,229,229,229,230,230,230,230,230,230,231,231,231,232,232, - 232,233,233,233,234,234,234,234,234,234,235,235,235,236,236,236,237, - 237,237,105,105,219, 3, 3,205, 59, 59,211, 14, 14,166,193,193,232, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,109,109, - 201, 85, 85,197, 68, 68,218, 2, 2,204,179,179,219,224,224,224,225, - 225,225,225,225,225,226,226,226,227,227,227,227,227,227,228,228,228, - 60, 60, 60, 55, 55, 55,230,230,230,231,231,231,232,232,232,233,233, - 233,234,234,234,234,234,234,235,235,235,205,205,231, 7, 7,205, 36, - 36,211, 47, 47,188, 70, 70,186,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,234,234,247, 23, 23,169,121,121, - 220, 14, 14,207, 59, 59,209,223,223,223,224,224,224,224,224,224,225, - 225,225,226,226,226,226,226,226,227,227,227, 55, 55, 55, 53, 53, 53, - 230,230,230,230,230,230,231,231,231,232,232,232,233,233,233,234,234, - 234,234,234,234, 82, 82,215, 8, 8,206, 67, 67,210, 10, 10,163,212, - 212,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,129,129,208, 74, 74,190, 81, 81,220, 0, 0, - 204,162,162,218,223,223,223,224,224,224,224,224,224,225,225,225,226, - 226,226,226,226,226,215,215,215,215,215,215,229,229,229,230,230,230, - 230,230,230,231,231,231,232,232,232,233,233,233,186,186,227, 1, 1, - 204, 47, 47,213, 46, 46,185, 96, 96,196,255,255,255,255,255,255,255, + 255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255, + 255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, + 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, + 127,127,127,127,127,127,127,127,127, 0, 0, 0, 0, 0, 0,127,127, + 127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, + 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255,255, 0, + 255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, 0,255, + 255, 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, + 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255,255, + 255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191, + 255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, + 191,191,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, + 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, + 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, + 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255,127,127, + 127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, + 127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255, + 127,127,127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,127,127, + 127,127,127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, + 0,255,127,127,127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127, + 127,127,127,127,127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0, + 255,255, 0,255,255, 0,255,127,127,127,127,127,127, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127, + 127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127, + 127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127, + 127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127, + 127,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, + 127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,127,127,127,127,127,127,127,127,127,127,127, + 127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127,127,127,127, + 127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127,127, + 127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127, + 127,127,127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127, + 127,127,127,127,127,127,127,127,127,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255); + +Const + stdimg_refresh_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,197,157,126,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,225,205,189,189,144,108,174,118, 73,166,105, 57,176, + 122, 79,196,156,124,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,164,101, 52,203,167,139,255, 0,255,225,204,188,172,113, + 68,184,134, 93,206,166,132,216,182,151,219,185,153,211,172,138,195, + 149,111,169,109, 63,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 165,104, 56,185,136, 96,180,129, 88,180,128, 86,227,202,180,236,218, + 201,231,209,188,227,201,176,222,190,160,210,171,136,206,165,130,211, + 174,142,169,110, 64,255, 0,255,255, 0,255,255, 0,255,167,105, 58, + 241,228,216,212,178,149,244,233,224,243,232,221,237,220,204,210,173, + 143,179,125, 83,166,104, 56,166,105, 57,166,106, 58,169,109, 61,176, + 120, 76,197,157,125,255, 0,255,255, 0,255,166,104, 57,246,238,230, + 245,236,227,245,237,228,230,210,193,179,126, 84,185,136, 97,255, 0, + 255,255, 0,255,217,191,171,175,117, 74,182,124, 79,167,107, 59,167, + 107, 59,255, 0,255,255, 0,255,165,104, 55,246,238,230,235,215,196, + 234,217,201,164,102, 53,217,191,171,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,173,115, 70,225,196,174,200,158,124,164,101, 52,255, + 0,255,255, 0,255,165,103, 54,245,237,229,246,237,229,245,236,228, + 215,184,157,177,122, 79,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,165,103, 54,255, 0,255,255, + 0,255,166,105, 57,164,102, 53,164,102, 53,165,102, 54,165,103, 54, + 165,103, 55,189,143,108,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,198,158,128,164,101, 52,175,120, 76,178,123, 82,178,123, + 82,178,124, 82,164,101, 52,255, 0,255,255, 0,255,165,103, 54,217, + 189,167,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,187,139,102,209,174,145,246,238,231,242,230,219,246,238, + 230,167,108, 61,255, 0,255,255, 0,255,164,102, 54,168,108, 61,221, + 187,162,174,118, 75,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 221,197,179,164,102, 53,233,215,199,235,216,198,245,236,227,168,109, + 62,255, 0,255,255, 0,255,170,111, 65,171,112, 65,169,109, 61,170, + 112, 66,213,184,162,255, 0,255,255, 0,255,183,134, 95,188,141,103, + 235,219,205,245,235,226,246,238,230,246,238,230,169,109, 62,255, 0, + 255,255, 0,255,202,164,135,192,145,106,197,152,114,168,107, 60,164, + 102, 53,168,108, 60,186,139,101,217,187,161,241,228,216,242,230,219, + 243,232,221,206,168,137,234,216,200,169,110, 63,255, 0,255,255, 0, + 255,255, 0,255,169,111, 65,211,173,140,220,189,157,221,190,161,229, + 203,180,233,211,191,238,221,204,240,226,213,231,210,191,178,124, 82, + 187,141,104,174,117, 73,165,104, 55,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,169,109, 63,193,146,107,211,176,143,223,194,168,222, + 193,168,212,177,147,188,140,102,170,112, 67,224,202,185,255, 0,255, + 219,194,174,164,101, 52,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,200,161,132,178,125, 83,168,108, 61,176,120, 77,190, + 145,110,225,205,189,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 212,182,159,255, 0,255); + +Const + stdimg_list_add_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 244,244,251, 25, 25,169,121,121,218, 23, 23,209, 42, 42,208,221,221, - 223,223,223,223,224,224,224,224,224,224,225,225,225,226,226,226, 37, - 37, 37, 37, 37, 37,228,228,228,229,229,229,229,229,229,230,230,230, - 231,231,231,232,232,232, 59, 59,211, 14, 14,207, 73, 73,209, 11, 11, - 164,228,228,245,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,151,151,216, - 63, 63,185, 94, 94,222, 0, 0,204,141,141,215,223,223,223,223,223, - 223,224,224,224,224,224,224,225,225,225, 27, 27, 27, 27, 27, 27,227, - 227,227,228,228,228,229,229,229,229,229,229,230,230,230,164,164,223, - 0, 0,204, 60, 60,215, 41, 41,179,120,120,205,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,251,251,253, 35, 35,174,116,116,215, - 34, 34,211, 27, 27,206,215,215,221,223,223,223,223,223,223,224,224, - 224,224,224,224, 13, 13, 13, 13, 13, 13,226,226,226,227,227,227,228, - 228,228,229,229,229,226,226,228, 40, 40,209, 24, 24,209, 75, 75,206, - 16, 16,167,241,241,250,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,172,172,224, 49, 49,178,106,106,223, 1, 1,204, - 121,121,213,222,222,222,222,222,222,223,223,223,224,224,224, 3, 3, - 3, 3, 3, 3,225,225,225,226,226,226,227,227,227,228,228,228,140, - 140,218, 1, 1,204, 75, 75,218, 34, 34,174,144,144,213,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254, - 254,255, 49, 49,179,109,109,211, 47, 47,213, 16, 16,206,206,206,220, - 222,222,222,222,222,222,215,215,215, 0, 0, 0, 0, 0, 0,217,217, - 217,225,225,225,226,226,226,218,218,226, 25, 25,207, 36, 36,211, 74, - 74,203, 27, 27,171,249,249,253,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,193,193,232, 36, - 36,173,117,117,224, 4, 4,205,102,102,212,221,221,221,222,222,222, - 204,204,204, 0, 0, 0, 0, 0, 0,206,206,206,225,225,225,225,225, - 225,118,118,216, 4, 4,205, 87, 87,219, 27, 27,170,167,167,222,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,182,132, + 93,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,164,101, 52,230,206, + 183,230,206,183,164,101, 52,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255, 69, 69,186,100,100,205, 59, - 59,216, 7, 7,205,195,195,219,221,221,221,193,193,193, 0, 0, 0, - 0, 0, 0,195,195,195,224,224,224,206,206,223, 12, 12,205, 49, 49, - 214, 70, 70,199, 45, 45,178,254,254,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,211,211,238, 25, 25,170,124,124,224, 8, 8,206, 82, - 82,210,221,221,221,218,218,218,207,207,207,207,207,207,220,220,220, - 223,223,223, 97, 97,213, 9, 9,206, 98, 98,219, 17, 17,166,189,189, - 230,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255, 92, 92,194, 89, 89,199, 72, 72,218, 2, 2,204,180,180,217,221, - 221,221,221,221,221,222,222,222,222,222,222,192,192,220, 4, 4,204, - 64, 64,217, 65, 65,194, 68, 68,186,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,226,226,244, 20, 20, - 168,128,128,224, 15, 15,207, 63, 63,209,220,220,220,221,221,221,221, - 221,221,222,222,222, 74, 74,210, 17, 17,207,104,104,219, 11, 11,163, - 210,210,238,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,114,114,202, 79, 79,193, 85, 85, - 220, 0, 0,204,162,162,215,220,220,220,220,220,220,173,173,217, 1, - 1,204, 80, 80,220, 59, 59,189, 92, 92,194,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,238,238,249, 20, 20,167,128,128,222, 25, 25,209, 44, 44, - 207,218,218,219,220,220,220, 53, 53,208, 28, 28,210,106,106,217, 10, - 10,164,226,226,244,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 137,137,211, 67, 67,187, 99, 99,223, 0, 0,204,143,143,214,152,152, - 214, 1, 1,204, 97, 97,223, 51, 51,184,118,118,204,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,246,246,252, 25, 25,169, - 122,122,218, 36, 36,211, 21, 21,206, 23, 23,205, 42, 42,212,104,104, - 215, 14, 14,165,239,239,249,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,158,158,218, 53, 53,181,113,113,225, - 1, 1,204, 3, 3,205,113,113,225, 41, 41,177,142,142,212,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,252,252,254, 37, 37,174,111,111,213, 66, 66,217, 70, 70,218, - 96, 96,210, 25, 25,170,248,248,252,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,180, - 180,227, 22, 22,168,109,109,218,106,106,218, 20, 20,169,165,165,221, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,140,140,211, 12, - 12,165, 8, 8,163,124,124,206,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,252,252,254,251,251,253,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,164,101, 52,230,206,183,217,173, + 134,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,164,101, 52,230,206,183,217,173,134,164,101, + 52,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,182,132, 93,164,101, 52,164,101, 52, + 164,101, 52,164,101, 52,217,173,134,217,173,134,164,101, 52,164,101, + 52,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, + 255,255,255,255,255,164,101, 52,229,204,180,219,183,149,219,182,148, + 218,180,146,218,179,144,217,173,134,216,170,131,215,168,127,215,166, + 125,224,190,159,164,101, 52,255,255,255,255,255,255,255,255,255,255, + 255,255,164,101, 52,232,211,192,231,209,187,231,209,188,230,206,183, + 230,206,183,230,206,183,230,206,183,230,205,182,230,204,181,230,204, + 182,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,182, + 132, 93,164,101, 52,164,101, 52,164,101, 52,164,101, 52,230,206,183, + 230,206,183,164,101, 52,164,101, 52,164,101, 52,164,101, 52,182,132, + 93,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,164,101, 52,230,206,183,230,206,183, + 164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,164,101, 52,230,206,183,230,206,183,164,101, 52, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,164,101, 52,230,206,183,230,206,183,164,101, 52,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,182, + 132, 93,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_edit_copy_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,180,183, + 181,134,139,137,133,138,136,133,138,136,133,138,136,133,138,136,133, + 138,136,133,138,136,164,167,166,194,197,196,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,136,141,139,244,244, + 244,246,247,247,245,246,246,251,252,252,251,251,251,212,212,212,150, + 154,152,226,228,227,133,138,136,194,197,196,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,136,141,139,249,250,250,239,240, + 240,239,240,240,239,240,240,250,250,250,250,250,250,149,154,152,250, + 250,250,226,227,227,133,138,136,157,161,160,219,220,220,195,197,196, + 195,197,196,195,197,196,135,140,138,253,254,254,239,240,240,239,240, + 240,239,240,240,239,240,240,250,250,250,149,154,152,250,250,250,247, + 248,248,226,228,227,133,138,136,196,198,197,249,249,249,249,250,250, + 249,249,249,136,141,139,255,255,255,239,240,240,239,240,240,239,240, + 240,239,240,240,239,240,240,137,142,140,137,142,140,137,142,140,137, + 142,140,133,138,136,196,198,197,252,252,252,245,245,245,245,245,245, + 136,141,139,255,255,255,239,240,240,198,199,199,198,199,199,198,199, + 199,198,199,199,198,199,199,238,238,238,246,247,247,195,196,195,133, + 138,136,196,198,197,255,255,255,246,246,246,225,226,226,135,140,138, + 255,255,255,239,240,240,239,240,240,239,240,240,239,240,240,239,240, + 240,239,240,240,239,240,240,250,250,250,243,243,243,133,138,136,196, + 198,197,255,255,255,246,247,247,246,246,246,136,141,139,255,255,255, + 239,240,240,198,199,199,198,199,199,198,199,199,198,199,199,198,199, + 199,239,240,240,239,240,240,255,255,255,133,138,136,196,198,197,255, + 255,255,247,247,247,226,227,227,135,140,138,255,255,255,239,240,240, + 239,240,240,239,240,240,239,240,240,239,240,240,239,240,240,239,240, + 240,239,240,240,255,255,255,133,138,136,196,198,197,255,255,255,247, + 248,248,247,247,247,136,141,139,255,255,255,239,240,240,198,199,199, + 198,199,199,198,199,199,198,199,199,198,199,199,198,199,199,239,240, + 240,255,255,255,133,138,136,196,198,197,255,255,255,247,248,248,227, + 228,228,135,140,138,255,255,255,239,240,240,239,240,240,239,240,240, + 239,240,240,239,240,240,239,240,240,239,240,240,239,240,240,255,255, + 255,133,138,136,196,198,197,255,255,255,247,248,248,247,248,248,136, + 141,139,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,133,138, + 136,196,198,197,255,255,255,247,248,248,227,228,228,170,173,173,133, + 138,136,133,138,136,133,138,136,133,138,136,133,138,136,133,138,136, + 133,138,136,133,138,136,133,138,136,133,138,136,177,180,179,196,198, + 197,255,255,255,247,248,248,247,247,247,247,247,247,247,247,247,247, + 247,247,247,247,247,247,248,248,247,248,248,255,255,255,194,197,196, + 255,255,255,255,255,255,255,255,255,255,255,255,196,198,197,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255); + 255,255,255,255,255,255,255,255,255,255,255,194,197,196,255,255,255, + 255,255,255,255,255,255,255,255,255,219,220,220,194,197,196,194,197, + 196,194,197,196,194,197,196,194,197,196,194,197,196,194,197,196,194, + 197,196,194,197,196,194,197,196,217,219,218,255,255,255,255,255,255, + 255,255,255,255,255,255); Const stdimg_hidden : Array[0..821] of byte = ( @@ -2470,277 +2622,240 @@ Const 255,255,255, 0, 0, 0); Const - stdimg_document : Array[0..1061] of byte = ( - 66, 77, 38, 4, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 240, 3, 0, 0,235, 10, 0, 0,235, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 98, 98, - 98, 91, 91, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 97, 97, 97, - 255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, - 88, 88, 88, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, - 0,255,255, 0,255, 88, 88, 88,182,193,198,182,193,198,172,189,196, - 163,184,195,154,179,194,145,175,192,136,170,191,127,165,190,118,160, - 189,115,158,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, - 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,225, - 237,244,216,232,242,208,228,240,200,222,238,191,218,236,184,214,233, - 176,209,231,167,204,229,120,161,188, 48, 48, 48, 90, 90, 90,255, 0, - 255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, - 88,222,222,222,233,241,247,137,144,148,132,141,147,127,139,146,122, - 136,145,117,133,143,112,130,142,176,209,231,127,163,188, 48, 48, 48, - 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255, - 255, 0,255, 88, 88, 88,222,222,222,242,246,250,234,242,248,226,238, - 245,218,233,242,210,228,240,201,224,238,193,220,236,186,214,233,133, - 166,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, - 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,251,252,252, - 148,151,152,143,148,151,138,145,149,133,142,148,128,139,146,123,136, - 145,194,219,236,138,168,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, - 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222, - 222,222,255,255,255,252,253,253,244,248,250,235,243,248,228,238,245, - 220,234,243,212,230,241,202,223,236,144,171,188, 48, 48, 48, 90, 90, - 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0, - 255, 88, 88, 88,222,222,222,255,255,255,155,155,155,154,154,154,148, - 151,152,143,148,151,139,145,149,134,143,148,212,226,236,151,174,188, - 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255, - 255, 0,255,255, 0,255, 88, 88, 88,223,223,223,255,255,255,255,255, - 255,255,255,255,254,254,254,245,248,251,237,244,248,227,237,243,220, - 231,238,151,174,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, - 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222, - 255,255,255,155,155,155,155,155,155,155,155,155,155,155,155,246,249, - 251,236,240,244,217,224,231,175,182,190, 48, 48, 48, 90, 90, 90,255, - 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, - 88, 88,222,222,222,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,245,245,246,222,224,226,177,183,188,132,137,143, 48, 48, - 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0, - 255,255, 0,255, 88, 88, 88,222,222,222,255,255,255,155,155,155,155, - 155,155,155,155,155,255,255,255,137,137,137,112,112,112,107,107,107, - 66, 66, 66, 48, 48, 48, 96, 96, 96,255, 0,255,255, 0,255, 0, 0, - 255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,255,255, - 255,255,255,255,255,255,255,255,255,255,252,252,252,112,112,112,206, - 206,206,255,255,255,153,153,153, 48, 48, 48,135,135,135,255, 0,255, - 255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88, - 222,222,222,255,255,255,255,255,255,255,255,255,255,255,255,234,234, - 234,109,109,109,255,255,255,153,153,153, 88, 88, 88,135,135,135,255, - 0,255,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, - 0,255, 88, 88, 88,222,222,222,222,222,222,222,222,222,222,222,222, - 222,222,222,177,183,188, 88, 88, 88,153,153,153, 88, 88, 88,135,135, - 135,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0,255, 0, - 255,255, 0,255,255, 0,255, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255, 0, 0); - -Const - stdimg_menu_preferences_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,215,194,180,135, 74, 32,135, 74, 32,135, 74, 32,223,207, - 196,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 135, 74, 32,190,165,146,184,156,134,184,156,134,135, 74, 32,223,207, - 196,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,193, - 196,195,154,158,157,193,196,195,255, 0,255,255, 0,255,135, 74, 32, - 204,187,173,167,145,125,181,149,122,174,139,114,135, 74, 32,223,207, - 196,255, 0,255,255, 0,255,255, 0,255,219,220,220,133,138,136,158, - 161,160,133,138,136,255, 0,255,255, 0,255,135, 74, 32,204,187,173, - 164,141,120,162,138,116,180,149,122,179,147,124,135, 74, 32,255, 0, - 255,255, 0,255,219,220,220,133,138,136,210,211,212,194,195,196,133, - 138,136,255, 0,255,255, 0,255,232,221,213,135, 74, 32,212,200,189, - 164,141,120,164,141,120,190,165,146,135, 74, 32,255, 0,255,219,220, - 220,133,138,136,226,227,228,194,196,198,133,138,136,193,196,195,255, - 0,255,255, 0,255,255, 0,255,243,237,233,135, 74, 32,204,187,173, - 204,187,173,179,147,124,135, 74, 32,193,196,195,133,138,136,211,211, - 212,189,190,191,133,138,136,219,220,220,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,243,237,233,135, 74, 32,135, 74, 32, - 135, 74, 32,133,131,125,170,173,173,200,201,202,189,190,191,133,138, - 136,219,220,220,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 181,183,184,133,138,136,183,184,185,133,138,136,219,220,220,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,219, - 220,220,133,138,136,133,138,136,133,138,136,133,138,136,208,209,210, - 163,164,164,133,138,136,193,196,195,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,219,220,220,133,138,136,243, - 243,243,239,240,240,237,238,238,234,236,236,182,185,186,133,138,136, - 219,220,220,133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,133,138,136,245,246,246,169,172,171,133, - 138,136,247,247,247,226,227,229,170,173,173,245,246,246,255, 0,255, - 219,220,220,133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,219,220,220,133,138,136,255, 0,255,219,220,220,133, - 138,136,250,250,250,133,138,136,255, 0,255,255, 0,255,255, 0,255, - 219,220,220,133,138,136,135,140,138,179,179,179,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,133,138,136,238, - 240,240,133,138,136,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 133,138,136,240,240,240,133,138,136,179,179,179,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,133,138,136,233,235,236,133,138,136,219, - 220,220,255, 0,255,255, 0,255,255, 0,255,255, 0,255,179,179,179, - 133,138,136,238,239,239,133,138,136,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,219,220,220,133,138,136,219,220,220,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,179,179,179, - 133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); - -Const - stdimg_choice_no_16 : Array[0..821] of byte = ( + stdimg_menu_saveas_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255, 98, 98,162,164,164,178,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,152,152,171,101,101,160,255, 0,255,255, 0,255, - 255, 0,255, 48, 48,162, 55, 55,241, 19, 19,202,152,152,172,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,135, - 135,164, 17, 17,205, 48, 48,234, 61, 61,154,255, 0,255,255, 0,255, - 8, 8,224, 72, 72,245, 76, 76,240, 5, 5,200,135,135,163,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,116,116,157, 5, 5,205, 90, - 90,239, 90, 90,244, 9, 9,217,255, 0,255,255, 0,255, 34, 34,254, - 55, 55,255, 89, 89,255, 74, 74,237, 5, 5,199,119,119,156,255, 0, - 255,255, 0,255, 98, 98,152, 8, 8,206, 90, 90,237,115,115,255, 85, - 85,255, 54, 54,253,255, 0,255,255, 0,255, 29, 29,255, 43, 43,255, - 57, 57,255, 86, 86,255, 69, 69,235, 5, 5,196,102,102,148, 85, 85, - 147, 9, 9,203, 84, 84,237,106,106,255, 80, 80,255, 65, 65,255, 52, - 52,255,255, 0,255,255, 0,255,255, 0,255, 30, 30,255, 43, 43,255, - 53, 53,255, 74, 74,255, 55, 55,232, 1, 1,187, 6, 6,192, 68, 68, - 237, 88, 88,255, 71, 71,255, 62, 62,255, 54, 54,249,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255, 31, 31,251, 47, 47,255, - 60, 60,255, 78, 78,255, 49, 49,232, 55, 55,237, 75, 75,255, 56, 56, - 255, 50, 50,255, 55, 55,241,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255, 77, 77,238, 97, 97,255, - 96, 96,255, 96, 96,255, 98, 98,255, 98, 98,255, 91, 91,255, 73, 73, - 227,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 43, 43,156, 61, 61,244, 99, 99,255, - 99, 99,255,100,100,255,100,100,255, 54, 54,237, 75, 75,146,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255, 47, 47,123, 0, 0,166, 49, 49,242,107,107,255,106,106,255, - 106,106,255,105,105,255, 33, 33,230, 0, 0,152, 82, 82,127,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 43, 43,115, 0, - 0,164, 55, 55,243,121,121,255,120,120,255,121,121,255,121,121,255, - 120,120,255,116,116,255, 38, 38,229, 0, 0,146, 82, 82,123,255, 0, - 255,255, 0,255,255, 0,255, 45, 45,112, 0, 0,156, 66, 66,242,138, - 138,255,137,137,255,136,136,255,102,102,209,103,103,224,141,141,255, - 136,136,255,132,132,255, 42, 42,227, 0, 0,139, 91, 91,128,255, 0, - 255,255, 0,255, 0, 0,156, 73, 73,242,155,155,255,153,153,255,153, - 153,255,115,115,207,255, 0,255,255, 0,255,110,110,228,158,158,255, - 153,153,255,148,148,255, 47, 47,229, 13, 13,130,255, 0,255,255, 0, - 255, 85, 85,254,174,174,255,169,169,255,168,168,255,119,119,205,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,118,118,228,175,175,255, - 169,169,255,169,169,255, 60, 60,222,255, 0,255,255, 0,255,127,127, - 208,187,187,255,187,187,255,122,122,207,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,126,126,228,200,200,255, - 164,164,255,152,152,199,255, 0,255,255, 0,255,255, 0,255,126,126, - 210,127,127,214,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,121,121,231,154,154,197, - 255, 0,255,255, 0,255); + 0, 0, 0,216,171,142,205,149,112,189,115, 66,183,104, 53,181,104, + 53,180,103, 52,178,102, 52,176,101, 51,174,100, 51,172, 99, 50,170, + 98, 50,169, 97, 50,168, 96, 49,167, 97, 50,171,105, 60,188,134, 97, + 195,125, 79,235,198,173,234,197,173,254,251,248,254,251,248,254,251, + 248,254,251,248,254,251,248,254,251,248,254,251,248,254,251,248,254, + 251,248,254,251,248,200,154,124,199,152,121,173,107, 64,186,108, 56, + 237,202,179,224,162,122,254,250,247, 98,192,136, 98,192,136, 98,192, + 136, 98,192,136, 98,192,136, 98,192,136, 98,192,136, 98,192,136,253, + 249,246,202,141,101,201,155,124,167, 97, 50,187,108, 56,238,204,182, + 225,162,122,254,250,247,191,220,194,191,220,194,191,220,194,191,220, + 194,191,220,194,191,220,194,191,220,194,191,220,194,253,249,246,205, + 144,104,204,158,129,168, 97, 50,187,107, 56,239,206,184,225,162,121, + 254,250,247, 98,192,136, 98,192,136,206,247,255, 41, 41, 41, 82, 82, + 82,206,247,255, 98,192,136, 98,192,136,253,249,246,207,147,106,206, + 163,132,170, 97, 50,186,106, 54,239,208,187,226,162,122,254,251,248, + 206,247,255,206,247,255,206,247,255,206,247,255,206,247,255,206,247, + 255,206,247,255,206,247,255,254,251,248,211,150,109,210,167,138,171, + 98, 50,187,106, 54,240,210,190,226,163,122,226,163,122,206,247,255, + 206,247,255,206,247,255, 41, 41, 41, 82, 82, 82,206,247,255,206,247, + 255,206,247,255,216,153,113,214,153,112,213,171,142,173, 99, 51,187, + 106, 54,242,213,194,227,163,122,208,242,250,206,247,255,206,247,255, + 206,247,255, 82, 82, 82, 41, 41, 41,132,156,165,206,247,255,206,247, + 255,210,247,254,217,155,115,218,176,149,175,100, 51,187,106, 54,242, + 216,197,227,164,123,181,238,254,181,239,255,181,239,255,181,239,255, + 181,239,255, 82, 82, 82, 41, 41, 41, 82, 82, 82,181,239,255,181,239, + 254,220,157,116,221,181,154,177,101, 52,187,107, 54,244,217,199,230, + 166,125,186,236,250,181,239,255, 41, 41, 41, 82, 82, 82,181,239,255, + 181,239,255, 41, 41, 41, 41, 41, 41,181,239,255,186,239,253,218,156, + 116,225,186,159,179,102, 52,187,108, 55,244,220,201,231,167,125,201, + 230,240,181,239,255, 41, 41, 41, 41, 41, 41,181,239,255,132,156,165, + 41, 41, 41, 41, 41, 41,181,239,255,201,239,249,222,160,119,228,190, + 164,180,103, 52,189,110, 58,245,221,204,231,168,126,250,240,232,181, + 239,255,132,156,165, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 132,156,165,181,239,255,247,229,217,224,162,120,231,194,169,182,104, + 53,192,116, 66,246,223,208,232,168,126,252,246,241,198,242,246,148, + 247,255,148,247,255,148,247,255,148,247,255,148,247,255,148,247,255, + 184,228,232,247,230,219,225,163,122,239,213,195,183,106, 54,198,130, + 85,246,223,209,233,170,128,254,250,246,253,250,246,218,241,243,175, + 244,250,153,246,254,153,246,254,175,244,250,218,241,243,249,236,226, + 248,231,219,238,208,186,236,208,189,189,116, 67,214,165,133,246,224, + 209,247,224,209,254,251,248,254,251,247,253,249,246,252,245,240,250, + 240,234,251,242,237,253,249,246,253,250,247,251,241,235,248,233,223, + 236,209,190,205,146,106,226,197,177,225,189,166,217,171,141,201,137, + 94,192,117, 67,189,110, 58,187,108, 55,187,107, 54,187,106, 54,187, + 106, 54,188,108, 57,189,110, 59,187,109, 58,191,116, 68,201,141,101, + 231,206,188,255,255,255); Const - stdimg_edit_cut_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,172,172,226, 37, 37,178, 26, 26,175, 29, 29, - 174,209,209,239,255,255,255,255,255,255,255,255,255,255,255,255,172, - 172,226, 70, 70,190, 27, 27,176, 39, 39,179,209,209,239,255,255,255, - 255,255,255, 49, 49,182, 41, 41,219, 36, 36,209, 31, 31,206, 31, 31, - 177,209,209,239,255,255,255,255,255,255,209,209,239, 29, 29,177, 36, - 36,212, 34, 34,208, 31, 31,206, 39, 39,178,255,255,255,255,255,255, - 19, 19,173, 33, 33,208,255,255,255,117,117,213, 35, 35,211, 52, 52, - 184,255,255,255,255,255,255, 59, 59,187, 37, 37,214,114,114,214,255, - 255,255, 35, 35,210, 22, 22,173,255,255,255,255,255,255, 43, 43,179, - 37, 37,213,134,134,213,255,255,255, 38, 38,208, 13, 13,170,255,255, - 255,255,255,255, 5, 5,169, 38, 39,205,255,255,255,137,137,214, 34, - 34,209, 43, 43,179,255,255,255,255,255,255,172,172,226, 7, 7,168, - 35, 35,209, 73, 73,192, 26, 27,194, 1, 1,166,255,255,255,241,242, - 250, 30, 31,205, 25, 27,193, 74, 74,193, 33, 33,206, 7, 7,167,143, - 143,216,255,255,255,255,255,255,255,255,255,142,142,215, 9, 9,170, - 34, 34,210, 31, 31,206, 16, 17,184, 92, 94,196, 6, 7,169, 26, 26, - 201, 34, 34,209, 33, 33,203, 12, 12,170,171,171,225,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,127,127,210, - 33, 33,175, 6, 6,166, 70, 75,163, 2, 2,166, 25, 26,199, 37, 37, - 178,131,131,211,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,212,214,213, - 132,137,137,195,198,197,175,178,179, 52, 55,160,231,232,232,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,181,184,183,184,188,187, - 230,232,231,167,172,170,139,144,142,184,187,186,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,231,232,232,136,141,139,223,225,225,245,246,245, - 151,156,154,165,169,168,140,145,143,231,232,232,255,255,255,255,255, + stdimg_link : Array[0..449] of byte = ( + 66, 77,194, 1, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 11, 0, 0, 0, 11, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 140, 1, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,152,156,154,178,182,181,247,247,247,142,147,145,156,160,159, - 179,182,181,182,187,185,172,175,174,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,228,229,229,136, - 141,139,217,220,219,239,240,239,171,175,173,184,187,186,179,184,182, - 203,206,205,137,142,140,197,199,198,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,144,148,146,176,181,179,246, - 247,247,155,159,157,202,204,203,255,255,255,141,146,144,201,206,204, - 172,176,175,156,160,159,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,136,141,139,208,212,210,239,240,239,179, - 183,181,255,255,255,255,255,255,225,227,226,167,172,170,195,200,198, - 142,147,145,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,143,148,146,247,247,247,170,173,172,202,204,203,255, - 255,255,255,255,255,255,255,255,152,156,155,208,211,210,169,173,171, + 255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255, + 255,255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255, + 255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255, + 255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255, + 255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, + 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128, + 128,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, + 128,128,128,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, + 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, + 0, 0,128,128,128,255,255,255,255,255,255,255,255,255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, + 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,221,223,222,145,149,148,162,166,165,255,255,255,255,255,255,255, - 255,255,255,255,255,185,187,186,148,152,150,255,255,255,255,255,255, - 255,255,255,255,255,255); + 0, 0, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128, 0, 0, 0, 0, 0, 0); Const - stdimg_menu_check_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, - 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); - - + stdimg_checkboxes : Array[0..2601] of byte = ( + 66, 77, 42, 10, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 65, 0, 0, 0, 13, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 244, 9, 0, 0,196, 14, 0, 0,196, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 0,127,127,127,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,255,255,255, + 127,127,127,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,255,255,255,127,127,127,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,255,255,255,127,127,127,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,255,255,255,127,127, + 127,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, + 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, + 255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127,127, 0, + 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255, + 255,127,127,127, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0, 0,255, + 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255, + 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, + 127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,127,127,127,127,127, + 127, 52, 52, 52, 52, 52, 52,127,127,127,191,191,191,255,255,255,127, + 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, + 191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255, + 255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, + 0, 0, 0, 0, 0, 0,255,255,255,191,191,191,255,255,255,127,127, + 127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191, + 255,255,255,127,127,127, 0, 0, 0,127,127,127, 52, 52, 52, 52, 52, + 52, 52, 52, 52,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52,127, + 127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127,127, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255, + 255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, + 255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, + 0,127,127,127,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52,127,127,127,127,127,127,191,191,191,255,255,255, + 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, + 191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0, + 255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, + 0,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,127, + 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, + 191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127, + 127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52,127,127,127,127,127,127, + 127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127, + 127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191, + 255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, + 255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, + 0, 0,127,127,127,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52,127,127,127,127,127,127,191,191,191,255,255, + 255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 191,191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, + 0,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,191,191,191,255,255,255, + 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, + 191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, 52, 52, 52, + 52, 52, 52, 52, 52, 52,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, + 52,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127, + 127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191, + 191,255,255,255,127,127,127, 0, 0, 0,255,255,255, 0, 0, 0, 0, + 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, + 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, + 0, 0, 0,127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,127,127, + 127,127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,191,191,191,255, + 255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,191,191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, + 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255, + 255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0, + 127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, + 191,191,255,255,255,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,191,191,191,255,255,255,127,127,127, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,191,191,191,255,255,255,127,127, + 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,191,191, + 255,255,255,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,191,191,191,255,255,255, 0,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,255,255,255,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,255, + 255,255,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,255,255,255,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,255,255,255,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,255,255,255, + 0); -- cgit v1.2.3-70-g09d2 From 2604f92d412aa40e1441df861158a864e29ee96c Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 19 Aug 2010 16:03:57 +0200 Subject: Fixed preloading of new Arrow images. * I forgot this in the previous patch. New arrow images are masked. --- src/corelib/fpg_stdimages.pas | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_stdimages.pas b/src/corelib/fpg_stdimages.pas index 2682ce3f..d62ef77c 100644 --- a/src/corelib/fpg_stdimages.pas +++ b/src/corelib/fpg_stdimages.pas @@ -72,25 +72,25 @@ procedure fpgCreateStandardImages; begin // system images. Change these to the composite arrow bmp that includes // disabled state - fpgImages.AddBMP( + fpgImages.AddMaskedBMP( // 7x4 image 'sys.sb.up', @stdimg_arrow_up, - sizeof(stdimg_arrow_up)); + sizeof(stdimg_arrow_up), 0, 0); - fpgImages.AddBMP( + fpgImages.AddMaskedBMP( // 7x4 image 'sys.sb.down', @stdimg_arrow_down, - sizeof(stdimg_arrow_down)); + sizeof(stdimg_arrow_down), 0, 3); - fpgImages.AddBMP( + fpgImages.AddMaskedBMP( // 4x7 image 'sys.sb.left', @stdimg_arrow_left, - sizeof(stdimg_arrow_left)); + sizeof(stdimg_arrow_left), 0, 0); - fpgImages.AddBMP( + fpgImages.AddMaskedBMP( // 4x7 image 'sys.sb.right', @stdimg_arrow_right, - sizeof(stdimg_arrow_right)); + sizeof(stdimg_arrow_right), 3, 0); fpgImages.AddMaskedBMP( // 60x12 in total. 5 images of 12x12 each. 'sys.radiobuttons', -- cgit v1.2.3-70-g09d2 From f376241d831ae3863d367ca2414f7fc445d08fe0 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 19 Aug 2010 16:05:41 +0200 Subject: Gray Brightness Percentage has been adjusted. * Old value was 20 which gave slightly too dark "greyed" images. * New value of 40 works nice all round. --- src/corelib/fpg_imgutils.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/fpg_imgutils.pas b/src/corelib/fpg_imgutils.pas index afb4d4fe..97f33fb7 100644 --- a/src/corelib/fpg_imgutils.pas +++ b/src/corelib/fpg_imgutils.pas @@ -104,7 +104,7 @@ end; initialization GrayConvMatrix := GCM_NTSC; GrayBrightness := True; - GrayBrightnessPercentage := 20; + GrayBrightnessPercentage := 40; end. -- cgit v1.2.3-70-g09d2 From ed0126691c5f76aa0b26a3c8f0927d3cbb87eb46 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 19 Aug 2010 16:08:08 +0200 Subject: Scrollbars now have disabled arrow button state at Min or Max values. Thanks to Jean-Marc Levecque for the idea. --- src/gui/fpg_scrollbar.pas | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_scrollbar.pas b/src/gui/fpg_scrollbar.pas index 55db9f59..ed12d0d2 100644 --- a/src/gui/fpg_scrollbar.pas +++ b/src/gui/fpg_scrollbar.pas @@ -43,7 +43,6 @@ type TfpgScrollBarPart = (sbpNone, sbpUpBack, sbpPageUpBack, sbpSlider, sbpDownForward, sbpPageDownForward); - { TfpgScrollBar } TfpgScrollBar = class(TfpgWidget) private @@ -72,7 +71,7 @@ type FMousePosition: TPoint; FOnScroll: TScrollNotifyEvent; procedure ScrollTimer(Sender: TObject); - procedure DrawButton(x, y, w, h: TfpgCoord; const imgname: string; Pressed: Boolean = False); virtual; + procedure DrawButton(x, y, w, h: TfpgCoord; const imgname: string; Pressed: Boolean = False; const ButtonEnabled: Boolean= True); virtual; procedure DrawSlider(recalc: boolean); virtual; procedure HandleLMouseDown(x, y: integer; shiftstate: TShiftState); override; procedure HandleLMouseUp(x, y: integer; shiftstate: TShiftState); override; @@ -139,13 +138,13 @@ begin Canvas.BeginDraw; // Do not remove - Scrollbars do painting outside HandlePaint as well! if Orientation = orVertical then begin - DrawButton(0, 0, Width, Width, 'sys.sb.up', FScrollbarDownPart = sbpUpBack); - DrawButton(0, Height-Width, Width, Width, 'sys.sb.down', FScrollbarDownPart = sbpDownForward); + DrawButton(0, 0, Width, Width, 'sys.sb.up', (FScrollbarDownPart = sbpUpBack) and (FPosition <> FMin), FPosition <> FMin); + DrawButton(0, Height-Width, Width, Width, 'sys.sb.down', (FScrollbarDownPart = sbpDownForward) and (FPosition <> FMax), FPosition <> FMax); end else begin - DrawButton(0, 0, Height, Height, 'sys.sb.left', FScrollbarDownPart = sbpUpBack); - DrawButton(Width-Height, 0, Height, Height, 'sys.sb.right', FScrollbarDownPart = sbpDownForward); + DrawButton(0, 0, Height, Height, 'sys.sb.left', (FScrollbarDownPart = sbpUpBack) and (FPosition <> FMin), FPosition <> FMin); + DrawButton(Width-Height, 0, Height, Height, 'sys.sb.right', (FScrollbarDownPart = sbpDownForward) and (FPosition <> FMax), FPosition <> FMax); end; DrawSlider(FRecalc); @@ -323,9 +322,9 @@ begin end; // only called from inside HandlePaint so no need for BeginDraw..EndDraw calls -procedure TfpgScrollBar.DrawButton(x, y, w, h: TfpgCoord; const imgname: string; Pressed: Boolean = False); +procedure TfpgScrollBar.DrawButton(x, y, w, h: TfpgCoord; const imgname: string; Pressed: Boolean = False; const ButtonEnabled: Boolean= True); var - img: TfpgImage; + img, imgdisabled: TfpgImage; dx: integer; dy: integer; begin @@ -344,7 +343,16 @@ begin Canvas.SetColor(clText1); img := fpgImages.GetImage(imgname); if img <> nil then - Canvas.DrawImage(x + w div 2 - (img.Width div 2) + dx, y + h div 2 - (img.Height div 2) + dy, img); + begin + if ButtonEnabled then + Canvas.DrawImage(x + w div 2 - (img.Width div 2) + dx, y + h div 2 - (img.Height div 2) + dy, img) + else + begin + imgdisabled := img.CreateDisabledImage; + Canvas.DrawImage(x + w div 2 - (img.Width div 2) + dx, y + h div 2 - (img.Height div 2) + dy, imgdisabled); + imgdisabled.Free; + end; + end; end; // only called from inside HandlePaint so no need for BeginDraw..EndDraw calls @@ -516,14 +524,13 @@ begin if FScrollbarDownPart = sbpSlider then begin FSliderDragStart := FSliderPos; - Invalidate; //DrawSlider(False); + Invalidate; end else if not (FScrollbarDownPart in [sbpNone, sbpSlider]) then begin FScrollTimer.Interval := 300; FScrollTimer.Enabled := True; - - Invalidate; //HandlePaint; + Invalidate; end; end; @@ -540,7 +547,7 @@ begin FScrollbarDownPart := sbpNone; if WasPressed then - Invalidate; //HandlePaint; + Invalidate; end; procedure TfpgScrollBar.HandleMouseMove(x, y: integer; btnstate: word; shiftstate: TShiftState); -- cgit v1.2.3-70-g09d2 From 95a19394a4a584eb6e71d4047a07b16f16416d37 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 22 Aug 2010 13:48:20 +0200 Subject: Introduced a new cross-platform fpgFileSize() helper function. --- src/corelib/fpg_utils.pas | 1 + src/corelib/gdi/fpg_utils_impl.inc | 21 ++++++++++++++++++++- src/corelib/x11/fpg_utils_impl.inc | 10 +++++++++- 3 files changed, 30 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_utils.pas b/src/corelib/fpg_utils.pas index d4d7886c..43f73028 100644 --- a/src/corelib/fpg_utils.pas +++ b/src/corelib/fpg_utils.pas @@ -31,6 +31,7 @@ uses function fpgToOSEncoding(aString: TfpgString): string; function fpgFromOSEncoding(aString: string): TfpgString; procedure fpgOpenURL(const aURL: TfpgString); +function fpgFileSize(const AFilename: TfpgString): integer; // *** Common functions for all platforms *** diff --git a/src/corelib/gdi/fpg_utils_impl.inc b/src/corelib/gdi/fpg_utils_impl.inc index d3bb2f0c..08a3c3ad 100644 --- a/src/corelib/gdi/fpg_utils_impl.inc +++ b/src/corelib/gdi/fpg_utils_impl.inc @@ -1,7 +1,7 @@ {%mainunit fpg_utils.pas} uses - Shellapi; + Shellapi, Windows; // GDI specific implementations of encoding functions @@ -26,3 +26,22 @@ begin end; end; +function fpgFileSize(const AFilename: TfpgString): integer; +var + FindData: TWIN32FindDataW; + FindHandle: THandle; + Str: widestring; +begin + // Don't assign the widestring to TSearchRec.name because it is of type + // string, which will generate a conversion to the system encoding + Str := UTF8Decode(Filename); + FindHandle:=Windows.FindFirstFileW(PWideChar(Str), FindData); + if FindHandle=Windows.Invalid_Handle_value then + begin + Result:=-1; + exit; + end; + Result := (int64(FindData.nFileSizeHigh) shl 32)+FindData.nFileSizeLow; + Windows.FindClose(FindHandle); +end; + diff --git a/src/corelib/x11/fpg_utils_impl.inc b/src/corelib/x11/fpg_utils_impl.inc index d8625b8c..908f411a 100644 --- a/src/corelib/x11/fpg_utils_impl.inc +++ b/src/corelib/x11/fpg_utils_impl.inc @@ -1,7 +1,7 @@ {%mainunit fpg_utils.pas} uses - Unix; + Unix, BaseUnix; // X11 specific filesystem implementations of encoding functions @@ -40,3 +40,11 @@ begin fpSystem(Helper + ' ' + aURL + '&'); end; +function fpgFileSize(const AFilename: TfpgString): integer; +var + st: baseunix.stat; +begin + if not fpstat(pointer(AFilename),st) >= 0 then + exit(-1); + Result := st.st_size; +end; -- cgit v1.2.3-70-g09d2 From fd7913901deefb8204c386e01ab6b18b2cac6874 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 23 Aug 2010 09:35:21 +0200 Subject: Use fpGUI wrapper functions instead of RTL functions directly. fpGUI's wrapper functions handle unicode conversions from OS automatically. --- docview/src/HelpFile.pas | 3 ++- docview/src/frm_main.pas | 2 +- src/corelib/fpg_base.pas | 2 +- src/gui/fpg_dialogs.pas | 6 +++--- 4 files changed, 7 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/docview/src/HelpFile.pas b/docview/src/HelpFile.pas index a3801aa5..4cd36edc 100644 --- a/docview/src/HelpFile.pas +++ b/docview/src/HelpFile.pas @@ -186,6 +186,7 @@ uses // ACLFileIOUtility, // ACLLanguageUnit; fpg_main + ,fpg_utils ,nvUtilities ,ACLStringUtility ; @@ -1219,7 +1220,7 @@ var fstream: TFileStream; Ext: string; begin - Ext := ExtractFileExt( Filename ); + Ext := fpgExtractFileExt( Filename ); Result := ''; if SameText( Ext, '.inf' ) diff --git a/docview/src/frm_main.pas b/docview/src/frm_main.pas index 4defc759..8a3aa84a 100644 --- a/docview/src/frm_main.pas +++ b/docview/src/frm_main.pas @@ -1034,7 +1034,7 @@ begin if dlg.RunOpenFile then begin - Settings.LastOpenDirectory := ExtractFilePath(dlg.Filename); + Settings.LastOpenDirectory := fpgExtractFilePath(dlg.Filename); OpenFile(dlg.Filename, '', true); end; { TODO -oGraeme : Add support for multiple files. } diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index 199004ba..b9bc394b 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -2415,7 +2415,7 @@ var begin e := TFileEntry.Create; e.Name := sr.Name; - e.Extension := ExtractFileExt(e.Name); + e.Extension := fpgExtractFileExt(e.Name); e.Size := sr.Size; // e.Attributes := sr.Attr; // this is incorrect and needs to improve! e.ModTime := FileDateToDateTime(sr.Time); diff --git a/src/gui/fpg_dialogs.pas b/src/gui/fpg_dialogs.pas index 73c668c3..25f01da9 100644 --- a/src/gui/fpg_dialogs.pas +++ b/src/gui/fpg_dialogs.pas @@ -1369,7 +1369,7 @@ begin if (i >= 0) and (i < FFilterList.Count) then Result := FFilterList[i] else - Result := '*'; + Result := AllFilesMask; end; function TfpgFileDialog.RunOpenFile: boolean; @@ -1378,12 +1378,12 @@ var fname: string; begin FOpenMode := True; - sdir := ExtractFileDir(FileName); + sdir := fpgExtractFileDir(FileName); if sdir = '' then sdir := '.'; SetCurrentDirectory(sdir); - fname := ExtractFileName(FileName); + fname := fpgExtractFileName(FileName); if not HighlightFile(fname) then edFilename.Text := fname; -- cgit v1.2.3-70-g09d2 From d5b40c8714d023c4f8a1ecc33bbbbc146de1439b Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 23 Aug 2010 12:43:41 +0200 Subject: Fix compilation error under Windows. --- src/corelib/fpg_utils.pas | 2 +- src/corelib/gdi/fpg_utils_impl.inc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_utils.pas b/src/corelib/fpg_utils.pas index 43f73028..107fb262 100644 --- a/src/corelib/fpg_utils.pas +++ b/src/corelib/fpg_utils.pas @@ -192,7 +192,7 @@ begin break; until fpgFindNext(FileInfo) <> 0; finally - FindClose(FileInfo); + SysUtils.FindClose(FileInfo); end; end; end; diff --git a/src/corelib/gdi/fpg_utils_impl.inc b/src/corelib/gdi/fpg_utils_impl.inc index 08a3c3ad..e5125312 100644 --- a/src/corelib/gdi/fpg_utils_impl.inc +++ b/src/corelib/gdi/fpg_utils_impl.inc @@ -34,7 +34,7 @@ var begin // Don't assign the widestring to TSearchRec.name because it is of type // string, which will generate a conversion to the system encoding - Str := UTF8Decode(Filename); + Str := UTF8Decode(AFilename); FindHandle:=Windows.FindFirstFileW(PWideChar(Str), FindData); if FindHandle=Windows.Invalid_Handle_value then begin -- cgit v1.2.3-70-g09d2 From ed0277d9646401fbef68a8980b9021915b392032 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 24 Aug 2010 12:51:57 +0200 Subject: treeview: When setting the Selection property, the selected node is now correctly scrolled into view (even if nodes had to expand). To make things look even better, the selected node is now centered vertically in the tree view. --- src/gui/fpg_tree.pas | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index 471fcf6f..072ec729 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -862,10 +862,14 @@ begin n := AValue.Parent; while n <> nil do begin - n.Expand; - DoExpand(n); + if n.Collapsed then + begin + n.Expand; + DoExpand(n); + end; n := n.parent; end; + UpdateScrollbars; end; dy := GetAbsoluteNodeTop(FSelection); @@ -875,7 +879,7 @@ begin begin if FVScrollBar.Max = 0 then // the first time and no expansion happened before. FVScrollBar.Max := dy + Height; - FVScrollbar.Position := dy + nh - vh; + FVScrollbar.Position := dy + nh - (vh div 2); FYOffset := FVScrollbar.Position; UpdateScrollBars; if FHScrollbar.Visible then // HScrollbar appeared so we need to adjust position again -- cgit v1.2.3-70-g09d2 From a64f038d58adcef99ba1fc8700de453405d87f3f Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 24 Aug 2010 12:52:49 +0200 Subject: New wrapper (fpgChangeFileExt) created for fpGUI. This handles the OS encoding correctly, like the other wrapper functions. --- src/corelib/fpg_utils.pas | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_utils.pas b/src/corelib/fpg_utils.pas index 107fb262..a53c7efe 100644 --- a/src/corelib/fpg_utils.pas +++ b/src/corelib/fpg_utils.pas @@ -58,6 +58,7 @@ function fpgExtractFilePath(const FileName: TfpgString): TfpgString; function fpgExtractFileName(const FileName: TfpgString): TfpgString; function fpgExtractFileExt(const FileName: TfpgString): TfpgString; function fpgForceDirectories(const ADirectory: TfpgString): Boolean; +function fpgChangeFileExt(const FileName, Extension: TfpgString): TfpgString; implementation @@ -151,6 +152,11 @@ begin Result := ForceDirectories(fpgToOSEncoding(ADirectory)); end; +function fpgChangeFileExt(const FileName, Extension: TfpgString): TfpgString; +begin + Result := ChangeFileExt(fpgToOSEncoding(Filename), Extension); +end; + function fpgAppendPathDelim(const Path: TfpgString): TfpgString; begin if (Path <> '') and (Path[length(Path)] <> PathDelim) then -- cgit v1.2.3-70-g09d2 From a28d45f3a9979011d6a02546ac0619fab0a13b82 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 24 Aug 2010 15:16:45 +0200 Subject: splitter: When double-clicking splitter, it now snaps closed if AutoSnap is set. --- src/gui/fpg_splitter.pas | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_splitter.pas b/src/gui/fpg_splitter.pas index 6094656b..8a5aa3d3 100644 --- a/src/gui/fpg_splitter.pas +++ b/src/gui/fpg_splitter.pas @@ -61,6 +61,7 @@ type procedure HandleMouseMove(x, y: integer; btnstate: word; shiftstate: TShiftState); override; procedure HandleMouseEnter; override; procedure HandleMouseExit; override; + procedure HandleDoubleClick(x, y: integer; button: word; shiftstate: TShiftState); override; procedure HandlePaint; override; procedure StopSizing; dynamic; Procedure DrawGrabBar(ARect: TfpgRect); virtual; @@ -304,6 +305,25 @@ begin Repaint; end; +procedure TfpgSplitter.HandleDoubleClick(x, y: integer; button: word; + shiftstate: TShiftState); +begin + inherited HandleDoubleClick(x, y, button, shiftstate); + if FAutoSnap then + begin + if FNewSize = 0 then + begin + FNewSize := FMinSize+1; + DoCanResize(FNewSize); + end + else + begin + FNewSize := 0; + DoCanResize(FNewSize); + end; + end; +end; + procedure TfpgSplitter.HandlePaint; var lRect: TfpgRect; -- cgit v1.2.3-70-g09d2 From d5961565ddd037a54a3e0dc7a3694c24e66a097f Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 24 Aug 2010 15:17:25 +0200 Subject: splitter AutoSnap property added and OnSnap event. --- src/gui/fpg_splitter.pas | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_splitter.pas b/src/gui/fpg_splitter.pas index 8a5aa3d3..eabc2bd2 100644 --- a/src/gui/fpg_splitter.pas +++ b/src/gui/fpg_splitter.pas @@ -36,6 +36,7 @@ type NaturalNumber = 1..High(Integer); + TfpgSnapEvent = procedure(Sender: TObject; const AClosed: boolean) of object; TfpgSplitter = class(TfpgWidget) private @@ -49,12 +50,14 @@ type FOldSize: Integer; FSplit: Integer; FMouseOver: Boolean; + FOnSnap: TfpgSnapEvent; procedure CalcSplitSize(X, Y: Integer; out NewSize, Split: Integer); function FindControl: TfpgWidget; procedure SetColorGrabBar(const AValue: TfpgColor); procedure UpdateControlSize; procedure UpdateSize(const X, Y: Integer); protected + procedure DoOnSnap(const AClosed: Boolean); function DoCanResize(var NewSize: Integer): Boolean; virtual; procedure HandleLMouseDown(x, y: integer; shiftstate: TShiftState); override; procedure HandleLMouseUp(x, y: integer; shiftstate: TShiftState); override; @@ -69,7 +72,9 @@ type constructor Create(AOwner: TComponent); override; destructor Destroy; override; published + property AutoSnap: boolean read FAutoSnap write FAutoSnap default True; property ColorGrabBar: TfpgColor read FColorGrabBar write SetColorGrabBar default clColorGrabBar; + property OnSnap: TfpgSnapEvent read FOnSnap write FOnSnap; end; function CreateSplitter(AOwner: TComponent; ALeft, ATop, AWidth, AHeight: TfpgCoord; @@ -196,12 +201,21 @@ begin CalcSplitSize(X, Y, FNewSize, FSplit); end; +procedure TfpgSplitter.DoOnSnap(const AClosed: Boolean); +begin + if Assigned(FOnSnap) then + FOnSnap(self, AClosed); +end; + function TfpgSplitter.DoCanResize(var NewSize: Integer): Boolean; begin // Result := CanResize(NewSize); // omit onCanResize call Result := True; if Result and (NewSize <= FMinSize) and FAutoSnap then + begin NewSize := 0; + DoOnSnap(NewSize = 0); + end; end; procedure TfpgSplitter.HandleLMouseDown(x, y: integer; shiftstate: TShiftState); -- cgit v1.2.3-70-g09d2 From 870aa68b4c1da35ed48326c4b376e9edf0f0441f Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 25 Aug 2010 00:32:34 +0200 Subject: fpg_dialog. Minor sanity check. --- src/gui/fpg_dialogs.pas | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_dialogs.pas b/src/gui/fpg_dialogs.pas index 25f01da9..f96d7a44 100644 --- a/src/gui/fpg_dialogs.pas +++ b/src/gui/fpg_dialogs.pas @@ -698,6 +698,8 @@ var end; begin + if Desc = '' then + exit; cp := 1; c := Desc[1]; -- cgit v1.2.3-70-g09d2 From 47de83ddda51711cc86152a76c57bf875a7dddbd Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 25 Aug 2010 15:11:21 +0200 Subject: Treeview bug fix: GotoNextNodeDown did not expand and traverse the last node in RootNode. --- src/gui/fpg_tree.pas | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index 072ec729..37d2af22 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -1152,10 +1152,15 @@ begin end; procedure TfpgTreeView.GotoNextNodeDown; +var + lNode: TfpgTreeNode; begin - if Selection = RootNode.LastSubNode then + if (Selection = RootNode.LastSubNode) and (RootNode.LastSubNode.CountRecursive = 0) then Exit; - Selection := NextNode(Selection); + + lNode := NextNode(Selection); + if lNode <> nil then + Selection := lNode; end; procedure TfpgTreeView.FullCollapse; -- cgit v1.2.3-70-g09d2 From 59b9bc045dedf03bc5a6d14005dabc097ab95e60 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 26 Aug 2010 11:07:07 +0200 Subject: treeview: Improved the page_up/page_down jump size of the scrollbars. --- src/gui/fpg_tree.pas | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index 37d2af22..00ab6c8e 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -1231,8 +1231,10 @@ begin FVScrollbar.Visible := VisibleHeight < (GetNodeHeightSum * GetNodeHeight); FVScrollbar.Min := 0; FVScrollbar.Max := (GetNodeHeightSum * GetNodeHeight) - VisibleHeight + FHScrollbar.Height; + FVScrollbar.PageSize := (VisibleHeight div 4) * 3; // three quarters of the height FHScrollbar.Min := 0; FHScrollbar.Max := MaxNodeWidth - VisibleWidth + FVScrollbar.Width; + FHScrollbar.PageSize := (VisibleWidth div 4) * 3; // three quarters of the height FHScrollbar.Visible := MaxNodeWidth > Width - 2; if not FVScrollbar.Visible then begin -- cgit v1.2.3-70-g09d2 From 41336db4593f4ef94e6eec6c7a78f278f1125f87 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 26 Aug 2010 12:29:37 +0200 Subject: GDI: Correctly implement clipboard support under Windows. This includes unicode text support. --- src/corelib/fpg_base.pas | 3 ++- src/corelib/gdi/fpg_gdi.pas | 49 +++++++++++++++++++++++++++------------------ 2 files changed, 32 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index b9bc394b..dab57e0c 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -531,7 +531,7 @@ type procedure DoSetText(const AValue: TfpgString); virtual; abstract; procedure InitClipboard; virtual; abstract; public - constructor Create; + constructor Create; virtual; property Text: TfpgString read DoGetText write DoSetText; end; @@ -2296,6 +2296,7 @@ end; constructor TfpgClipboardBase.Create; begin + inherited Create; InitClipboard; end; diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index e242bfb6..ccf460e2 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -2350,36 +2350,47 @@ begin end; procedure TfpgGDIClipboard.DoSetText(const AValue: TfpgString); +var + mem: THandle; + po2: PWideChar; + str: PWideChar; begin FClipboardText := AValue; - if OpenClipboard(FClipboardWndHandle) then + if OpenClipboard(0) then begin - EmptyClipboard; - SetClipboardData(CF_TEXT, 0); + str := PWideChar(Utf8Decode(AValue)); + if EmptyClipboard then + begin + // Allocate a global memory object for the text. + mem:= globalalloc(GMEM_MOVEABLE or GMEM_DDESHARE, (length(AValue)+1)*2); + if mem <> 0 then + begin + po2:= globallock(mem); + if po2 <> nil then + begin + move(str^, po2^, (length(AValue)+1)*2); + globalunlock(mem); + if SetClipboardData(CF_UNICODETEXT,longword(mem)) <> 0 then + begin + //writeln('Successfully copied to clipboard'); + end; + end + else + begin + globalfree(mem); + end; + end; + end; CloseClipboard; end; end; procedure TfpgGDIClipboard.InitClipboard; begin - {$WARNING This does not work! 'FPGUI' window class was not registered, - so CreateWindowEx always returns 0} - FClipboardWndHandle := Windows.CreateWindowEx( - 0, // extended window style - 'FPGUI', // registered class name - nil, // window name - 0, // window style - 0, // horizontal position of window - 0, // vertical position of window - 10, // window width - 10, // window height - 0, // handle to parent or owner window - 0, // menu handle or child identifier - MainInstance, // handle to application instance - nil // window-creation data - ); + // nothing to do here end; + { TfpgGDIFileList } function TfpgGDIFileList.EncodeAttributesString(attrs: longword -- cgit v1.2.3-70-g09d2 From ee49fba6339d65c03876097b1c89a331bfb59233 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 29 Aug 2010 12:58:53 +0200 Subject: menu theming: refactored out the menu painting, into the TfpgStyle class * This gives us a bit more flexibility regarding the menu looks. --- src/corelib/fpg_main.pas | 57 ++++++++++++++++++++++++++++++++++++++++++++---- src/gui/fpg_menu.pas | 51 ++++++++++++++++++++++++------------------- 2 files changed, 81 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index c8023408..0e2f5384 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -43,6 +43,8 @@ type TFButtonFlags = set of (btfIsEmbedded, btfIsDefault, btfIsPressed, btfIsSelected, btfHasFocus, btfHasParentColor, btfFlat, btfHover); + + TfpgMenuItemFlags = set of (mifSelected, mifHasFocus, mifSeparator, mifEnabled, mifChecked, mifSubMenu); TFTextFlags = set of (txtLeft, txtHCenter, txtRight, txtTop, txtVCenter, txtBottom, txtWrap, txtDisabled, txtAutoSize); @@ -187,10 +189,9 @@ type { This is very basic for now, just to remind us of theming support. Later we - will rework this to use a Style Manager like the previous fpGUI. Styles must - also move out of fpGFX. Also support Bitmap based styles for easier theme - implementations. } - TfpgStyle = class + will rework this to use a Style Manager like the previous fpGUI. + Also support Bitmap based styles for easier theme implementations. } + TfpgStyle = class(TObject) public DefaultFont: TfpgFont; FixedFont: TfpgFont; @@ -204,6 +205,10 @@ type procedure DrawDirectionArrow(ACanvas: TfpgCanvas; x, y, w, h: TfpgCoord; direction: TArrowDirection); virtual; procedure DrawString(ACanvas: TfpgCanvas; x, y: TfpgCoord; AText: string; AEnabled: boolean = True); virtual; procedure DrawFocusRect(ACanvas: TfpgCanvas; r: TfpgRect); virtual; + procedure DrawMenuRow(ACanvas: TfpgCanvas; r: TfpgRect; AFlags: TfpgMenuItemFlags); virtual; + procedure DrawMenuItem(ACanvas: TfpgCanvas; r: TfpgRect; AFlags: TfpgMenuItemFlags; AText: TfpgString); virtual; + procedure DrawMenuItemSeparator(ACanvas: TfpgCanvas; r: TfpgRect); virtual; + procedure DrawMenuItemImage(ACanvas: TfpgCanvas; x, y: TfpgCoord; r: TfpgRect; AFlags: TfpgMenuItemFlags); virtual; end; @@ -1917,6 +1922,50 @@ begin ACanvas.SetLineStyle(oldLineWidth, oldLineStyle); end; +procedure TfpgStyle.DrawMenuRow(ACanvas: TfpgCanvas; r: TfpgRect; AFlags: TfpgMenuItemFlags); +begin + ACanvas.FillRectangle(r); +end; + +procedure TfpgStyle.DrawMenuItem(ACanvas: TfpgCanvas; r: TfpgRect; + AFlags: TfpgMenuItemFlags; AText: TfpgString); +begin + // +end; + +procedure TfpgStyle.DrawMenuItemSeparator(ACanvas: TfpgCanvas; r: TfpgRect); +begin + ACanvas.SetColor(clShadow1); + ACanvas.DrawLine(r.Left+1, r.Top+2, r.Right, r.Top+2); + ACanvas.SetColor(clHilite2); + ACanvas.DrawLine(r.Left+1, r.Top+3, r.Right, r.Top+3); +end; + +procedure TfpgStyle.DrawMenuItemImage(ACanvas: TfpgCanvas; x, y: TfpgCoord; r: TfpgRect; AFlags: TfpgMenuItemFlags); +var + img: TfpgImage; + lx: TfpgCoord; + ly: TfpgCoord; +begin + if mifChecked in AFlags then + begin + img := fpgImages.GetImage('stdimg.check'); // Do NOT localize + if mifSelected in AFlags then + img.Invert; // invert modifies the original image, so we must restore it later + ACanvas.DrawImage(x, y, img); + if mifSelected in AFlags then + img.Invert; // restore image to original state + end; + if mifSubMenu in AFlags then + begin + img := fpgImages.GetImage('sys.sb.right'); // Do NOT localize + lx := (r.height div 2) - 3; + lx := r.right-lx-2; + ly := y + ((r.Height-img.Height) div 2); + ACanvas.DrawImage(lx, ly, img); + end; +end; + { TfpgCaret } diff --git a/src/gui/fpg_menu.pas b/src/gui/fpg_menu.pas index f7af611d..dbe3a90a 100644 --- a/src/gui/fpg_menu.pas +++ b/src/gui/fpg_menu.pas @@ -123,7 +123,7 @@ type procedure HandlePaint; override; procedure HandleShow; override; procedure HandleClose; override; - procedure DrawItem(mi: TfpgMenuItem; rect: TfpgRect; const AItemFocused: boolean); virtual; + procedure DrawItem(mi: TfpgMenuItem; rect: TfpgRect; AFlags: TfpgMenuItemFlags); virtual; procedure DrawRow(line: integer; const AItemFocused: boolean); virtual; function ItemHeight(mi: TfpgMenuItem): integer; virtual; procedure PrepareToShow; @@ -1051,35 +1051,32 @@ begin Result := TfpgMenuItem(FItems.Items[ind]); end; -procedure TfpgPopupMenu.DrawItem(mi: TfpgMenuItem; rect: TfpgRect; const AItemFocused: boolean); +procedure TfpgPopupMenu.DrawItem(mi: TfpgMenuItem; rect: TfpgRect; AFlags: TfpgMenuItemFlags); var s: string; x: integer; img: TfpgImage; + lFlags: TfpgMenuItemFlags; begin + lFlags := AFlags; if mi.Separator then begin - Canvas.SetColor(clShadow1); - Canvas.DrawLine(rect.Left+1, rect.Top+2, rect.Right, rect.Top+2); - Canvas.SetColor(clHilite2); - Canvas.DrawLine(rect.Left+1, rect.Top+3, rect.Right, rect.Top+3); + fpgStyle.DrawMenuItemSeparator(Canvas, rect); end else begin // process Check mark if needed if mi.Checked then begin - img := fpgImages.GetImage('stdimg.check'); // Do NOT localize - if AItemFocused then - img.Invert; - Canvas.DrawImage(rect.Left, rect.Top, img); - if AItemFocused then - img.Invert; // restore image to original state + lFlags := lFlags + [mifChecked]; + fpgStyle.DrawMenuItemImage(Canvas, rect.Left, rect.Top, rect, lFlags); + lFlags := lFlags - [mifChecked]; end; // process menu item Text x := rect.Left + FSymbolWidth + FTextMargin; mi.DrawText(Canvas, x+cImgWidth, rect.top, cImgWidth); + Canvas.SetColor(Canvas.TextColor); // reset text default color // process menu item Hot Key text if mi.HotKeyDef <> '' then @@ -1091,10 +1088,9 @@ begin // process menu item submenu arrow image if mi.SubMenu <> nil then begin - Canvas.SetColor(Canvas.TextColor); - x := (rect.height div 2) - 3; - img := fpgImages.GetImage('sys.sb.right'); // Do NOT localize - Canvas.DrawImage(rect.right-x-2, rect.Top + ((rect.Height-img.Height) div 2), img); + lFlags := lFlags + [mifSubMenu]; + fpgStyle.DrawMenuItemImage(Canvas, rect.Left, rect.Top, rect, lFlags); + lFlags := lFlags - [mifSubMenu]; end; end; end; @@ -1104,25 +1100,33 @@ var n: integer; r: TfpgRect; mi: TfpgMenuItem; + lFlags: TfpgMenuItemFlags; begin - Canvas.BeginDraw; r.SetRect(FMargin, FMargin, FWidth-(2*FMargin), FHeight-(2*FMargin)); for n := 0 to VisibleCount-1 do begin mi := VisibleItem(n); - + lFlags := []; r.height := ItemHeight(mi); if line = n then begin + if AItemFocused then + lFlags := [mifSelected]; // refering to menu item in active popup menu + if mi.Separator then + lFlags := lFlags + [mifSeparator]; if AItemFocused and (not mi.Separator) then begin - if MenuFocused then + if MenuFocused then // refering to popup menu window begin + lFlags := lFlags + [mifHasFocus]; Canvas.SetColor(clSelection); if mi.Selectable then - Canvas.SetTextColor(clSelectionText) + begin + lFlags := lFlags + [mifEnabled]; + Canvas.SetTextColor(clSelectionText); + end else Canvas.SetTextColor(clMenuDisabled); end @@ -1136,6 +1140,7 @@ begin begin if mi.Enabled then begin + lFlags := lFlags + [mifEnabled]; Canvas.SetColor(BackgroundColor); Canvas.SetTextColor(clMenuText); end @@ -1145,9 +1150,9 @@ begin Canvas.SetTextColor(clMenuDisabled); end; end; - Canvas.FillRectangle(r); - DrawItem(mi, r, AItemFocused); - Canvas.EndDraw(r.Left, r.Top, r.Width, r.Height); + fpgStyle.DrawMenuRow(Canvas, r, lFlags); + DrawItem(mi, r, lFlags); + Exit; //==> end; inc(r.Top, ItemHeight(mi) ); -- cgit v1.2.3-70-g09d2 From 2ffdd747a6f01ba994e8484523695bf7346bca63 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 30 Aug 2010 11:44:24 +0200 Subject: Fix bug returning to previous active window after opening modal form * If you had a main form and a non-modal form, and the non-modal opened a modal window, then the following happened in error: - modal form could open behind non-modal for, treating main form as parent. - when modal form closed, it set main form active, instead of non-modal form. This is now fixed. --- src/corelib/gdi/fpg_gdi.pas | 8 ++++++-- src/corelib/x11/fpg_x11.pas | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index ccf460e2..26abf534 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -1392,8 +1392,12 @@ begin end else if WindowType = wtModalForm then begin - // set parent window to special hidden window. It helps to hide window taskbar button. - FParentWinHandle := wapplication.GetHiddenWindow; + if FocusRootWidget <> nil then + FParentWinHandle := FocusRootWidget.WinHandle + else + // set parent window to special hidden window. It helps to hide window taskbar button. + FParentWinHandle := wapplication.GetHiddenWindow; + // for modal windows, this is necessary FWinStyle := WS_OVERLAPPEDWINDOW or WS_POPUPWINDOW; FWinStyle := FWinStyle and not (WS_MINIMIZEBOX); diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 26c61a69..2b4c0418 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1476,6 +1476,8 @@ begin lmwh := 0; if fpgApplication.PrevModalForm <> nil then lmwh := TfpgX11Window(fpgApplication.PrevModalForm).WinHandle + else if FocusRootWidget <> nil then + lmwh := TfpgX11Window(FocusRootWidget).WinHandle else if fpgApplication.MainForm <> nil then lmwh := TfpgX11Window(fpgApplication.MainForm).WinHandle; if lmwh <> 0 then -- cgit v1.2.3-70-g09d2 From d887cd05952afc036e8f783d89cf43abd9b41a8e Mon Sep 17 00:00:00 2001 From: Jean-Marc Levecque Date: Mon, 30 Aug 2010 15:34:35 +0200 Subject: disable scrollbar buttons when parent is disabled too --- src/gui/fpg_scrollbar.pas | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_scrollbar.pas b/src/gui/fpg_scrollbar.pas index ed12d0d2..5f2ffd6c 100644 --- a/src/gui/fpg_scrollbar.pas +++ b/src/gui/fpg_scrollbar.pas @@ -138,13 +138,13 @@ begin Canvas.BeginDraw; // Do not remove - Scrollbars do painting outside HandlePaint as well! if Orientation = orVertical then begin - DrawButton(0, 0, Width, Width, 'sys.sb.up', (FScrollbarDownPart = sbpUpBack) and (FPosition <> FMin), FPosition <> FMin); - DrawButton(0, Height-Width, Width, Width, 'sys.sb.down', (FScrollbarDownPart = sbpDownForward) and (FPosition <> FMax), FPosition <> FMax); + DrawButton(0, 0, Width, Width, 'sys.sb.up', (FScrollbarDownPart = sbpUpBack) and (FPosition <> FMin), (FPosition <> FMin) and (Parent.Enabled)); + DrawButton(0, Height-Width, Width, Width, 'sys.sb.down', (FScrollbarDownPart = sbpDownForward) and (FPosition <> FMax), (FPosition <> FMax) and (Parent.Enabled)); end else begin - DrawButton(0, 0, Height, Height, 'sys.sb.left', (FScrollbarDownPart = sbpUpBack) and (FPosition <> FMin), FPosition <> FMin); - DrawButton(Width-Height, 0, Height, Height, 'sys.sb.right', (FScrollbarDownPart = sbpDownForward) and (FPosition <> FMax), FPosition <> FMax); + DrawButton(0, 0, Height, Height, 'sys.sb.left', (FScrollbarDownPart = sbpUpBack) and (FPosition <> FMin), (FPosition <> FMin) and (Parent.Enabled)); + DrawButton(Width-Height, 0, Height, Height, 'sys.sb.right', (FScrollbarDownPart = sbpDownForward) and (FPosition <> FMax), (FPosition <> FMax) and (Parent.Enabled)); end; DrawSlider(FRecalc); -- cgit v1.2.3-70-g09d2 From 5ee3a96c5219959d61d42c4c5f6a9c4369a79af3 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 1 Sep 2010 08:14:23 +0200 Subject: GDI: replaced debug writeln's with SendDebug() calls. We should rather use the debug server for debugging, it works much better. --- src/corelib/gdi/fpg_gdi.pas | 46 +++++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index 26abf534..9851ebb7 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -32,7 +32,11 @@ uses Classes, SysUtils, fpg_base, - fpg_impl; + fpg_impl + {$IFDEF DEBUG} + ,dbugintf + {$ENDIF DEBUG} + ; { Constants missing on windows unit } const @@ -631,7 +635,7 @@ begin if not (w is TfpgGDIWindow) then begin - {$IFDEF DEBUG} writeln('fpGFX/GDI: Unable to detect Window - using DefWindowProc'); {$ENDIF} + {$IFDEF DEBUG} SendDebug('fpGFX/GDI: Unable to detect Window - using DefWindowProc'); {$ENDIF} Result := Windows.DefWindowProc(hwnd, uMsg, wParam, lParam); Exit; //==> end; @@ -646,8 +650,7 @@ begin WM_KEYDOWN, WM_SYSKEYDOWN: begin - {$IFDEF DEBUG} write(w.ClassName + ': '); {$ENDIF} - {$IFDEF DEBUG} writeln('wm_char, wm_keyup, wm_keydown'); {$ENDIF} + {$IFDEF DEBUG} SendDebug(w.ClassName + ': wm_char, wm_keyup, wm_keydown'); {$ENDIF} kwg := FindKeyboardFocus; if kwg <> nil then w := kwg; @@ -715,7 +718,7 @@ begin begin {$IFDEF DEBUG} if uMsg <> WM_MOUSEMOVE then - writeln('fpGFX/GDI: Found a mouse button event'); + SendDebug('fpGFX/GDI: Found a mouse button event'); {$ENDIF} // msgp.mouse.x := smallint(lParam and $FFFF); // msgp.mouse.y := smallint((lParam and $FFFF0000) shr 16); @@ -725,16 +728,15 @@ begin if uMsg = WM_MOUSEMOVE then begin {$IFDEF DEBUG} - Writeln('old x=', OldMousePos.x, ' y=', OldMousePos.y); - writeln('new x=', msgp.mouse.x, ' y=', msgp.mouse.y); - writeln('---'); + SendDebugFmt('old x=%d y=%d', [OldMousePos.x, OldMousePos.y]); + SendDebugFmt('new x=%d y=%d', [msgp.mouse.x, msgp.mouse.y]); {$ENDIF} // Check for fake MouseMove messages - Windows sucks! if (OldMousePos.x = msgp.mouse.x) and (OldMousePos.y = msgp.mouse.y) then begin {$IFDEF DEBUG} - writeln('We received fake MouseMove messages'); + SendDebug('We received fake MouseMove messages'); {$ENDIF} Exit; //==> end @@ -790,7 +792,7 @@ begin WM_RBUTTONDOWN: begin {$IFDEF DEBUG} - writeln('fpGUI/GDI:', w.ClassName + ': MouseButtonDown event'); + SendDebug('fpGUI/GDI: ' + w.ClassName + ': MouseButtonDown event'); {$ENDIF} // This is temporary and we should try and move it to // the UI Designer code instead. @@ -807,7 +809,7 @@ begin WM_RBUTTONUP: begin {$IFDEF DEBUG} - writeln('fpGFX/GDI:', w.ClassName + ': MouseButtonUp event'); + SendDebug('fpGFX/GDI: '+ w.ClassName + ': MouseButtonUp event'); {$ENDIF} // This is temporary and we should try and move it to // the UI Designer code instead. @@ -875,8 +877,7 @@ begin msgp.rect.Height := smallint((lParam and $FFFF0000) shr 16); {$IFDEF DEBUG} - write(w.ClassName + ': '); - writeln('WM_SIZE: width=',msgp.rect.width, ' height=',msgp.rect.height); + SendDebugFmt('%s: WM_SIZE w=%d h=%d', [w.ClassName, msgp.rect.width, msgp.rect.Height]); {$ENDIF} // skip minimize... if lparam <> 0 then @@ -886,8 +887,7 @@ begin WM_MOVE: begin {$IFDEF DEBUG} - write(w.ClassName + ': '); - writeln('WM_MOVE'); + SendDebug(w.ClassName + ': WM_MOVE'); {$ENDIF} // window decoration correction ... if (GetWindowLong(w.WinHandle, GWL_STYLE) and WS_CHILD) = 0 then @@ -908,8 +908,7 @@ begin WM_MOUSEWHEEL: begin {$IFDEF DEBUG} - write(w.ClassName + ': '); - writeln('WM_MOUSEWHEEL: wp=',IntToHex(wparam,8), ' lp=',IntToHex(lparam,8)); + SendDebugFmt('%s: WM_MOUSEWHEEL: wp=%s lp=%s', [w.ClassName, IntToHex(wparam,8), IntToHex(lparam,8)]); {$ENDIF} pt.x := GET_X_LPARAM(lParam); pt.y := GET_Y_LPARAM(lParam); @@ -941,7 +940,7 @@ begin WM_ACTIVATE: // We currently use WM_NCACTIVATE instead! begin {$IFDEF DEBUG} - writeln(w.ClassName + ': WM_ACTIVATE'); + SendDebug(w.ClassName + ': WM_ACTIVATE'); {$ENDIF} if (Lo(wParam) = WA_INACTIVE) then fpgSendMessage(nil, w, FPGM_DEACTIVATE) @@ -958,8 +957,7 @@ begin WM_NCACTIVATE: begin {$IFDEF DEBUG} - write(w.ClassName + ': WM_NCACTIVATE '); - writeln(wParam); + SendDebugFmt('%s: WM_NCACTIVATE wparam=%d', [w.ClassName, wParam]); {$ENDIF} if (wParam = 0) then fpgSendMessage(nil, w, FPGM_DEACTIVATE) @@ -969,7 +967,7 @@ begin if (PopupListFirst <> nil) and (PopupListFirst.Visible) then begin {$IFDEF DEBUG} - writeln(' Blockmsg = True (part 1) : ' + PopupListFirst.ClassName); + SendDebug(' Blockmsg = True (part 1) : ' + PopupListFirst.ClassName); {$ENDIF} // This is ugly but needed for now to get TfpgCombobox to work if (PopupListFirst.ClassName <> 'TDropDownWindow') then @@ -1002,8 +1000,7 @@ begin WM_CLOSE: begin {$IFDEF DEBUG} - write(w.ClassName + ': '); - writeln('WM_Close'); + SendDebug(w.ClassName + ': WM_Close'); {$ENDIF} fpgSendMessage(nil, w, FPGM_CLOSE, msgp); end; @@ -1011,8 +1008,7 @@ begin WM_PAINT: begin {$IFDEF DEBUG} - write(w.ClassName + ': '); - writeln('WM_PAINT'); + SendDebug(w.ClassName + ': WM_PAINT'); {$ENDIF} Windows.BeginPaint(w.WinHandle, @PaintStruct); fpgSendMessage(nil, w, FPGM_PAINT, msgp); -- cgit v1.2.3-70-g09d2 From a09cc1030473a6fd2d044e0d5e76a4885a66610c Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 1 Sep 2010 08:17:31 +0200 Subject: Replaced debug writeln's with SendDebug() calls. --- src/gui/fpg_form.pas | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_form.pas b/src/gui/fpg_form.pas index 57c156a6..19f8c3e6 100644 --- a/src/gui/fpg_form.pas +++ b/src/gui/fpg_form.pas @@ -153,7 +153,11 @@ implementation uses fpg_main, fpg_popupwindow, - fpg_menu; + fpg_menu + {$IFDEF DEBUG} + ,dbugintf + {$ENDIF} + ; type // to access protected methods @@ -188,9 +192,14 @@ end; procedure TfpgBaseForm.MsgActivate(var msg: TfpgMessageRec); begin -// writeln('BaseForm - MsgActivate'); + {$IFDEF DEBUG} + SendDebug(Classname + ' ' + Name + '.BaseForm - MsgActivate'); + {$ENDIF} if (fpgApplication.TopModalForm = nil) or (fpgApplication.TopModalForm = self) then begin + {$IFDEF DEBUG} + SendDebug('Inside if block'); + {$ENDIF} FocusRootWidget := self; if FFormDesigner <> nil then @@ -386,7 +395,9 @@ var i: integer; wg: TfpgWidget; begin -// writeln(Classname, '.Keypress'); + {$IFDEF DEBUG} + SendDebug(Classname + '.Keypress'); + {$ENDIF} // find the TfpgMenuBar if not consumed then begin -- cgit v1.2.3-70-g09d2 From 010ab34eea7566bf7eb024ccf8affbe2afc63ce2 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 3 Sep 2010 11:41:25 +0200 Subject: fpmake.pas version update and minor code update due to FPC 2.4.x changes --- src/fpmake.pas | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/fpmake.pas b/src/fpmake.pas index 5afc82ea..d2ec68b4 100644 --- a/src/fpmake.pas +++ b/src/fpmake.pas @@ -48,7 +48,7 @@ var begin with Installer do begin P := AddPackage('fpgui'); - P.Version := '0.6.3'; + P.Version := '0.7.0'; P.Author := 'Graeme Geldenhuys'; P.Email := 'graemeg@gmail.com'; P.License := 'Modified LGPL'; @@ -72,9 +72,10 @@ begin // else // Defaults.GlobalUnitDir := Format('c:\fpc\2.2.3\units\%s-%s', [CurrentCPU, CurrentOS]); - if Defaults.OS in AllUnixOSes - then Defaults.Options := Defaults.Options + '-dX11' - else Defaults.Options := Defaults.Options + '-dGDI'; + if Defaults.OS in AllUnixOSes then + Defaults.Options.Add('-dX11') + else + Defaults.Options.Add('-dGDI'); P.SourcePath.Add('corelib'); P.SourcePath.Add('corelib/x11', AllUnixOSes); -- cgit v1.2.3-70-g09d2 From 51873a60f8297032595f59d1e6052e5c38974156 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 3 Sep 2010 12:54:04 +0200 Subject: Let fpmake.pas us the version info from fpGUI's include file directly. --- src/fpmake.pas | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/fpmake.pas b/src/fpmake.pas index d2ec68b4..e8ab12ab 100644 --- a/src/fpmake.pas +++ b/src/fpmake.pas @@ -42,13 +42,16 @@ program fpmake; uses sysutils, fpmkunit; +const + {$I VERSION_FILE.inc} + var T: TTarget; P: TPackage; begin with Installer do begin P := AddPackage('fpgui'); - P.Version := '0.7.0'; + P.Version := FPGUI_VERSION; P.Author := 'Graeme Geldenhuys'; P.Email := 'graemeg@gmail.com'; P.License := 'Modified LGPL'; -- cgit v1.2.3-70-g09d2 From a55bc67a8f95ccc2f7e6a58a90fdc3c9191cc2a7 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 3 Sep 2010 12:54:38 +0200 Subject: fpmake: add missing units and include file dependencies. --- src/fpmake.pas | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/fpmake.pas b/src/fpmake.pas index e8ab12ab..fc682604 100644 --- a/src/fpmake.pas +++ b/src/fpmake.pas @@ -92,6 +92,7 @@ begin P.UnitPath.Add('gui'); P.UnitPath.Add('gui/db'); + P.IncludePath.Add('.'); P.IncludePath.Add('corelib'); P.IncludePath.Add('corelib/x11', AllUnixOSes); P.IncludePath.Add('corelib/gdi', AllWindowsOSes); @@ -129,15 +130,21 @@ begin { corelib } T := P.Targets.AddUnit('fpg_base.pas'); + T.Dependencies.AddInclude('keys.inc'); + T.Dependencies.AddInclude('predefinedcolors.inc'); T := P.Targets.AddUnit('fpg_imagelist.pas'); T := P.Targets.AddUnit('fpg_popupwindow.pas'); T := P.Targets.AddUnit('fpg_translations.pas'); T := P.Targets.AddUnit('fpg_cmdlineparams.pas'); T := P.Targets.AddUnit('fpg_imgfmt_bmp.pas'); + T := P.Targets.AddUnit('fpg_imgfmt_jpg.pas'); T := P.Targets.AddUnit('fpg_stdimages.pas'); T := P.Targets.AddUnit('fpg_utils.pas'); + T := P.Targets.AddUnit('fpg_imgutils.pas'); T := P.Targets.AddUnit('fpg_command_intf.pas'); T := P.Targets.AddUnit('fpg_main.pas'); + T.Dependencies.AddInclude('VERSION_FILE.inc'); + T.Dependencies.AddInclude('fpg_msgqueue.inc'); T := P.Targets.AddUnit('fpg_stringhashlist.pas'); T := P.Targets.AddUnit('fpg_widget.pas'); T := P.Targets.AddUnit('fpg_constants.pas'); @@ -147,6 +154,7 @@ begin T := P.Targets.AddUnit('fpg_extinterpolation.pas'); T := P.Targets.AddUnit('fpg_pofiles.pas'); T := P.Targets.AddUnit('fpg_stringutils.pas'); + T := P.Targets.AddUnit('fpg_extgraphics.pas'); { corelib include files } // T := P.Sources.AddSrc('keys.inc'); @@ -186,6 +194,10 @@ begin T := P.Targets.AddUnit('fpg_menu.pas'); T := P.Targets.AddUnit('fpg_progressbar.pas'); T := P.Targets.AddUnit('fpg_style.pas'); + T := P.Targets.AddUnit('fpg_spinedit.pas'); + T := P.Targets.AddUnit('fpg_colorwheel.pas'); + T := P.Targets.AddUnit('fpg_colormapping.pas'); + T := P.Targets.AddUnit('fpg_editbtn.pas'); Run; end; -- cgit v1.2.3-70-g09d2 From 791f2b60e7cf2f350c0d87a20ba0b48d8d0f32c4 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 3 Sep 2010 12:56:31 +0200 Subject: Renamed fpmake.pas to fpmake.pp - as per FPC requirements. --- src/fpmake.pas | 204 --------------------------------------------------------- src/fpmake.pp | 204 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 204 insertions(+), 204 deletions(-) delete mode 100644 src/fpmake.pas create mode 100644 src/fpmake.pp (limited to 'src') diff --git a/src/fpmake.pas b/src/fpmake.pas deleted file mode 100644 index fc682604..00000000 --- a/src/fpmake.pas +++ /dev/null @@ -1,204 +0,0 @@ -{ - fpGUI - Free Pascal GUI Toolkit - - Copyright (C) 2006 - 2010 See the file AUTHORS.txt, included in this - distribution, for details of the copyright. - - See the file COPYING.modifiedLGPL, included in this distribution, - for details about redistributing fpGUI. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - Description: - This program is kindly supplied by Henry Vermaak. It uses the new - fpmake build system introduced in FPC 2.2.2. fpmake is supposed to - replace the Makefile build system. - - Usage: - - Compile fpmake.pas as follows: - fpc fpmake.pas - - - To find out more about what fpmake can do and see some help - fpmake --help - - - Build and install fpGUI - fpmake install - - Note that if you installed FPC in a non-standard location on you - system you need to tell fpmake which compiler and units to use. The - following is all in one line: - fpmake.exe -r c:\fpc\2.2.3\bin\i386-win32\ppc386.exe - -UG c:\fpc\2.2.3\units\i386-win32 - or - ./fpmake -v build -UG /opt/fpc/lib/fpc/2.2.3/units/i386-linux/ -} - -program fpmake; - -{$mode objfpc} -{$h+} - -uses sysutils, fpmkunit; - -const - {$I VERSION_FILE.inc} - -var - T: TTarget; - P: TPackage; -begin - with Installer do begin - P := AddPackage('fpgui'); - P.Version := FPGUI_VERSION; - P.Author := 'Graeme Geldenhuys'; - P.Email := 'graemeg@gmail.com'; - P.License := 'Modified LGPL'; - P.Description := 'fpGUI Toolkit - a custom written GUI toolkit for Free Pascal.'; - -// P.Dependencies.Add('fcl'); - { Fill in more package details here } - - { This shouldn't really be here. fpmake will install to the local - fpc installation, i.e. /usr/[local]/lib/fpc//units//fpgui - if we set the package name to fpgui as above. This base install dir - can be overridden by passing -B to fpmake. The line below will cause - the units to be output in ../lib//fpgui } - Defaults.UnitInstallDir := Format('../lib/%s-%s/', [CurrentCPU, CurrentOS]); - - { If you installed FPC to a non-standard location, you need to specify - where fpmake can find the compiler and RTL units. You can pass that - information via the command line to fpmake, or specify it here in code. } -// if Defaults.OS in AllUnixOSes then -// Defaults.GlobalUnitDir := Format('/opt/fpc/lib/fpc/2.2.3/units/%s-%s/', [CurrentCPU, CurrentOS]) -// else -// Defaults.GlobalUnitDir := Format('c:\fpc\2.2.3\units\%s-%s', [CurrentCPU, CurrentOS]); - - if Defaults.OS in AllUnixOSes then - Defaults.Options.Add('-dX11') - else - Defaults.Options.Add('-dGDI'); - - P.SourcePath.Add('corelib'); - P.SourcePath.Add('corelib/x11', AllUnixOSes); - P.SourcePath.Add('corelib/gdi', AllWindowsOSes); - P.SourcePath.Add('gui'); - P.SourcePath.Add('gui/db'); - - P.UnitPath.Add('corelib'); - P.UnitPath.Add('corelib/x11', AllUnixOSes); - P.UnitPath.Add('corelib/gdi', AllWindowsOSes); - P.UnitPath.Add('gui'); - P.UnitPath.Add('gui/db'); - - P.IncludePath.Add('.'); - P.IncludePath.Add('corelib'); - P.IncludePath.Add('corelib/x11', AllUnixOSes); - P.IncludePath.Add('corelib/gdi', AllWindowsOSes); - P.IncludePath.Add('gui'); - - { todo: add unit and include dependency for all } - P.Sources.AddSrcFiles('corelib/*.pas'); - P.Sources.AddSrcFiles('gui/*.pas'); - if Defaults.OS in AllUnixOSes - then P.Sources.AddSrcFiles('corelib/x11/*.pas') - else P.Sources.AddSrcFiles('corelib/gdi/*.pas'); - - { x11 and gdi common } -// if Defaults.OS in AllUnixOSes -// then - P.Targets.AddUnit('corelib/x11/fpg_impl.pas', AllWindowsOSes); -// else - P.Targets.AddUnit('corelib/gdi/fpg_impl.pas', AllUnixOSes); -// T := P.Targets.AddUnit('fpg_impl.pas'); - - { corelib/x11 } - T := P.Targets.AddUnit('fpg_keyconv_x11.pas', AllUnixOSes); - T := P.Targets.AddUnit('fpg_netlayer_x11.pas', AllUnixOSes); - T := P.Targets.AddUnit('fpg_x11.pas', AllUnixOSes); -{ with T.Dependencies do begin - AddUnit('fpg_xft_x11'); - AddUnit('fpg_netlayer_x11'); - AddUnit('fpg_base'); - AddUnit('fpg_impl'); - end; } - T := P.Targets.AddUnit('fpg_xft_x11.pas', AllUnixOSes); - - { corelib/gdi } - T := P.Targets.AddUnit('fpg_gdi.pas', AllWindowsOSes); - - { corelib } - T := P.Targets.AddUnit('fpg_base.pas'); - T.Dependencies.AddInclude('keys.inc'); - T.Dependencies.AddInclude('predefinedcolors.inc'); - T := P.Targets.AddUnit('fpg_imagelist.pas'); - T := P.Targets.AddUnit('fpg_popupwindow.pas'); - T := P.Targets.AddUnit('fpg_translations.pas'); - T := P.Targets.AddUnit('fpg_cmdlineparams.pas'); - T := P.Targets.AddUnit('fpg_imgfmt_bmp.pas'); - T := P.Targets.AddUnit('fpg_imgfmt_jpg.pas'); - T := P.Targets.AddUnit('fpg_stdimages.pas'); - T := P.Targets.AddUnit('fpg_utils.pas'); - T := P.Targets.AddUnit('fpg_imgutils.pas'); - T := P.Targets.AddUnit('fpg_command_intf.pas'); - T := P.Targets.AddUnit('fpg_main.pas'); - T.Dependencies.AddInclude('VERSION_FILE.inc'); - T.Dependencies.AddInclude('fpg_msgqueue.inc'); - T := P.Targets.AddUnit('fpg_stringhashlist.pas'); - T := P.Targets.AddUnit('fpg_widget.pas'); - T := P.Targets.AddUnit('fpg_constants.pas'); - T.ResourceStrings := True; - T := P.Targets.AddUnit('fpg_strings.pas'); - T := P.Targets.AddUnit('fpg_wuline.pas'); - T := P.Targets.AddUnit('fpg_extinterpolation.pas'); - T := P.Targets.AddUnit('fpg_pofiles.pas'); - T := P.Targets.AddUnit('fpg_stringutils.pas'); - T := P.Targets.AddUnit('fpg_extgraphics.pas'); - - { corelib include files } -// T := P.Sources.AddSrc('keys.inc'); - - { gui/db } - T := P.Targets.AddUnit('fpgui_db.pas'); - - { gui } - T := P.Targets.AddUnit('fpg_animation.pas'); - T := P.Targets.AddUnit('fpg_combobox.pas'); - T := P.Targets.AddUnit('fpg_edit.pas'); - T := P.Targets.AddUnit('fpg_hint.pas'); - T := P.Targets.AddUnit('fpg_listbox.pas'); - T := P.Targets.AddUnit('fpg_mru.pas'); - T := P.Targets.AddUnit('fpg_radiobutton.pas'); - T := P.Targets.AddUnit('fpg_tab.pas'); - T := P.Targets.AddUnit('fpg_basegrid.pas'); - T := P.Targets.AddUnit('fpg_customgrid.pas'); - T := P.Targets.AddUnit('fpg_form.pas'); - T := P.Targets.AddUnit('fpg_hyperlink.pas'); - T := P.Targets.AddUnit('fpg_listview.pas'); - T := P.Targets.AddUnit('fpg_panel.pas'); - T := P.Targets.AddUnit('fpg_scrollbar.pas'); - T := P.Targets.AddUnit('fpg_trackbar.pas'); - T := P.Targets.AddUnit('fpg_button.pas'); - T := P.Targets.AddUnit('fpg_dialogs.pas'); - T := P.Targets.AddUnit('fpg_gauge.pas'); - T := P.Targets.AddUnit('fpg_iniutils.pas'); - T := P.Targets.AddUnit('fpg_memo.pas'); - T := P.Targets.AddUnit('fpg_popupcalendar.pas'); - T := P.Targets.AddUnit('fpg_splitter.pas'); - T := P.Targets.AddUnit('fpg_tree.pas'); - T := P.Targets.AddUnit('fpg_checkbox.pas'); - T := P.Targets.AddUnit('fpg_editcombo.pas'); - T := P.Targets.AddUnit('fpg_grid.pas'); - T := P.Targets.AddUnit('fpg_label.pas'); - T := P.Targets.AddUnit('fpg_menu.pas'); - T := P.Targets.AddUnit('fpg_progressbar.pas'); - T := P.Targets.AddUnit('fpg_style.pas'); - T := P.Targets.AddUnit('fpg_spinedit.pas'); - T := P.Targets.AddUnit('fpg_colorwheel.pas'); - T := P.Targets.AddUnit('fpg_colormapping.pas'); - T := P.Targets.AddUnit('fpg_editbtn.pas'); - - Run; - end; -end. diff --git a/src/fpmake.pp b/src/fpmake.pp new file mode 100644 index 00000000..fc682604 --- /dev/null +++ b/src/fpmake.pp @@ -0,0 +1,204 @@ +{ + fpGUI - Free Pascal GUI Toolkit + + Copyright (C) 2006 - 2010 See the file AUTHORS.txt, included in this + distribution, for details of the copyright. + + See the file COPYING.modifiedLGPL, included in this distribution, + for details about redistributing fpGUI. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + Description: + This program is kindly supplied by Henry Vermaak. It uses the new + fpmake build system introduced in FPC 2.2.2. fpmake is supposed to + replace the Makefile build system. + + Usage: + - Compile fpmake.pas as follows: + fpc fpmake.pas + + - To find out more about what fpmake can do and see some help + fpmake --help + + - Build and install fpGUI + fpmake install + + Note that if you installed FPC in a non-standard location on you + system you need to tell fpmake which compiler and units to use. The + following is all in one line: + fpmake.exe -r c:\fpc\2.2.3\bin\i386-win32\ppc386.exe + -UG c:\fpc\2.2.3\units\i386-win32 + or + ./fpmake -v build -UG /opt/fpc/lib/fpc/2.2.3/units/i386-linux/ +} + +program fpmake; + +{$mode objfpc} +{$h+} + +uses sysutils, fpmkunit; + +const + {$I VERSION_FILE.inc} + +var + T: TTarget; + P: TPackage; +begin + with Installer do begin + P := AddPackage('fpgui'); + P.Version := FPGUI_VERSION; + P.Author := 'Graeme Geldenhuys'; + P.Email := 'graemeg@gmail.com'; + P.License := 'Modified LGPL'; + P.Description := 'fpGUI Toolkit - a custom written GUI toolkit for Free Pascal.'; + +// P.Dependencies.Add('fcl'); + { Fill in more package details here } + + { This shouldn't really be here. fpmake will install to the local + fpc installation, i.e. /usr/[local]/lib/fpc//units//fpgui + if we set the package name to fpgui as above. This base install dir + can be overridden by passing -B to fpmake. The line below will cause + the units to be output in ../lib//fpgui } + Defaults.UnitInstallDir := Format('../lib/%s-%s/', [CurrentCPU, CurrentOS]); + + { If you installed FPC to a non-standard location, you need to specify + where fpmake can find the compiler and RTL units. You can pass that + information via the command line to fpmake, or specify it here in code. } +// if Defaults.OS in AllUnixOSes then +// Defaults.GlobalUnitDir := Format('/opt/fpc/lib/fpc/2.2.3/units/%s-%s/', [CurrentCPU, CurrentOS]) +// else +// Defaults.GlobalUnitDir := Format('c:\fpc\2.2.3\units\%s-%s', [CurrentCPU, CurrentOS]); + + if Defaults.OS in AllUnixOSes then + Defaults.Options.Add('-dX11') + else + Defaults.Options.Add('-dGDI'); + + P.SourcePath.Add('corelib'); + P.SourcePath.Add('corelib/x11', AllUnixOSes); + P.SourcePath.Add('corelib/gdi', AllWindowsOSes); + P.SourcePath.Add('gui'); + P.SourcePath.Add('gui/db'); + + P.UnitPath.Add('corelib'); + P.UnitPath.Add('corelib/x11', AllUnixOSes); + P.UnitPath.Add('corelib/gdi', AllWindowsOSes); + P.UnitPath.Add('gui'); + P.UnitPath.Add('gui/db'); + + P.IncludePath.Add('.'); + P.IncludePath.Add('corelib'); + P.IncludePath.Add('corelib/x11', AllUnixOSes); + P.IncludePath.Add('corelib/gdi', AllWindowsOSes); + P.IncludePath.Add('gui'); + + { todo: add unit and include dependency for all } + P.Sources.AddSrcFiles('corelib/*.pas'); + P.Sources.AddSrcFiles('gui/*.pas'); + if Defaults.OS in AllUnixOSes + then P.Sources.AddSrcFiles('corelib/x11/*.pas') + else P.Sources.AddSrcFiles('corelib/gdi/*.pas'); + + { x11 and gdi common } +// if Defaults.OS in AllUnixOSes +// then + P.Targets.AddUnit('corelib/x11/fpg_impl.pas', AllWindowsOSes); +// else + P.Targets.AddUnit('corelib/gdi/fpg_impl.pas', AllUnixOSes); +// T := P.Targets.AddUnit('fpg_impl.pas'); + + { corelib/x11 } + T := P.Targets.AddUnit('fpg_keyconv_x11.pas', AllUnixOSes); + T := P.Targets.AddUnit('fpg_netlayer_x11.pas', AllUnixOSes); + T := P.Targets.AddUnit('fpg_x11.pas', AllUnixOSes); +{ with T.Dependencies do begin + AddUnit('fpg_xft_x11'); + AddUnit('fpg_netlayer_x11'); + AddUnit('fpg_base'); + AddUnit('fpg_impl'); + end; } + T := P.Targets.AddUnit('fpg_xft_x11.pas', AllUnixOSes); + + { corelib/gdi } + T := P.Targets.AddUnit('fpg_gdi.pas', AllWindowsOSes); + + { corelib } + T := P.Targets.AddUnit('fpg_base.pas'); + T.Dependencies.AddInclude('keys.inc'); + T.Dependencies.AddInclude('predefinedcolors.inc'); + T := P.Targets.AddUnit('fpg_imagelist.pas'); + T := P.Targets.AddUnit('fpg_popupwindow.pas'); + T := P.Targets.AddUnit('fpg_translations.pas'); + T := P.Targets.AddUnit('fpg_cmdlineparams.pas'); + T := P.Targets.AddUnit('fpg_imgfmt_bmp.pas'); + T := P.Targets.AddUnit('fpg_imgfmt_jpg.pas'); + T := P.Targets.AddUnit('fpg_stdimages.pas'); + T := P.Targets.AddUnit('fpg_utils.pas'); + T := P.Targets.AddUnit('fpg_imgutils.pas'); + T := P.Targets.AddUnit('fpg_command_intf.pas'); + T := P.Targets.AddUnit('fpg_main.pas'); + T.Dependencies.AddInclude('VERSION_FILE.inc'); + T.Dependencies.AddInclude('fpg_msgqueue.inc'); + T := P.Targets.AddUnit('fpg_stringhashlist.pas'); + T := P.Targets.AddUnit('fpg_widget.pas'); + T := P.Targets.AddUnit('fpg_constants.pas'); + T.ResourceStrings := True; + T := P.Targets.AddUnit('fpg_strings.pas'); + T := P.Targets.AddUnit('fpg_wuline.pas'); + T := P.Targets.AddUnit('fpg_extinterpolation.pas'); + T := P.Targets.AddUnit('fpg_pofiles.pas'); + T := P.Targets.AddUnit('fpg_stringutils.pas'); + T := P.Targets.AddUnit('fpg_extgraphics.pas'); + + { corelib include files } +// T := P.Sources.AddSrc('keys.inc'); + + { gui/db } + T := P.Targets.AddUnit('fpgui_db.pas'); + + { gui } + T := P.Targets.AddUnit('fpg_animation.pas'); + T := P.Targets.AddUnit('fpg_combobox.pas'); + T := P.Targets.AddUnit('fpg_edit.pas'); + T := P.Targets.AddUnit('fpg_hint.pas'); + T := P.Targets.AddUnit('fpg_listbox.pas'); + T := P.Targets.AddUnit('fpg_mru.pas'); + T := P.Targets.AddUnit('fpg_radiobutton.pas'); + T := P.Targets.AddUnit('fpg_tab.pas'); + T := P.Targets.AddUnit('fpg_basegrid.pas'); + T := P.Targets.AddUnit('fpg_customgrid.pas'); + T := P.Targets.AddUnit('fpg_form.pas'); + T := P.Targets.AddUnit('fpg_hyperlink.pas'); + T := P.Targets.AddUnit('fpg_listview.pas'); + T := P.Targets.AddUnit('fpg_panel.pas'); + T := P.Targets.AddUnit('fpg_scrollbar.pas'); + T := P.Targets.AddUnit('fpg_trackbar.pas'); + T := P.Targets.AddUnit('fpg_button.pas'); + T := P.Targets.AddUnit('fpg_dialogs.pas'); + T := P.Targets.AddUnit('fpg_gauge.pas'); + T := P.Targets.AddUnit('fpg_iniutils.pas'); + T := P.Targets.AddUnit('fpg_memo.pas'); + T := P.Targets.AddUnit('fpg_popupcalendar.pas'); + T := P.Targets.AddUnit('fpg_splitter.pas'); + T := P.Targets.AddUnit('fpg_tree.pas'); + T := P.Targets.AddUnit('fpg_checkbox.pas'); + T := P.Targets.AddUnit('fpg_editcombo.pas'); + T := P.Targets.AddUnit('fpg_grid.pas'); + T := P.Targets.AddUnit('fpg_label.pas'); + T := P.Targets.AddUnit('fpg_menu.pas'); + T := P.Targets.AddUnit('fpg_progressbar.pas'); + T := P.Targets.AddUnit('fpg_style.pas'); + T := P.Targets.AddUnit('fpg_spinedit.pas'); + T := P.Targets.AddUnit('fpg_colorwheel.pas'); + T := P.Targets.AddUnit('fpg_colormapping.pas'); + T := P.Targets.AddUnit('fpg_editbtn.pas'); + + Run; + end; +end. -- cgit v1.2.3-70-g09d2 From 0121d0a244374874545b1647db1a4a11ad318842 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 3 Sep 2010 16:57:07 +0200 Subject: compiler hint: removed unused unit from uses clause --- src/corelib/fpg_imgfmt_bmp.pas | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_imgfmt_bmp.pas b/src/corelib/fpg_imgfmt_bmp.pas index 48b25d5b..1ea61551 100644 --- a/src/corelib/fpg_imgfmt_bmp.pas +++ b/src/corelib/fpg_imgfmt_bmp.pas @@ -25,8 +25,7 @@ interface uses Classes, SysUtils, - fpg_main, - fpg_base; + fpg_main; procedure ReadImage_BMP(img: TfpgImage; bmp: Pointer; bmpsize: longword); function LoadImage_BMP(const AFileName: String): TfpgImage; -- cgit v1.2.3-70-g09d2 From d39c55fc75c07c01887840d15e493cbdcf892847 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 3 Sep 2010 16:58:16 +0200 Subject: fpmake: updated with all latest units and dependencies. 'fpmake archive' and 'fpmake build' and 'fpmake install' now works. --- src/fpmake.pp | 77 ++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/fpmake.pp b/src/fpmake.pp index fc682604..a99975a0 100644 --- a/src/fpmake.pp +++ b/src/fpmake.pp @@ -65,7 +65,7 @@ begin if we set the package name to fpgui as above. This base install dir can be overridden by passing -B to fpmake. The line below will cause the units to be output in ../lib//fpgui } - Defaults.UnitInstallDir := Format('../lib/%s-%s/', [CurrentCPU, CurrentOS]); +// Defaults.UnitInstallDir := Format('../lib/%s-%s/', [CurrentCPU, CurrentOS]); { If you installed FPC to a non-standard location, you need to specify where fpmake can find the compiler and RTL units. You can pass that @@ -99,34 +99,14 @@ begin P.IncludePath.Add('gui'); { todo: add unit and include dependency for all } +{ P.Sources.AddSrcFiles('corelib/*.pas'); P.Sources.AddSrcFiles('gui/*.pas'); - if Defaults.OS in AllUnixOSes - then P.Sources.AddSrcFiles('corelib/x11/*.pas') - else P.Sources.AddSrcFiles('corelib/gdi/*.pas'); - - { x11 and gdi common } -// if Defaults.OS in AllUnixOSes -// then - P.Targets.AddUnit('corelib/x11/fpg_impl.pas', AllWindowsOSes); -// else - P.Targets.AddUnit('corelib/gdi/fpg_impl.pas', AllUnixOSes); -// T := P.Targets.AddUnit('fpg_impl.pas'); - - { corelib/x11 } - T := P.Targets.AddUnit('fpg_keyconv_x11.pas', AllUnixOSes); - T := P.Targets.AddUnit('fpg_netlayer_x11.pas', AllUnixOSes); - T := P.Targets.AddUnit('fpg_x11.pas', AllUnixOSes); -{ with T.Dependencies do begin - AddUnit('fpg_xft_x11'); - AddUnit('fpg_netlayer_x11'); - AddUnit('fpg_base'); - AddUnit('fpg_impl'); - end; } - T := P.Targets.AddUnit('fpg_xft_x11.pas', AllUnixOSes); - - { corelib/gdi } - T := P.Targets.AddUnit('fpg_gdi.pas', AllWindowsOSes); + if Defaults.OS in AllUnixOSes then + P.Sources.AddSrcFiles('corelib/x11/*.pas') + else + P.Sources.AddSrcFiles('corelib/gdi/*.pas'); +} { corelib } T := P.Targets.AddUnit('fpg_base.pas'); @@ -139,7 +119,10 @@ begin T := P.Targets.AddUnit('fpg_imgfmt_bmp.pas'); T := P.Targets.AddUnit('fpg_imgfmt_jpg.pas'); T := P.Targets.AddUnit('fpg_stdimages.pas'); + T.Dependencies.AddInclude('stdimages.inc'); T := P.Targets.AddUnit('fpg_utils.pas'); + T.Dependencies.AddInclude('fpg_utils_impl.inc', AllUnixOSes); + T.Dependencies.AddInclude('fpg_utils_impl.inc', AllWindowsOSes); T := P.Targets.AddUnit('fpg_imgutils.pas'); T := P.Targets.AddUnit('fpg_command_intf.pas'); T := P.Targets.AddUnit('fpg_main.pas'); @@ -148,16 +131,42 @@ begin T := P.Targets.AddUnit('fpg_stringhashlist.pas'); T := P.Targets.AddUnit('fpg_widget.pas'); T := P.Targets.AddUnit('fpg_constants.pas'); + T.Dependencies.AddInclude('lang_en.inc'); + T.Dependencies.AddInclude('lang_af.inc'); + T.Dependencies.AddInclude('lang_de.inc'); + T.Dependencies.AddInclude('lang_es.inc'); + T.Dependencies.AddInclude('lang_fr.inc'); + T.Dependencies.AddInclude('lang_it.inc'); + T.Dependencies.AddInclude('lang_pt.inc'); + T.Dependencies.AddInclude('lang_ru.inc'); T.ResourceStrings := True; - T := P.Targets.AddUnit('fpg_strings.pas'); +// T := P.Targets.AddUnit('fpg_strings.pas'); // this unit is not used in fpGUI T := P.Targets.AddUnit('fpg_wuline.pas'); T := P.Targets.AddUnit('fpg_extinterpolation.pas'); T := P.Targets.AddUnit('fpg_pofiles.pas'); T := P.Targets.AddUnit('fpg_stringutils.pas'); T := P.Targets.AddUnit('fpg_extgraphics.pas'); - { corelib include files } -// T := P.Sources.AddSrc('keys.inc'); + + { corelib/x11 } + T := P.Targets.AddUnit('fpg_keyconv_x11.pas', AllUnixOSes); + T := P.Targets.AddUnit('fpg_netlayer_x11.pas', AllUnixOSes); + T := P.Targets.AddUnit('fpg_xft_x11.pas', AllUnixOSes); + T := P.Targets.AddUnit('fpg_impl.pas', AllUnixOSes); + T := P.Targets.AddUnit('fpg_x11.pas', AllUnixOSes); + T.Dependencies.AddUnit('fpg_xft_x11'); + T.Dependencies.AddUnit('fpg_netlayer_x11'); + T.Dependencies.AddUnit('fpg_base'); + T.Dependencies.AddUnit('fpg_impl'); + T := P.Targets.AddUnit('fpg_interface.pas', AllUnixOSes); + + + { corelib/gdi } + T := P.Targets.AddUnit('fpg_impl.pas', AllWindowsOSes); + T := P.Targets.AddUnit('fpg_gdi.pas', AllWindowsOSes); + T.Dependencies.AddInclude('fpg_keys_gdi.inc', AllWindowsOSes); + T := P.Targets.AddUnit('fpg_interface.pas', AllWindowsOSes); + { gui/db } T := P.Targets.AddUnit('fpgui_db.pas'); @@ -181,6 +190,14 @@ begin T := P.Targets.AddUnit('fpg_trackbar.pas'); T := P.Targets.AddUnit('fpg_button.pas'); T := P.Targets.AddUnit('fpg_dialogs.pas'); + T.Dependencies.AddInclude('charmapdialog.inc'); + T.Dependencies.AddInclude('colordialog.inc'); + T.Dependencies.AddInclude('inputquerydialog.inc'); + T.Dependencies.AddInclude('messagedialog.inc'); + T.Dependencies.AddInclude('newdirdialog.inc'); + T.Dependencies.AddInclude('promptuserdialog.inc'); + T.Dependencies.AddInclude('selectdirdialog.inc'); + T.Dependencies.AddInclude('logo.inc'); T := P.Targets.AddUnit('fpg_gauge.pas'); T := P.Targets.AddUnit('fpg_iniutils.pas'); T := P.Targets.AddUnit('fpg_memo.pas'); -- cgit v1.2.3-70-g09d2 From fa1a6f27733fe5f41b6bac714752c798c450a259 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sat, 4 Sep 2010 17:06:33 +0200 Subject: Rearranged some constants and moved fpgAddColon() to fpg_utils unit. * Also added some new constants for future use. --- src/corelib/fpg_base.pas | 3 +-- src/corelib/fpg_constants.pas | 17 ++++++++--------- src/corelib/fpg_utils.pas | 9 +++++++++ 3 files changed, 18 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index dab57e0c..e4db5c7d 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -101,8 +101,6 @@ const // The special keys, based on the well-known keyboard scan codes {$I keys.inc} - { Default fpGUI help viewer } - FPG_HELPVIEWER = 'docview'; var FPG_DEFAULT_FONT_DESC: string = 'Arial-10:antialias=true'; @@ -633,6 +631,7 @@ implementation uses fpg_main, // needed for fpgApplication & fpgNamedColor fpg_utils, // needed for fpgFileList + fpg_constants, typinfo, process; diff --git a/src/corelib/fpg_constants.pas b/src/corelib/fpg_constants.pas index d93e5208..d83f855b 100644 --- a/src/corelib/fpg_constants.pas +++ b/src/corelib/fpg_constants.pas @@ -30,7 +30,7 @@ unit fpg_constants; interface uses - SysUtils, fpg_base; + SysUtils; resourcestring @@ -92,21 +92,20 @@ const ONE_MILISEC = 1/MSecsPerDay; DEFAULT_HINT_PAUSE = 500; // in milliseconds + + { Default fpGUI help viewer } + FPG_HELPVIEWER = 'docview'; + + FPG_CONFIG_DIR = 'fpgui_toolkit' + PathDelim; + FPG_BOOKMARKS_FILE = 'bookmarks.ini'; + FPG_BOOKMARK_SECTION = 'bookmarks'; -{ This is so that when we support LTR and RTL languages, the colon will be - added at the correct place. } -function fpgAddColon(const AText: TfpgString): TfpgString; implementation -function fpgAddColon(const AText: TfpgString): TfpgString; -begin - { TODO : Check language direction and add colon at appropriate end. } - result := AText + ':'; -end; end. diff --git a/src/corelib/fpg_utils.pas b/src/corelib/fpg_utils.pas index a53c7efe..7c7869b4 100644 --- a/src/corelib/fpg_utils.pas +++ b/src/corelib/fpg_utils.pas @@ -41,6 +41,9 @@ function fpgAppendPathDelim(const Path: TfpgString): TfpgString; function fpgHasSubDirs(const Dir: TfpgString; AShowHidden: Boolean): Boolean; function fpgAllFilesMask: TfpgString; function fpgConvertLineEndings(const s: TfpgString): TfpgString; +{ This is so that when we support LTR and RTL languages, the colon will be + added at the correct place. } +function fpgAddColon(const AText: TfpgString): TfpgString; // RTL wrapper filesystem functions with platform independant encoding @@ -234,6 +237,12 @@ begin Inc(i); end; +function fpgAddColon(const AText: TfpgString): TfpgString; +begin + { TODO : Check language direction and add colon at appropriate end. This is very crude! } + Result := AText + ':'; +end; + end. -- cgit v1.2.3-70-g09d2 From 2fbea91592ff8bfa552fa9b2ee9b71d813e5d8e8 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sat, 4 Sep 2010 17:07:33 +0200 Subject: Replaced some RTL functions with fpGUI wrapper ones to handle Unicode text. --- src/corelib/fpg_base.pas | 2 +- src/gui/fpg_iniutils.pas | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index e4db5c7d..0ac42f04 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -2137,7 +2137,7 @@ var begin // Default location is in same directory as current running application // This location might change in the future. - ext := ExtractFileExt(ParamStr(0)); + ext := fpgExtractFileExt(ParamStr(0)); Result := fpgExtractFilePath(ParamStr(0)) + FPG_HELPVIEWER + ext; end; diff --git a/src/gui/fpg_iniutils.pas b/src/gui/fpg_iniutils.pas index 1c8fe45a..857ccf63 100644 --- a/src/gui/fpg_iniutils.pas +++ b/src/gui/fpg_iniutils.pas @@ -52,6 +52,7 @@ function gINI(const AFileName: string = ''): TfpgINIFile; implementation uses + fpg_base, fpg_main, fpg_constants, fpg_utils; @@ -71,12 +72,12 @@ end; constructor TfpgINIFile.CreateExt(const AFileName: string; AReadOnly: Boolean); var - lDir: string; - lFileName: string; + lDir: TfpgString; + lFileName: TfpgString; begin FReadOnly := AReadOnly; - lDir := ExtractFileDir(AFileName); - lFileName := ExtractFileName(AFileName); + lDir := fpgExtractFileDir(AFileName); + lFileName := fpgExtractFileName(AFileName); if lDir = '' then lDir := GetAppConfigDir(False); @@ -84,7 +85,7 @@ begin lDir := lDir + PathDelim; { We used a non-Global config dir, so should be able to create the dir } - if not ForceDirectories(lDir) then + if not fpgForceDirectories(lDir) then raise Exception.CreateFmt(rsErrFailedToCreateDir, [lDir]); -- cgit v1.2.3-70-g09d2 From 25397622e83c98b6680416731795ae83c3a5488f Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sat, 4 Sep 2010 17:08:34 +0200 Subject: Added two new standard images: Home folder and Bookmarks icons --- src/corelib/fpg_stdimages.pas | 10 + src/corelib/keys.inc | 2 +- src/corelib/stdimages.inc | 3922 +++++++++++++++++++++-------------------- 3 files changed, 2024 insertions(+), 1910 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_stdimages.pas b/src/corelib/fpg_stdimages.pas index d62ef77c..9e256654 100644 --- a/src/corelib/fpg_stdimages.pas +++ b/src/corelib/fpg_stdimages.pas @@ -224,6 +224,16 @@ begin @stdimg_folder_open_file_16, sizeof(stdimg_folder_open_file_16), 0,0); + fpgImages.AddMaskedBMP( + 'stdimg.folderhome', + @stdimg_folder_home_16, + sizeof(stdimg_folder_home_16), 0,0); + + fpgImages.AddMaskedBMP( + 'stdimg.bookmark', + @stdimg_bookmark_16, + sizeof(stdimg_bookmark_16), 0,0); + fpgImages.AddMaskedBMP( 'stdimg.open', @stdimg_folder_open_16, diff --git a/src/corelib/keys.inc b/src/corelib/keys.inc index f8b24b34..4d62c4bf 100644 --- a/src/corelib/keys.inc +++ b/src/corelib/keys.inc @@ -5,7 +5,7 @@ GII info at } -{%mainunit gfxbase.pas} +{%mainunit fpg_base.pas} const diff --git a/src/corelib/stdimages.inc b/src/corelib/stdimages.inc index c2129704..6cf46c8e 100644 --- a/src/corelib/stdimages.inc +++ b/src/corelib/stdimages.inc @@ -1,128 +1,332 @@ Const - stdimg_edit : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0,235, 10, 0, 0,235, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 98,146, 94, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, + stdimg_arrow_down : Array[0..149] of byte = ( + 66, 77,150, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 7, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 96, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, + 255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255, 0, 0, 0, + 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + +Const + stdimg_arrow_left : Array[0..137] of byte = ( + 66, 77,138, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 4, 0, 0, 0, 7, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 84, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, + 255,255, 0,255, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98,146, 94, 98,146, 94, - 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255, - 255,255,255,255,160,160,160,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255, 0, 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, - 88, 88, 88,220,220,220,160,160,160,160,160,160, 0, 0, 0,160,160, - 160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, - 160,160, 0, 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, 88, 88, 88, - 220,220,220,255,255,255,255,255,255, 88, 88, 88, 48, 48, 48, 0, 0, - 64,195,195,195,220,220,220,255,255,255,255,255,255,255,255,255, 0, - 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, 88, 88, 88,220,220,220, - 255,255,255,255,255,255,255,255,255, 88, 88, 88,168,220,255, 0, 88, - 192, 0, 88,192,195,195,195,220,220,220,255,255,255, 0, 0, 0, 98, - 146, 94, 98,146, 94, 98,146, 94, 88, 88, 88,220,220,220,195,195,195, - 195,195,195,195,195,195,160,160,160,168,220,255,168,220,255,168,220, - 255, 0, 88,192, 0, 88,192,160,160,160, 0, 0, 0, 98,146, 94, 98, - 146, 94, 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255, - 255,255,255,255,255,255, 88,168,255,168,220,255,168,220,255,168,220, - 255,168,220,255, 0, 0, 64, 0, 0, 0, 98,146, 94, 98,146, 94, 98, - 146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255,255, - 255,255,255,160,160,160,168,220,255,168,220,255, 0,128,255, 0,128, - 255, 0, 88,192, 48, 48, 48, 98,146, 94, 98,146, 94, 98,146, 94, 88, - 88, 88,220,220,220,195,195,195,195,195,195,195,195,195,195,195,195, - 195,195,195, 88,168,255,168,220,255, 0,128,255, 0,128,255, 0,128, - 255, 0, 88,192, 48, 48, 48, 98,146, 94, 98,146, 94, 88, 88, 88,220, - 220,220,255,255,255,255,255,255,255,255,255,255,255,255,195,195,195, - 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, - 255, 0, 88,192, 0, 0, 64, 98,146, 94, 88, 88, 88,220,220,220,255, - 255,255,255,255,255,255,255,255,255,255,255,195,195,195,255,255,255, - 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, - 255, 0, 88,192, 98,146, 94, 88, 88, 88,220,220,220,195,195,195,195, - 195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195, - 195,195,195, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, - 255, 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255, - 255,255,255,255,255,195,195,195,255,255,255,255,255,255,255,255,255, - 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 98,146, - 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255,255,255, - 255,255,195,195,195,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 88,168,255, 88,168,255, 0,128,255, 98,146, 94, 88, 88, - 88,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, - 220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, - 88, 88, 88, 88,168,255, 88,168,255, 98,146, 94, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 98,146, 94, 98,146, 94); + 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, + 255, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, + 0, 0); Const - stdimg_menu_save_all_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + stdimg_arrow_right : Array[0..137] of byte = ( + 66, 77,138, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 4, 0, 0, 0, 7, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 84, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, + 0, 0, 0, 0,255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, 0, + 0, 0,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, 0, + 0,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, + 0,255); + +Const + stdimg_arrow_up : Array[0..149] of byte = ( + 66, 77,150, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 7, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 96, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, + 255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, + 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, + 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0); + +Const + stdimg_bevel : Array[0..1709] of byte = ( + 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 120, 6, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,200,208,212, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,202,138, - 97,195,132, 88,211,139,104,225,143,112,220,141,108,218,139,109,215, - 138,110,205,139,108,171,109, 68,166, 95, 46,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,198,131, 85,239,206, - 186,221,255,255,135,238,199,162,244,215,162,246,215,140,238,199,224, - 255,255,221,162,133,171,106, 62,255,255,255,255,255,255,255,255,255, - 255,255,255,208,153,117,203,148,110,195,127, 81,239,182,154,234,243, - 232, 81,191,132,111,201,152,113,201,153, 84,191,132,228,244,233,221, - 156,123,170,105, 58,255,255,255,255,255,255,255,255,255,255,255,255, - 205,147,107,241,212,195,196,129, 84,234,182,151,243,243,234,237,241, - 230,239,241,230,239,240,230,237,241,229,243,245,237,213,156,121,176, - 112, 68,255,255,255,255,255,255,213,163,131,208,158,123,199,131, 88, - 238,180,153,201,139, 97,230,181,146,226,167,129,225,167,129,222,163, - 125,220,161,123,219,159,121,217,158,119,212,154,115,187,126, 87,255, - 255,255,255,255,255,210,157,121,242,216,201,201,145,106,225,190,159, - 202,141,101,234,184,153,221,165,126,221,166,128,219,163,124,217,160, - 122,217,160,121,216,159,120,216,158,120,191,132, 93,255,255,255,255, - 255,255,208,154,118,242,197,175,205,153,115,215,184,148,200,136, 93, - 239,191,161,253,252,250,254,252,251,254,253,253,254,253,252,253,251, - 250,253,252,251,221,168,133,193,127, 83,255,255,255,255,255,255,208, - 156,120,238,197,173,207,155,119,235,192,164,199,134, 91,239,192,158, - 255,255,255,204,147,110,255,255,255,255,255,255,255,251,247,255,248, - 241,228,175,140,199,138, 97,255,255,255,255,255,255,212,164,130,235, - 197,169,204,142,101,238,190,161,204,141,101,243,205,176,255,255,255, - 227,199,179,255,255,255,255,255,255,255,255,255,255,255,255,234,191, - 161,201,137, 96,255,255,255,255,255,255,213,165,134,238,199,175,202, - 140, 99,237,191,158,212,151,110,212,158,123,208,152,113,214,164,130, - 205,142,104,205,144,105,208,154,117,209,153,115,200,139, 98,238,220, - 208,255,255,255,255,255,255,212,161,127,242,205,181,210,156,121,244, - 211,186,255,255,255,231,206,189,255,255,254,255,255,255,251,246,242, - 248,241,237,237,199,173,208,152,117,255,255,255,255,255,255,255,255, - 255,255,255,255,211,160,126,242,205,179,218,165,129,212,160,126,214, - 166,131,219,176,146,211,157,123,211,158,123,211,159,123,209,154,117, - 207,154,118,240,225,214,255,255,255,255,255,255,255,255,255,255,255, - 255,215,165,134,246,216,193,255,255,255,233,211,195,255,255,255,255, - 255,255,255,255,255,255,255,255,238,205,181,212,162,130,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,221,173, - 141,221,179,151,218,174,143,223,183,156,216,166,136,216,168,137,218, - 175,146,219,175,145,212,164,131,241,227,217,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, + 255,128,128,128,200,208,212,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, + 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, 0,255, + 255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,255,255, + 255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255, + 255,255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, + 200,208,212,200,208,212,128,128,128,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,200,208,212,128, + 128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255, + 128,128,128,255,255,255,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,128,128,128,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,255,255,255, + 200,208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, + 0,255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128, + 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,255,255,255,200,208,212,128,128,128,255,255,255,255, 0,255,255, + 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,128,128,128,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,255,255,255,200,208,212,128,128,128,255,255,255, + 255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255, + 255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,255,255,255,200,208,212,128,128, + 128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128, + 128,128,255,255,255,200,208,212,200,208,212,200,208,212,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0, + 255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, + 200,208,212,200,208,212,128,128,128,255,255,255,255, 0,255,255, 0, + 255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,255, + 255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, + 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255, + 200,208,212,255,255,255,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,128,128,128,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128, + 255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128, + 128,255,255,255,200,208,212,255,255,255,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,128,128,128,200,208,212,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, + 0,255,128,128,128,255,255,255,200,208,212,255,255,255,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, + 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,255,255, + 255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,128, + 128,128,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, + 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, 0, + 255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200, + 208,212,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,128,128,128,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,255, + 255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, + 255,255,255,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, + 128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, + 255,128,128,128,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); + 255,255,255,255,200,208,212,255,255,255,255, 0,255,255, 0,255, 0, + 0, 0,255, 0,255,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,200,208,212,255, 0,255, + 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255, 0, 0, 0); Const - stdimg_btn_ok_16 : Array[0..821] of byte = ( + stdimg_bookmark_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,223,209,197,157,105, 71,135, 74, 32,135, 74, + 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32, + 255, 0,255,150, 96, 59,168,109, 61,215,169,130,182,134, 96,162,115, + 77,166,122, 85,172,129, 95,177,136,103,181,143,111,185,149,118,189, + 155,126,194,160,133,197,165,139,200,169,144,135, 74, 32,255, 0,255, + 135, 74, 32,188,132, 80,216,169,130,179,130, 90,156,107, 66,147,110, + 75,127,111, 86,166,120, 82,169,124, 87,151,124, 95,150,128,101,179, + 137,103,182,141,108,199,167,142,135, 74, 32,255, 0,255,135, 74, 32, + 188,132, 80,216,169,130,179,130, 90,156,107, 66, 26,104,116, 12,108, + 126, 37,107,116, 68,110,109, 9,103,121, 8,102,120,149,130,106,182, + 141,108,198,165,139,135, 74, 32,255, 0,255,135, 74, 32,188,132, 80, + 216,169,130,179,130, 90,156,107, 66, 23,106,120, 64,207,227, 50,182, + 202, 38,157,176, 72,221,240, 18,114,131,145,129,105,182,141,108,197, + 163,137,135, 74, 32,255, 0,255,135, 74, 32,188,132, 80,216,169,130, + 179,130, 90,156,107, 66, 35,106,115, 52,186,206, 79,233,252, 79,233, + 252, 78,231,250, 3, 99,118,162,133,104,182,141,108,195,161,134,135, + 74, 32,255, 0,255,135, 74, 32,188,132, 80,216,169,130,179,130, 90, + 68,104, 99, 19,118,136, 73,224,242, 79,233,252, 79,233,252, 79,232, + 251, 36,151,170, 33,109,119,169,138,108,194,159,131,135, 74, 32,255, + 0,255,135, 74, 32,188,132, 80,216,169,130,162,127, 93, 3, 98,118, + 60,198,216,113,232,247,194,247,254,215,250,254,135,239,252, 74,216, + 235, 19,121,140,108,122,112,193,157,128,135, 74, 32,255, 0,255,135, + 74, 32,188,132, 80,216,169,130,179,130, 90, 68,104,100, 24,106,119, + 3, 97,119,147,221,232,223,250,253, 10,106,125, 18,106,122, 43,111, + 121,163,137,109,191,155,126,135, 74, 32,255, 0,255,135, 74, 32,188, + 132, 80,216,169,130,179,130, 90,156,107, 66,159,111, 71,111,109, 90, + 47,135,150,122,198,210, 62,112,114,175,133, 98,179,137,103,182,141, + 108,190,153,123,135, 74, 32,255, 0,255,135, 74, 32,188,132, 80,216, + 169,130,179,130, 90,156,107, 66,159,111, 71,162,115, 77, 38,106,115, + 13,102,120,146,123, 95,175,133, 98,179,137,103,182,141,108,189,151, + 120,135, 74, 32,255, 0,255,135, 74, 32,182,128, 81,183,136,102,172, + 124, 92,166,122, 89,167,122, 89,167,123, 89,169,126, 92,170,128, 94, + 174,131, 96,175,133, 98,179,137,103,182,141,108,187,149,118,135, 74, + 32,255, 0,255,135, 74, 32,156,104, 67,153, 98, 60,156,102, 64,153, + 102, 63,159,110, 72,166,119, 84,170,126, 90,172,129, 93,174,131, 96, + 176,135,100,179,137,103,182,141,108,186,146,115,135, 74, 32,255, 0, + 255,135, 74, 32,150, 92, 47,203,188,176,236,233,230,249,246,244,249, + 247,244,250,247,245,250,247,245,250,247,245,250,248,245,250,248,246, + 251,248,246,251,248,246,251,249,247,135, 74, 32,255, 0,255,150, 96, + 59,160,101, 54,213,202,193,210,217,213,214,220,217,218,224,221,222, + 228,225,227,231,229,231,235,233,235,239,237,240,242,241,244,246,245, + 249,250,249,253,253,253,135, 74, 32,255, 0,255,223,209,197,157,105, + 71,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32, + 135, 74, 32,135, 74, 32); + +Const + stdimg_btn_cancel_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255, 55,131, 61, 52,125, - 58,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255, 64,142, 71, 84,163, 92, 79,159, 87, 51,125, - 57,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 73,154, 81, 91,172,100,119,202,130,116,200,126, 81,160, 89, 52,126, - 58,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 81,166, 90, 99,181,109, + 255,255,255,255,255,255,255,255,255, 63, 61,237, 59, 56,235,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 33, + 31,227, 30, 28,226,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 74, 71,240, 79, 76,242, 64, 62,237, 60, 57,235,255,255, + 255,255,255,255,255,255,255,255,255,255, 39, 37,229, 36, 34,228, 49, + 47,234, 31, 29,226,255,255,255,255,255,255,255,255,255, 84, 81,243, + 88, 86,245, 99, 97,250, 88, 85,246, 65, 63,237, 61, 58,236,255,255, + 255,255,255,255, 48, 45,231, 44, 42,230, 65, 63,241, 76, 74,246, 49, + 47,234, 31, 29,226,255,255,255,255,255,255, 89, 86,245, 91, 88,246, + 101, 98,250,113,112,255, 89, 86,246, 66, 64,238, 62, 59,236, 57, 55, + 235, 53, 50,233, 71, 69,242, 99, 98,255, 74, 72,244, 47, 45,233, 34, + 32,227,255,255,255,255,255,255,255,255,255, 90, 87,245, 91, 89,246, + 102, 99,250,116,113,255, 90, 88,246, 67, 65,238, 62, 60,236, 80, 77, + 244,104,103,255, 80, 78,245, 54, 52,235, 42, 39,229,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 91, 88,246, 92, 90,246, + 103,100,250,116,114,255,115,112,255,112,110,255,110,108,255, 87, 85, + 247, 63, 61,238, 50, 48,232,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 92, 89,246, 93, 91,247, + 121,118,255, 89, 86,255, 87, 84,255,114,112,255, 72, 70,240, 60, 57, + 235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 97, 94,248, 93, 90,246,125,121,255, + 94, 91,255, 91, 88,255,118,116,255, 70, 67,239, 65, 63,237,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,105,103,251,102, 99,249,112,109,251,128,126,255,126,123,255, + 124,121,255,121,119,255, 94, 92,247, 71, 68,239, 66, 64,238,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,113,110,253,110, + 107,252,119,116,253,134,130,255,118,115,252,100, 98,248, 96, 93,247, + 109,106,250,123,121,255, 96, 93,247, 72, 69,239, 67, 65,238,255,255, + 255,255,255,255,255,255,255,118,115,255,116,113,254,125,122,254,138, + 135,255,124,121,253,108,105,251, 99, 97,249, 95, 92,247, 97, 94,248, + 110,108,250,125,122,255, 97, 95,247, 73, 70,240, 68, 65,238,255,255, + 255,255,255,255,119,116,255,122,119,255,129,126,255,129,126,254,116, + 113,253,108,105,251,255,255,255,255,255,255, 96, 93,247, 98, 95,248, + 111,109,251,126,124,255, 98, 95,248, 74, 71,240, 69, 66,238,255,255, + 255,255,255,255,119,116,255,122,119,255,121,118,254,114,111,253,255, + 255,255,255,255,255,255,255,255,255,255,255, 97, 94,248,100, 97,248, + 106,104,249, 84, 81,243, 79, 77,242,255,255,255,255,255,255,255,255, + 255,255,255,255,119,116,255,119,116,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 98, 95,248, 93, 91,247, + 89, 86,245,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 99, 96,248,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_btn_close_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,183,183,183,174,174,174, 48,113,169, 44,110,166, 40,107, + 163, 36,104,160, 33,102,158, 29, 99,155, 26, 97,153, 23, 95,151, 20, + 92,148, 17, 91,147,108,108,108,108,108,108,255,255,255,255,255,255, + 255,255,255,255,255,255, 54,117,173,134,182,216,131,179,215,129,178, + 214,125,175,213,123,173,212,121,171,211,118,170,210,116,168,209, 21, + 93,149,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 60,121,177,139,185,218,102,162,206, 98,160,205, 95,157, + 203, 91,154,201, 88,151,200, 84,149,199,119,171,211, 25, 96,152,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 66,125,181,143,189,220,108,167,208,103,164,207,100,161,205, 96,158, + 204, 92,155,202, 89,153,201,123,173,212, 30,100,156,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 72,130,186, + 147,192,221,113,171,210,109,168,209,105,165,207,102,162,206, 98,159, + 204, 94,156,203,127,176,213, 35,103,159,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 78,134,190,152,195,223, + 119,175,213,115,172,211,111,169,210,107,167,208, 91,183,227, 84,194, + 237,129,180,215, 40,107,163,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 83,138,194,156,198,225,124,179,215, + 121,177,213,117,173,212,113,171,210, 95,186,228, 75,212,255,124,187, + 224, 46,111,167,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255, 89,142,198,160,201,227,130,184,217,126,181,216, + 122,178,214,119,175,213,115,172,211,109,171,212,140,186,218, 51,115, + 171,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255, 94,145,201,164,204,228,135,187,219,132,185,218,128,182,216, + 124,179,215,121,176,213,116,173,212,143,189,220, 57,119,175,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 99, + 149,205,168,207,229,140,191,221,136,189,220,133,186,219,129,183,217, + 126,180,215,122,178,214,148,193,221, 63,124,180,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,103,152,208,171, + 209,231,144,194,223,141,192,222,138,190,220,135,187,219,131,184,218, + 128,182,216,153,196,224, 69,128,184,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,107,155,211,174,212,232,171, + 211,232,170,209,231,168,207,229,165,205,228,162,203,228,160,201,226, + 157,199,225, 75,132,188,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,110,157,213,108,155,211,105,154,210,102, + 151,207, 99,149,205, 96,147,203, 92,144,200, 89,142,198, 85,139,195, + 81,136,192,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_btn_ok_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, 55,131, 61, 52,125, + 58,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255, 64,142, 71, 84,163, 92, 79,159, 87, 51,125, + 57,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 73,154, 81, 91,172,100,119,202,130,116,200,126, 81,160, 89, 52,126, + 58,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 81,166, 90, 99,181,109, 126,206,137,123,204,135,118,202,129,118,201,129, 82,162, 90, 53,127, 59,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255, 89,176, 99,107,189,118,132,210,144,122,201,133, @@ -156,437 +360,265 @@ Const 255,255,255,255,255,255); Const - stdimg_font_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,128,128,128,135,135,135,133, - 133,133,133,133,133,128,128,128,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 88, 88, 88,102,102,102,108,108,108, 99, - 99, 99, 83, 83, 83,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 81, 81, 81, 84, 84, 84, 81, 81, 81,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 60, 77,162, 76, 89,162, 77, 90,161, 74, 87,161, 73, 84, - 156,255, 0,255, 80, 80, 77, 45, 45, 45, 74, 74, 74,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 36, 59,219, 0, 43,255, 0, 47,255, 0, 39,239, 45, 62,197,255, 0, - 255, 65, 65, 63, 7, 7, 7, 60, 60, 60,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 19, 38,213, 0, 32,255, 80, 88,168,255, 0,255,255, 0,255, 55, 55, - 55, 0, 0, 0, 58, 58, 58,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 28, 37,212, - 0, 16,255, 86, 89,166,255, 0,255,255, 0,255, 55, 55, 55, 1, 1, - 1, 58, 58, 58,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255, 27, 28,213, 0, 3,255, - 85, 85,168,255, 0,255,255, 0,255, 55, 55, 55, 0, 0, 0, 58, 58, - 58,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 27, 27,213, 0, 0,255, 84, 84,166, - 255, 0,255,255, 0,255, 57, 57, 57, 11, 11, 11, 60, 60, 60,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255, 27, 27,220, 3, 4,166, 62, 62, 88,255, 0,255, - 255, 0,255, 71, 71, 71, 49, 49, 49, 71, 71, 71,255, 0,255,255, 0, - 255,100,100,100,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255, 27, 27,224, 19, 19,138, 52, 52, 32,255, 0,255,255, 0,255, - 78, 78, 78, 93, 93, 93, 76, 76, 76,255, 0,255,255, 0,255, 40, 40, - 40,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 29, - 29,225, 24, 24,153,113,113, 93, 65, 65, 65, 71, 71, 71, 84, 84, 81, - 139,139,138, 75, 75, 75, 74, 74, 74, 66, 66, 66,113,113,113,255, 0, - 255, 78, 78,167, 88, 88,152,255, 0,255,255, 0,255, 48, 48,225, 37, - 38,161,103,103, 98,114,114,111,106,106,103,106,106,115,112,112,115, - 111,111,111,105,105,105,113,113,113,113,113,113,255, 0,255, 83, 83, - 197, 45, 45,204,255, 0,255,255, 0,255, 59, 60,212, 81, 83,247, 72, - 72,146,255, 0,255,255, 0,255, 43, 44,213,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,105,105,181,113,114, - 255, 76, 76,207, 77, 77,191, 97, 98,244,127,128,255, 79, 79,220, 83, - 84,188, 87, 87,223,104,105,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,123,123,178, 80, 80,215, 84, 84, - 223, 80, 80,228, 81, 81,220, 74, 74,218, 79, 79,223, 77, 77,228, 83, - 83,239, 67, 68,231,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); - -Const - stdimg_choice_yes_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255, 12,164, 60, 17,171, 71, 13,173, 73,104,175, - 120,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 87,183,107, 78,224,155, 92,234,170, 92,234,171, 35,192,104, 87,167, - 106,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 32,183, 89, - 102,255,205,104,255,201, 85,255,195, 73,252,184, 24,199,107, 85,166, - 102,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,157,207,165, 22,223,131, 47,255,181, - 45,255,174, 30,255,170, 3,255,160, 17,250,157, 12,190, 93, 68,158, - 86,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255, 68,173, 91, 0,248,147, 1,254,156, 10,254,160, - 18,251,159, 38,250,165, 49,242,160, 70,234,157, 21,183, 87, 74,169, - 94,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255, 7,173, 65, 7,243,144, 45,243,160, 72,243,171,105,199,139, - 96,231,164,112,241,183,110,233,172,102,224,157, 28,169, 74, 57,157, - 75,255, 0,255,255, 0,255,255, 0,255,255, 0,255,148,199,148, 18, - 202,101, 79,235,162,102,241,178, 85,205,129,255, 0,255,172,211,180, - 89,192,126,129,232,178,130,225,170,129,215,157, 45,168, 78, 63,165, - 77,255, 0,255,255, 0,255,255, 0,255,127,196,134, 86,221,149,112, - 231,171,111,233,173,152,207,158,255, 0,255,255, 0,255,255, 0,255, - 101,183,121,151,227,181,150,221,173,157,217,170, 60,168, 84, 44,152, - 56,255, 0,255,255, 0,255,255, 0,255,138,190,142, 97,180,115, 81, - 180,107,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 109,181,120,173,225,187,170,219,179,181,219,181, 84,174,101, 42,147, - 51,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 121,181,123,195,228,198,191,223,191,206,230,203,110,184,122,115,185, - 121,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 126,181,126,218,237,218,228,242,228,169,210,169,173,204,172,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 115,168,114,139,187,139,195,215,194,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); - -Const - stdimg_folder_new_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + stdimg_checkboxes : Array[0..2601] of byte = ( + 66, 77, 42, 10, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 65, 0, 0, 0, 13, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 244, 9, 0, 0,196, 14, 0, 0,196, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, - 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, - 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, - 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, - 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, - 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, - 134,213,172,134,213,172,134,212,172,134,212,172,134,212,172,134,213, - 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, - 215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,213,175, - 138,210,177,142,207,178,144,206,178,145,207,178,144,212,176,140,224, - 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, - 217,179,143,217,179,143,217,179,143,213,180,145,196,186,158,180,192, - 170,164,199,184,163,199,184,170,197,179,188,190,165,212,205,184,133, - 78, 38,135, 74, 32,230,205,181,217,179,143,217,179,143,217,179,143, - 217,179,143,212,180,146,187,190,165,144,206,198, 9,212,234, 95,222, - 232, 95,223,233, 10,212,236,128,212,211,169,216,209,124,104, 74,135, - 74, 32,231,207,184,217,179,143,217,179,143,217,179,143,214,179,144, - 192,188,161,139,206,200, 7,212,235,234,251,252, 4,212,237, 4,212, - 237,234,251,253, 7,212,237,111,226,235,107,153,141,135, 74, 32,232, - 210,188,217,179,143,217,179,143,216,179,143,208,182,149,165,197,181, - 89,219,229, 4,212,237,252,254,254,230,250,252,230,250,252,231,250, - 252, 4,213,237, 78,228,246, 92,189,192,136, 76, 34,230,209,188,234, - 212,192,234,212,192,233,212,192,216,214,198,146,220,221, 63,222,240, - 2,212,237,231,251,253,230,250,253,230,250,253,230,249,252, 1,212, - 237, 57,225,245, 86,202,209,139, 77, 36,136, 76, 34,135, 74, 32,135, - 74, 32,134, 74, 32,127, 92, 57, 97,161,154, 3,211,236,230,250,252, - 230,250,253,230,250,253,230,250,253,230,250,253,230,250,252, 4,213, - 237, 84,197,202,135, 74, 32,204,164,133,188,136, 95,188,136, 94,187, - 136, 94,178,143,106,123,167,154, 3,210,234,231,250,252,230,250,253, - 230,250,253,230,250,253,230,250,253,230,250,252, 4,213,236, 93,177, - 176,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,200, - 163,127,178,196,180, 8,210,233, 1,211,236, 0,212,237,237,251,253, - 237,251,253, 0,212,237, 1,212,237, 6,210,233,146,193,189,225,210, - 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,203, - 194,176,108,139,122, 80,218,232, 33,218,241, 0,212,237, 0,212,237, - 25,218,241, 70,227,245,157,241,251,231,252,254,255,255,255,225,210, - 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,134, 75, 33,207, - 211,204,190,245,252,129,235,248, 95,229,246, 90,229,246,118,234,248, - 183,244,252,234,252,254,253,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); - -Const - stdimg_arrow_right : Array[0..137] of byte = ( - 66, 77,138, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 4, 0, 0, 0, 7, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 84, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, - 0, 0, 0, 0,255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, 0, - 0, 0,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, 0, - 0,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, - 0,255); - -Const - stdimg_folder_up_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, - 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, - 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, - 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, - 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, - 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, - 134,213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213, - 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, - 215,175,138,215,175,138,143, 85, 42,143, 85, 42,143, 85, 42,143, 85, - 42,143, 85, 42,143, 85, 42,215,175,138,215,175,138,215,175,138,226, - 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, - 217,179,143,143, 85, 42,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,217,179,143,217,179,143,228,202,177,135, - 74, 32,135, 74, 32,230,205,181,217,179,143,143, 85, 42,205,164,128, - 143, 85, 42,205,164,128,143, 85, 42,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,217,179,143,230,205,181,135, 74, 32,135, - 74, 32,231,207,184,217,179,143,182,133, 95,143, 85, 42,143, 85, 42, - 143, 85, 42,182,133, 95,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,231,207,184,135, 74, 32,135, 74, 32,232, - 210,188,217,179,143,217,179,143,205,164,128,143, 85, 42,205,164,128, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,232,210,188,135, 74, 32,136, 76, 34,230,209,188,234, - 212,192,234,212,192,234,212,192,234,212,192,234,212,192,226,197,169, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,234,212,192,135, 74, 32,139, 77, 36,136, 76, 34,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,140, 82, 42,218,190,167,227,200,173, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,235,215, - 196,135, 74, 32,135, 74, 32,204,164,133,188,136, 95,188,136, 94,188, - 136, 94,188,136, 94,175,120, 80,144, 86, 46,220,194,172,236,217,199, - 236,217,199,236,217,199,236,217,199,236,217,199,233,214,196,138, 79, - 37,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,205, - 161,124,218,186,158,190,150,120,135, 74, 32,135, 74, 32,135, 74, 32, - 135, 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,168,147,225,210, - 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,218, - 191,169,144, 89, 49,225,210,200,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,210, - 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,225, - 210,200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); - -Const - stdimg_ellipse : Array[0..181] of byte = ( - 66, 77,182, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 10, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0, - 229,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0,229, 0, - 0,255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0, 0, 0, - 0, 0,255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0,255, - 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0, 0, 0, 0, 0, - 255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0,255, 0,229, - 255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0, - 229,255, 0,229,255, 0,229,255, 0,229, 0, 0); - -Const - stdimg_dialog_warning_32 : Array[0..3125] of byte = ( - 66, 77, 54, 12, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 32, 0, 0, 0, 32, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 12, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,252,252,252,244,244,244,237,237,237,235,235, - 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, - 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, - 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, - 235,235,235,235,237,237,237,242,242,242,248,248,248,254,254,254,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,239,239,239, - 222,222,222,198,198,207,190,190,201,186,186,197,186,186,197,186,186, - 197,186,186,197,186,186,197,186,186,197,186,186,197,186,186,197,186, - 186,197,186,186,197,186,186,197,186,186,197,186,186,197,186,186,197, - 186,186,197,186,186,197,186,186,197,186,186,197,186,186,197,190,190, - 201,189,189,200,197,197,206,223,223,223,246,246,246,255,255,255,255, - 255,255,255,255,255,244,244,244,178,178,210, 22, 22,165, 0, 0,159, - 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0, - 159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, - 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, - 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0, - 159, 21, 21,165,173,173,209,250,250,250,255,255,255,255,255,255,243, - 243,243, 39, 39,171, 61, 61,196,112,112,224,117,117,226,116,116,226, - 113,113,225,111,111,225,108,108,224,105,105,223,102,102,223,100,100, - 222, 97, 97,222, 94, 94,221, 92, 92,220, 89, 89,220, 86, 86,219, 83, - 83,219, 81, 81,218, 78, 78,218, 75, 75,217, 72, 72,216, 69, 69,216, - 67, 67,215, 64, 64,215, 62, 62,214, 54, 54,212, 28, 28,188, 20, 20, - 166,246,246,246,255,255,255,255,255,255,253,253,253, 15, 15,166,121, - 121,221, 20, 20,208, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, - 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0, - 204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, - 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, - 0, 0,204, 10, 10,206, 56, 56,207, 2, 2,160,247,247,251,255,255, - 255,255,255,255,255,255,255, 90, 90,194, 89, 89,200, 58, 58,216, 0, - 0,204,163,163,219,210,210,224,210,210,224,211,211,225,212,212,226, - 212,212,226,213,213,227,214,214,228,215,215,229,216,216,230,216,216, - 230,217,217,231,217,217,231,218,218,232,218,218,232,219,219,233,220, - 220,234,221,221,235,222,222,236,193,193,231, 0, 0,204, 27, 27,209, - 44, 44,192, 53, 53,181,255,255,255,255,255,255,255,255,255,255,255, - 255,221,221,242, 25, 25,168,117,117,221, 8, 8,206, 80, 80,211,224, - 224,224,225,225,225,225,225,225,226,226,226,227,227,227,227,227,227, - 228,228,228,229,229,229,230,230,230,230,230,230,231,231,231,232,232, - 232,233,233,233,234,234,234,234,234,234,235,235,235,236,236,236,237, - 237,237,105,105,219, 3, 3,205, 59, 59,211, 14, 14,166,193,193,232, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,109,109, - 201, 85, 85,197, 68, 68,218, 2, 2,204,179,179,219,224,224,224,225, - 225,225,225,225,225,226,226,226,227,227,227,227,227,227,228,228,228, - 60, 60, 60, 55, 55, 55,230,230,230,231,231,231,232,232,232,233,233, - 233,234,234,234,234,234,234,235,235,235,205,205,231, 7, 7,205, 36, - 36,211, 47, 47,188, 70, 70,186,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,234,234,247, 23, 23,169,121,121, - 220, 14, 14,207, 59, 59,209,223,223,223,224,224,224,224,224,224,225, - 225,225,226,226,226,226,226,226,227,227,227, 55, 55, 55, 53, 53, 53, - 230,230,230,230,230,230,231,231,231,232,232,232,233,233,233,234,234, - 234,234,234,234, 82, 82,215, 8, 8,206, 67, 67,210, 10, 10,163,212, - 212,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,129,129,208, 74, 74,190, 81, 81,220, 0, 0, - 204,162,162,218,223,223,223,224,224,224,224,224,224,225,225,225,226, - 226,226,226,226,226,215,215,215,215,215,215,229,229,229,230,230,230, - 230,230,230,231,231,231,232,232,232,233,233,233,186,186,227, 1, 1, - 204, 47, 47,213, 46, 46,185, 96, 96,196,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 244,244,251, 25, 25,169,121,121,218, 23, 23,209, 42, 42,208,221,221, - 223,223,223,223,224,224,224,224,224,224,225,225,225,226,226,226, 37, - 37, 37, 37, 37, 37,228,228,228,229,229,229,229,229,229,230,230,230, - 231,231,231,232,232,232, 59, 59,211, 14, 14,207, 73, 73,209, 11, 11, - 164,228,228,245,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,151,151,216, - 63, 63,185, 94, 94,222, 0, 0,204,141,141,215,223,223,223,223,223, - 223,224,224,224,224,224,224,225,225,225, 27, 27, 27, 27, 27, 27,227, - 227,227,228,228,228,229,229,229,229,229,229,230,230,230,164,164,223, - 0, 0,204, 60, 60,215, 41, 41,179,120,120,205,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,251,251,253, 35, 35,174,116,116,215, - 34, 34,211, 27, 27,206,215,215,221,223,223,223,223,223,223,224,224, - 224,224,224,224, 13, 13, 13, 13, 13, 13,226,226,226,227,227,227,228, - 228,228,229,229,229,226,226,228, 40, 40,209, 24, 24,209, 75, 75,206, - 16, 16,167,241,241,250,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,172,172,224, 49, 49,178,106,106,223, 1, 1,204, - 121,121,213,222,222,222,222,222,222,223,223,223,224,224,224, 3, 3, - 3, 3, 3, 3,225,225,225,226,226,226,227,227,227,228,228,228,140, - 140,218, 1, 1,204, 75, 75,218, 34, 34,174,144,144,213,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254, - 254,255, 49, 49,179,109,109,211, 47, 47,213, 16, 16,206,206,206,220, - 222,222,222,222,222,222,215,215,215, 0, 0, 0, 0, 0, 0,217,217, - 217,225,225,225,226,226,226,218,218,226, 25, 25,207, 36, 36,211, 74, - 74,203, 27, 27,171,249,249,253,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,193,193,232, 36, - 36,173,117,117,224, 4, 4,205,102,102,212,221,221,221,222,222,222, - 204,204,204, 0, 0, 0, 0, 0, 0,206,206,206,225,225,225,225,225, - 225,118,118,216, 4, 4,205, 87, 87,219, 27, 27,170,167,167,222,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255, 69, 69,186,100,100,205, 59, - 59,216, 7, 7,205,195,195,219,221,221,221,193,193,193, 0, 0, 0, - 0, 0, 0,195,195,195,224,224,224,206,206,223, 12, 12,205, 49, 49, - 214, 70, 70,199, 45, 45,178,254,254,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,211,211,238, 25, 25,170,124,124,224, 8, 8,206, 82, - 82,210,221,221,221,218,218,218,207,207,207,207,207,207,220,220,220, - 223,223,223, 97, 97,213, 9, 9,206, 98, 98,219, 17, 17,166,189,189, - 230,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255, 92, 92,194, 89, 89,199, 72, 72,218, 2, 2,204,180,180,217,221, - 221,221,221,221,221,222,222,222,222,222,222,192,192,220, 4, 4,204, - 64, 64,217, 65, 65,194, 68, 68,186,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,226,226,244, 20, 20, - 168,128,128,224, 15, 15,207, 63, 63,209,220,220,220,221,221,221,221, - 221,221,222,222,222, 74, 74,210, 17, 17,207,104,104,219, 11, 11,163, - 210,210,238,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,114,114,202, 79, 79,193, 85, 85, - 220, 0, 0,204,162,162,215,220,220,220,220,220,220,173,173,217, 1, - 1,204, 80, 80,220, 59, 59,189, 92, 92,194,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,238,238,249, 20, 20,167,128,128,222, 25, 25,209, 44, 44, - 207,218,218,219,220,220,220, 53, 53,208, 28, 28,210,106,106,217, 10, - 10,164,226,226,244,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 137,137,211, 67, 67,187, 99, 99,223, 0, 0,204,143,143,214,152,152, - 214, 1, 1,204, 97, 97,223, 51, 51,184,118,118,204,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,246,246,252, 25, 25,169, - 122,122,218, 36, 36,211, 21, 21,206, 23, 23,205, 42, 42,212,104,104, - 215, 14, 14,165,239,239,249,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,158,158,218, 53, 53,181,113,113,225, - 1, 1,204, 3, 3,205,113,113,225, 41, 41,177,142,142,212,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,252,252,254, 37, 37,174,111,111,213, 66, 66,217, 70, 70,218, - 96, 96,210, 25, 25,170,248,248,252,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,180, - 180,227, 22, 22,168,109,109,218,106,106,218, 20, 20,169,165,165,221, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,140,140,211, 12, - 12,165, 8, 8,163,124,124,206,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,252,252,254,251,251,253,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 0,127,127,127,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,255,255,255, + 127,127,127,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,255,255,255,127,127,127,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,255,255,255,127,127,127,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,255,255,255,127,127, + 127,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, + 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, + 255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127,127, 0, + 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255, + 255,127,127,127, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0, 0,255, + 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255, + 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, + 127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,127,127,127,127,127, + 127, 52, 52, 52, 52, 52, 52,127,127,127,191,191,191,255,255,255,127, + 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, + 191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255, + 255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, + 0, 0, 0, 0, 0, 0,255,255,255,191,191,191,255,255,255,127,127, + 127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191, + 255,255,255,127,127,127, 0, 0, 0,127,127,127, 52, 52, 52, 52, 52, + 52, 52, 52, 52,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52,127, + 127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127,127, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255, + 255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, + 255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, + 0,127,127,127,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52,127,127,127,127,127,127,191,191,191,255,255,255, + 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, + 191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0, + 255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, + 0,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,127, + 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, + 191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127, + 127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52,127,127,127,127,127,127, + 127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127, + 127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191, + 255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, + 255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, + 0, 0,127,127,127,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52,127,127,127,127,127,127,191,191,191,255,255, + 255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 191,191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, + 0,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,191,191,191,255,255,255, + 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, + 191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, 52, 52, 52, + 52, 52, 52, 52, 52, 52,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, + 52,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127, + 127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191, + 191,255,255,255,127,127,127, 0, 0, 0,255,255,255, 0, 0, 0, 0, + 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, + 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, + 0, 0, 0,127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,127,127, + 127,127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,191,191,191,255, + 255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,191,191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255); + 255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, + 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255, + 255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0, + 127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, + 191,191,255,255,255,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,191,191,191,255,255,255,127,127,127, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,191,191,191,255,255,255,127,127, + 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,191,191, + 255,255,255,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,191,191,191,255,255,255, 0,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,255,255,255,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,255, + 255,255,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,255,255,255,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,255,255,255,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,255,255,255, + 0); Const - stdimg_arrow_down : Array[0..149] of byte = ( - 66, 77,150, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 7, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 96, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255, 0, 0, 0, - 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + stdimg_choice_no_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255, 98, 98,162,164,164,178,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,152,152,171,101,101,160,255, 0,255,255, 0,255, + 255, 0,255, 48, 48,162, 55, 55,241, 19, 19,202,152,152,172,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,135, + 135,164, 17, 17,205, 48, 48,234, 61, 61,154,255, 0,255,255, 0,255, + 8, 8,224, 72, 72,245, 76, 76,240, 5, 5,200,135,135,163,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,116,116,157, 5, 5,205, 90, + 90,239, 90, 90,244, 9, 9,217,255, 0,255,255, 0,255, 34, 34,254, + 55, 55,255, 89, 89,255, 74, 74,237, 5, 5,199,119,119,156,255, 0, + 255,255, 0,255, 98, 98,152, 8, 8,206, 90, 90,237,115,115,255, 85, + 85,255, 54, 54,253,255, 0,255,255, 0,255, 29, 29,255, 43, 43,255, + 57, 57,255, 86, 86,255, 69, 69,235, 5, 5,196,102,102,148, 85, 85, + 147, 9, 9,203, 84, 84,237,106,106,255, 80, 80,255, 65, 65,255, 52, + 52,255,255, 0,255,255, 0,255,255, 0,255, 30, 30,255, 43, 43,255, + 53, 53,255, 74, 74,255, 55, 55,232, 1, 1,187, 6, 6,192, 68, 68, + 237, 88, 88,255, 71, 71,255, 62, 62,255, 54, 54,249,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255, 31, 31,251, 47, 47,255, + 60, 60,255, 78, 78,255, 49, 49,232, 55, 55,237, 75, 75,255, 56, 56, + 255, 50, 50,255, 55, 55,241,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255, 77, 77,238, 97, 97,255, + 96, 96,255, 96, 96,255, 98, 98,255, 98, 98,255, 91, 91,255, 73, 73, + 227,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255, 43, 43,156, 61, 61,244, 99, 99,255, + 99, 99,255,100,100,255,100,100,255, 54, 54,237, 75, 75,146,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255, 47, 47,123, 0, 0,166, 49, 49,242,107,107,255,106,106,255, + 106,106,255,105,105,255, 33, 33,230, 0, 0,152, 82, 82,127,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 43, 43,115, 0, + 0,164, 55, 55,243,121,121,255,120,120,255,121,121,255,121,121,255, + 120,120,255,116,116,255, 38, 38,229, 0, 0,146, 82, 82,123,255, 0, + 255,255, 0,255,255, 0,255, 45, 45,112, 0, 0,156, 66, 66,242,138, + 138,255,137,137,255,136,136,255,102,102,209,103,103,224,141,141,255, + 136,136,255,132,132,255, 42, 42,227, 0, 0,139, 91, 91,128,255, 0, + 255,255, 0,255, 0, 0,156, 73, 73,242,155,155,255,153,153,255,153, + 153,255,115,115,207,255, 0,255,255, 0,255,110,110,228,158,158,255, + 153,153,255,148,148,255, 47, 47,229, 13, 13,130,255, 0,255,255, 0, + 255, 85, 85,254,174,174,255,169,169,255,168,168,255,119,119,205,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,118,118,228,175,175,255, + 169,169,255,169,169,255, 60, 60,222,255, 0,255,255, 0,255,127,127, + 208,187,187,255,187,187,255,122,122,207,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,126,126,228,200,200,255, + 164,164,255,152,152,199,255, 0,255,255, 0,255,255, 0,255,126,126, + 210,127,127,214,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,121,121,231,154,154,197, + 255, 0,255,255, 0,255); + +Const + stdimg_choice_yes_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255, 12,164, 60, 17,171, 71, 13,173, 73,104,175, + 120,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 87,183,107, 78,224,155, 92,234,170, 92,234,171, 35,192,104, 87,167, + 106,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 32,183, 89, + 102,255,205,104,255,201, 85,255,195, 73,252,184, 24,199,107, 85,166, + 102,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,157,207,165, 22,223,131, 47,255,181, + 45,255,174, 30,255,170, 3,255,160, 17,250,157, 12,190, 93, 68,158, + 86,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255, 68,173, 91, 0,248,147, 1,254,156, 10,254,160, + 18,251,159, 38,250,165, 49,242,160, 70,234,157, 21,183, 87, 74,169, + 94,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255, 7,173, 65, 7,243,144, 45,243,160, 72,243,171,105,199,139, + 96,231,164,112,241,183,110,233,172,102,224,157, 28,169, 74, 57,157, + 75,255, 0,255,255, 0,255,255, 0,255,255, 0,255,148,199,148, 18, + 202,101, 79,235,162,102,241,178, 85,205,129,255, 0,255,172,211,180, + 89,192,126,129,232,178,130,225,170,129,215,157, 45,168, 78, 63,165, + 77,255, 0,255,255, 0,255,255, 0,255,127,196,134, 86,221,149,112, + 231,171,111,233,173,152,207,158,255, 0,255,255, 0,255,255, 0,255, + 101,183,121,151,227,181,150,221,173,157,217,170, 60,168, 84, 44,152, + 56,255, 0,255,255, 0,255,255, 0,255,138,190,142, 97,180,115, 81, + 180,107,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 109,181,120,173,225,187,170,219,179,181,219,181, 84,174,101, 42,147, + 51,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 121,181,123,195,228,198,191,223,191,206,230,203,110,184,122,115,185, + 121,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 126,181,126,218,237,218,228,242,228,169,210,169,173,204,172,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 115,168,114,139,187,139,195,215,194,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); Const stdimg_dialog_confirmation_32 : Array[0..3125] of byte = ( @@ -775,136 +807,6 @@ Const 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255); -Const - stdimg_document : Array[0..1061] of byte = ( - 66, 77, 38, 4, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 240, 3, 0, 0,235, 10, 0, 0,235, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 98, 98, - 98, 91, 91, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 97, 97, 97, - 255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, - 88, 88, 88, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, - 0,255,255, 0,255, 88, 88, 88,182,193,198,182,193,198,172,189,196, - 163,184,195,154,179,194,145,175,192,136,170,191,127,165,190,118,160, - 189,115,158,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, - 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,225, - 237,244,216,232,242,208,228,240,200,222,238,191,218,236,184,214,233, - 176,209,231,167,204,229,120,161,188, 48, 48, 48, 90, 90, 90,255, 0, - 255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, - 88,222,222,222,233,241,247,137,144,148,132,141,147,127,139,146,122, - 136,145,117,133,143,112,130,142,176,209,231,127,163,188, 48, 48, 48, - 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255, - 255, 0,255, 88, 88, 88,222,222,222,242,246,250,234,242,248,226,238, - 245,218,233,242,210,228,240,201,224,238,193,220,236,186,214,233,133, - 166,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, - 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,251,252,252, - 148,151,152,143,148,151,138,145,149,133,142,148,128,139,146,123,136, - 145,194,219,236,138,168,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, - 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222, - 222,222,255,255,255,252,253,253,244,248,250,235,243,248,228,238,245, - 220,234,243,212,230,241,202,223,236,144,171,188, 48, 48, 48, 90, 90, - 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0, - 255, 88, 88, 88,222,222,222,255,255,255,155,155,155,154,154,154,148, - 151,152,143,148,151,139,145,149,134,143,148,212,226,236,151,174,188, - 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255, - 255, 0,255,255, 0,255, 88, 88, 88,223,223,223,255,255,255,255,255, - 255,255,255,255,254,254,254,245,248,251,237,244,248,227,237,243,220, - 231,238,151,174,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, - 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222, - 255,255,255,155,155,155,155,155,155,155,155,155,155,155,155,246,249, - 251,236,240,244,217,224,231,175,182,190, 48, 48, 48, 90, 90, 90,255, - 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, - 88, 88,222,222,222,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,245,245,246,222,224,226,177,183,188,132,137,143, 48, 48, - 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0, - 255,255, 0,255, 88, 88, 88,222,222,222,255,255,255,155,155,155,155, - 155,155,155,155,155,255,255,255,137,137,137,112,112,112,107,107,107, - 66, 66, 66, 48, 48, 48, 96, 96, 96,255, 0,255,255, 0,255, 0, 0, - 255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,255,255, - 255,255,255,255,255,255,255,255,255,255,252,252,252,112,112,112,206, - 206,206,255,255,255,153,153,153, 48, 48, 48,135,135,135,255, 0,255, - 255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88, - 222,222,222,255,255,255,255,255,255,255,255,255,255,255,255,234,234, - 234,109,109,109,255,255,255,153,153,153, 88, 88, 88,135,135,135,255, - 0,255,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, - 0,255, 88, 88, 88,222,222,222,222,222,222,222,222,222,222,222,222, - 222,222,222,177,183,188, 88, 88, 88,153,153,153, 88, 88, 88,135,135, - 135,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0,255, 0, - 255,255, 0,255,255, 0,255, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255, 0, 0); - -Const - stdimg_folder_open_file_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 165,129,103,139, 82, 41,139, 82, 41,157,108, 74,157,108, 74,157,108, - 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157, - 108, 74,139, 82, 41,145,110, 84,255,255,255,255,255,255,139, 82, 41, - 209,165,123,210,165,124,210,165,124,210,165,124,210,165,124,210,165, - 124,210,165,124,210,165,124,210,165,124,210,165,124,210,165,124,209, - 165,123,139, 82, 41,255,255,255,255,255,255,157,104, 63,208,161,116, - 207,159,114,207,159,114,207,159,114,207,159,114,207,159,114,207,159, - 114,207,159,114,207,159,114,207,159,114,207,159,114,208,161,116,139, - 82, 41,255,255,255,139, 82, 41,196,151,112,208,162,119,207,160,117, - 207,160,117,207,160,117,207,160,117,207,160,117,207,160,117,207,160, - 117,207,160,117,207,160,117,207,160,117,208,162,119,196,151,112,139, - 82, 41,139, 82, 41,206,164,127,210,165,123,209,164,122,209,164,122, - 209,164,122,209,164,122,209,164,122,209,164,122,209,164,122,209,164, - 122,209,164,122,209,164,122,210,166,124,212,169,129,139, 82, 41,139, - 82, 41,215,180,148,220,186,153,220,186,153,220,186,153,220,185,152, - 216,179,143,212,169,130,211,168,127,211,168,127,211,168,127,211,168, - 127,211,168,127,212,168,128,209,169,133,139, 82, 41,139, 82, 41,139, - 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41, - 210,173,142,218,180,145,217,179,145,217,179,145,217,179,145,217,179, - 145,217,180,145,217,183,152,139, 82, 41,255,255,255,139, 82, 41,127, - 120,111,253,253,253,248,249,249,243,241,240,205,137, 89,139, 82, 41, - 139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, - 41,139, 82, 41,139, 82, 41,255,255,255,139, 82, 41,142,136,127,242, - 242,242,241,242,241,241,241,241,205,137, 89,255,247,240,253,231,214, - 253,230,212,252,228,208,251,227,203,254,243,232,205,136, 88,139, 82, - 41,255,255,255,255,255,255,139, 82, 41,177,154,132,151,138,124,150, - 137,123,148,136,121,205,137, 89,255,247,242, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92,253,242,231,205,137, 89,139, 82, 41,255,255, - 255,255,255,255,139, 82, 41,218,183,153,212,172,137,212,172,137,213, - 174,140,205,136, 88,254,247,241,252,228,209,251,226,204,249,221,196, - 247,218,192,252,242,233,205,137, 89,139, 82, 41,255,255,255,255,255, - 255,157,103, 62,197,159,132,213,181,155,213,181,155,211,179,152,204, - 135, 87,255,247,241, 93, 93, 93, 92, 92, 92, 92, 92, 92,254,249,243, - 255,247,240,205,137, 89,255,255,255,255,255,255,255,255,255,255,255, - 255,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,205,137, 89,255, - 247,240,255,247,240,255,247,240,255,247,240,255,247,240,255,247,240, - 205,137, 89,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,205,137, 89,205,137, 89,205, - 137, 89,205,137, 89,205,137, 89,205,137, 89,205,137, 89,205,137, 89, - 255,255,255,255,255,255); - -Const - stdimg_arrow_left : Array[0..137] of byte = ( - 66, 77,138, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 4, 0, 0, 0, 7, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 84, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, - 255, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0); - Const stdimg_dialog_error_32 : Array[0..3125] of byte = ( 66, 77, 54, 12, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, @@ -1280,134 +1182,439 @@ Const 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255); Const - stdimg_menu_preferences_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,215,194,180,135, 74, 32,135, 74, 32,135, 74, 32,223,207, - 196,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 135, 74, 32,190,165,146,184,156,134,184,156,134,135, 74, 32,223,207, - 196,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,193, - 196,195,154,158,157,193,196,195,255, 0,255,255, 0,255,135, 74, 32, - 204,187,173,167,145,125,181,149,122,174,139,114,135, 74, 32,223,207, - 196,255, 0,255,255, 0,255,255, 0,255,219,220,220,133,138,136,158, - 161,160,133,138,136,255, 0,255,255, 0,255,135, 74, 32,204,187,173, - 164,141,120,162,138,116,180,149,122,179,147,124,135, 74, 32,255, 0, - 255,255, 0,255,219,220,220,133,138,136,210,211,212,194,195,196,133, - 138,136,255, 0,255,255, 0,255,232,221,213,135, 74, 32,212,200,189, - 164,141,120,164,141,120,190,165,146,135, 74, 32,255, 0,255,219,220, - 220,133,138,136,226,227,228,194,196,198,133,138,136,193,196,195,255, - 0,255,255, 0,255,255, 0,255,243,237,233,135, 74, 32,204,187,173, - 204,187,173,179,147,124,135, 74, 32,193,196,195,133,138,136,211,211, - 212,189,190,191,133,138,136,219,220,220,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,243,237,233,135, 74, 32,135, 74, 32, - 135, 74, 32,133,131,125,170,173,173,200,201,202,189,190,191,133,138, - 136,219,220,220,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 181,183,184,133,138,136,183,184,185,133,138,136,219,220,220,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,219, - 220,220,133,138,136,133,138,136,133,138,136,133,138,136,208,209,210, - 163,164,164,133,138,136,193,196,195,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,219,220,220,133,138,136,243, - 243,243,239,240,240,237,238,238,234,236,236,182,185,186,133,138,136, - 219,220,220,133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,133,138,136,245,246,246,169,172,171,133, - 138,136,247,247,247,226,227,229,170,173,173,245,246,246,255, 0,255, - 219,220,220,133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,219,220,220,133,138,136,255, 0,255,219,220,220,133, - 138,136,250,250,250,133,138,136,255, 0,255,255, 0,255,255, 0,255, - 219,220,220,133,138,136,135,140,138,179,179,179,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,133,138,136,238, - 240,240,133,138,136,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 133,138,136,240,240,240,133,138,136,179,179,179,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,133,138,136,233,235,236,133,138,136,219, - 220,220,255, 0,255,255, 0,255,255, 0,255,255, 0,255,179,179,179, - 133,138,136,238,239,239,133,138,136,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,219,220,220,133,138,136,219,220,220,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,179,179,179, - 133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); - -Const - stdimg_folder_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + stdimg_dialog_warning_32 : Array[0..3125] of byte = ( + 66, 77, 54, 12, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 12, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, - 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, - 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, - 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, - 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, - 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, - 134,213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213, - 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, - 215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,215,175, - 138,215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,226, - 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,217,179,143,217,179,143,228,202,177,135, - 74, 32,135, 74, 32,230,205,181,217,179,143,217,179,143,217,179,143, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,217,179,143,230,205,181,135, 74, 32,135, - 74, 32,231,207,184,217,179,143,217,179,143,217,179,143,217,179,143, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,231,207,184,135, 74, 32,135, 74, 32,232, - 210,188,217,179,143,217,179,143,217,179,143,217,179,143,217,179,143, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,232,210,188,135, 74, 32,136, 76, 34,230,209,188,234, - 212,192,234,212,192,234,212,192,234,212,192,234,212,192,226,197,169, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,234,212,192,135, 74, 32,139, 77, 36,136, 76, 34,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,140, 82, 42,218,190,167,227,200,173, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,235,215, - 196,135, 74, 32,135, 74, 32,204,164,133,188,136, 95,188,136, 94,188, - 136, 94,188,136, 94,175,120, 80,144, 86, 46,220,194,172,236,217,199, - 236,217,199,236,217,199,236,217,199,236,217,199,233,214,196,138, 79, - 37,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,205, - 161,124,218,186,158,190,150,120,135, 74, 32,135, 74, 32,135, 74, 32, - 135, 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,168,147,225,210, - 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,218, - 191,169,144, 89, 49,225,210,200,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,210, - 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,225, - 210,200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); - -Const - stdimg_edit_delete_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,186,188,188,145,148,147,173,176,175,255,255, - 255,255,255,255,144,148,146,158,161,160,163,166,164,255,255,255,255, - 255,255,219,220,219,151,153,153,189,191,190,255,255,255,255,255,255, - 255,255,255,141,145,144,250,250,250,151,154,153,169,172,171,159,162, - 161,150,154,152,238,239,239,170,174,172,155,158,157,152,155,154,139, - 142,141,255,255,255,172,175,175,255,255,255,255,255,255,255,255,255, - 186,188,188,142,146,145,246,246,246,153,156,155,171,173,172,143,147, - 144,224,225,224,178,180,180,211,213,212,152,155,154,236,236,236,160, - 163,162,212,213,213,255,255,255,255,255,255,255,255,255,255,255,255, - 141,144,143,221,222,221,142,147,144,201,201,201,138,143,140,206,208, - 207,164,166,165,200,200,200,124,128,127,227,228,228,146,149,148,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,117,121,120, - 203,205,204,133,138,135,166,167,166,146,147,147,179,180,179,146,147, - 146,182,183,182,124,128,127,189,190,189,123,126,125,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,106,110,109,205,206,206, - 108,111,111,172,174,173,109,112,111,175,177,176,108,111,110,178,180, - 179,111,115,114,179,180,180,109,113,112,255,255,255,255,255,255,255, - 255,255,165,118, 87,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32, - 135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, - 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,165,118, 87,135, + 255,255,255,255,255,255,252,252,252,244,244,244,237,237,237,235,235, + 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, + 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, + 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, + 235,235,235,235,237,237,237,242,242,242,248,248,248,254,254,254,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,239,239,239, + 222,222,222,198,198,207,190,190,201,186,186,197,186,186,197,186,186, + 197,186,186,197,186,186,197,186,186,197,186,186,197,186,186,197,186, + 186,197,186,186,197,186,186,197,186,186,197,186,186,197,186,186,197, + 186,186,197,186,186,197,186,186,197,186,186,197,186,186,197,190,190, + 201,189,189,200,197,197,206,223,223,223,246,246,246,255,255,255,255, + 255,255,255,255,255,244,244,244,178,178,210, 22, 22,165, 0, 0,159, + 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0, + 159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, + 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, + 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0, + 159, 21, 21,165,173,173,209,250,250,250,255,255,255,255,255,255,243, + 243,243, 39, 39,171, 61, 61,196,112,112,224,117,117,226,116,116,226, + 113,113,225,111,111,225,108,108,224,105,105,223,102,102,223,100,100, + 222, 97, 97,222, 94, 94,221, 92, 92,220, 89, 89,220, 86, 86,219, 83, + 83,219, 81, 81,218, 78, 78,218, 75, 75,217, 72, 72,216, 69, 69,216, + 67, 67,215, 64, 64,215, 62, 62,214, 54, 54,212, 28, 28,188, 20, 20, + 166,246,246,246,255,255,255,255,255,255,253,253,253, 15, 15,166,121, + 121,221, 20, 20,208, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, + 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0, + 204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, + 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, + 0, 0,204, 10, 10,206, 56, 56,207, 2, 2,160,247,247,251,255,255, + 255,255,255,255,255,255,255, 90, 90,194, 89, 89,200, 58, 58,216, 0, + 0,204,163,163,219,210,210,224,210,210,224,211,211,225,212,212,226, + 212,212,226,213,213,227,214,214,228,215,215,229,216,216,230,216,216, + 230,217,217,231,217,217,231,218,218,232,218,218,232,219,219,233,220, + 220,234,221,221,235,222,222,236,193,193,231, 0, 0,204, 27, 27,209, + 44, 44,192, 53, 53,181,255,255,255,255,255,255,255,255,255,255,255, + 255,221,221,242, 25, 25,168,117,117,221, 8, 8,206, 80, 80,211,224, + 224,224,225,225,225,225,225,225,226,226,226,227,227,227,227,227,227, + 228,228,228,229,229,229,230,230,230,230,230,230,231,231,231,232,232, + 232,233,233,233,234,234,234,234,234,234,235,235,235,236,236,236,237, + 237,237,105,105,219, 3, 3,205, 59, 59,211, 14, 14,166,193,193,232, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,109,109, + 201, 85, 85,197, 68, 68,218, 2, 2,204,179,179,219,224,224,224,225, + 225,225,225,225,225,226,226,226,227,227,227,227,227,227,228,228,228, + 60, 60, 60, 55, 55, 55,230,230,230,231,231,231,232,232,232,233,233, + 233,234,234,234,234,234,234,235,235,235,205,205,231, 7, 7,205, 36, + 36,211, 47, 47,188, 70, 70,186,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,234,234,247, 23, 23,169,121,121, + 220, 14, 14,207, 59, 59,209,223,223,223,224,224,224,224,224,224,225, + 225,225,226,226,226,226,226,226,227,227,227, 55, 55, 55, 53, 53, 53, + 230,230,230,230,230,230,231,231,231,232,232,232,233,233,233,234,234, + 234,234,234,234, 82, 82,215, 8, 8,206, 67, 67,210, 10, 10,163,212, + 212,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,129,129,208, 74, 74,190, 81, 81,220, 0, 0, + 204,162,162,218,223,223,223,224,224,224,224,224,224,225,225,225,226, + 226,226,226,226,226,215,215,215,215,215,215,229,229,229,230,230,230, + 230,230,230,231,231,231,232,232,232,233,233,233,186,186,227, 1, 1, + 204, 47, 47,213, 46, 46,185, 96, 96,196,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 244,244,251, 25, 25,169,121,121,218, 23, 23,209, 42, 42,208,221,221, + 223,223,223,223,224,224,224,224,224,224,225,225,225,226,226,226, 37, + 37, 37, 37, 37, 37,228,228,228,229,229,229,229,229,229,230,230,230, + 231,231,231,232,232,232, 59, 59,211, 14, 14,207, 73, 73,209, 11, 11, + 164,228,228,245,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,151,151,216, + 63, 63,185, 94, 94,222, 0, 0,204,141,141,215,223,223,223,223,223, + 223,224,224,224,224,224,224,225,225,225, 27, 27, 27, 27, 27, 27,227, + 227,227,228,228,228,229,229,229,229,229,229,230,230,230,164,164,223, + 0, 0,204, 60, 60,215, 41, 41,179,120,120,205,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,251,251,253, 35, 35,174,116,116,215, + 34, 34,211, 27, 27,206,215,215,221,223,223,223,223,223,223,224,224, + 224,224,224,224, 13, 13, 13, 13, 13, 13,226,226,226,227,227,227,228, + 228,228,229,229,229,226,226,228, 40, 40,209, 24, 24,209, 75, 75,206, + 16, 16,167,241,241,250,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,172,172,224, 49, 49,178,106,106,223, 1, 1,204, + 121,121,213,222,222,222,222,222,222,223,223,223,224,224,224, 3, 3, + 3, 3, 3, 3,225,225,225,226,226,226,227,227,227,228,228,228,140, + 140,218, 1, 1,204, 75, 75,218, 34, 34,174,144,144,213,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254, + 254,255, 49, 49,179,109,109,211, 47, 47,213, 16, 16,206,206,206,220, + 222,222,222,222,222,222,215,215,215, 0, 0, 0, 0, 0, 0,217,217, + 217,225,225,225,226,226,226,218,218,226, 25, 25,207, 36, 36,211, 74, + 74,203, 27, 27,171,249,249,253,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,193,193,232, 36, + 36,173,117,117,224, 4, 4,205,102,102,212,221,221,221,222,222,222, + 204,204,204, 0, 0, 0, 0, 0, 0,206,206,206,225,225,225,225,225, + 225,118,118,216, 4, 4,205, 87, 87,219, 27, 27,170,167,167,222,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255, 69, 69,186,100,100,205, 59, + 59,216, 7, 7,205,195,195,219,221,221,221,193,193,193, 0, 0, 0, + 0, 0, 0,195,195,195,224,224,224,206,206,223, 12, 12,205, 49, 49, + 214, 70, 70,199, 45, 45,178,254,254,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,211,211,238, 25, 25,170,124,124,224, 8, 8,206, 82, + 82,210,221,221,221,218,218,218,207,207,207,207,207,207,220,220,220, + 223,223,223, 97, 97,213, 9, 9,206, 98, 98,219, 17, 17,166,189,189, + 230,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255, 92, 92,194, 89, 89,199, 72, 72,218, 2, 2,204,180,180,217,221, + 221,221,221,221,221,222,222,222,222,222,222,192,192,220, 4, 4,204, + 64, 64,217, 65, 65,194, 68, 68,186,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,226,226,244, 20, 20, + 168,128,128,224, 15, 15,207, 63, 63,209,220,220,220,221,221,221,221, + 221,221,222,222,222, 74, 74,210, 17, 17,207,104,104,219, 11, 11,163, + 210,210,238,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,114,114,202, 79, 79,193, 85, 85, + 220, 0, 0,204,162,162,215,220,220,220,220,220,220,173,173,217, 1, + 1,204, 80, 80,220, 59, 59,189, 92, 92,194,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,238,238,249, 20, 20,167,128,128,222, 25, 25,209, 44, 44, + 207,218,218,219,220,220,220, 53, 53,208, 28, 28,210,106,106,217, 10, + 10,164,226,226,244,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 137,137,211, 67, 67,187, 99, 99,223, 0, 0,204,143,143,214,152,152, + 214, 1, 1,204, 97, 97,223, 51, 51,184,118,118,204,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,246,246,252, 25, 25,169, + 122,122,218, 36, 36,211, 21, 21,206, 23, 23,205, 42, 42,212,104,104, + 215, 14, 14,165,239,239,249,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,158,158,218, 53, 53,181,113,113,225, + 1, 1,204, 3, 3,205,113,113,225, 41, 41,177,142,142,212,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,252,252,254, 37, 37,174,111,111,213, 66, 66,217, 70, 70,218, + 96, 96,210, 25, 25,170,248,248,252,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,180, + 180,227, 22, 22,168,109,109,218,106,106,218, 20, 20,169,165,165,221, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,140,140,211, 12, + 12,165, 8, 8,163,124,124,206,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,252,252,254,251,251,253,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255); + +Const + stdimg_document : Array[0..1061] of byte = ( + 66, 77, 38, 4, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 240, 3, 0, 0,235, 10, 0, 0,235, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 98, 98, + 98, 91, 91, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 97, 97, 97, + 255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, + 88, 88, 88, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, + 0,255,255, 0,255, 88, 88, 88,182,193,198,182,193,198,172,189,196, + 163,184,195,154,179,194,145,175,192,136,170,191,127,165,190,118,160, + 189,115,158,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, + 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,225, + 237,244,216,232,242,208,228,240,200,222,238,191,218,236,184,214,233, + 176,209,231,167,204,229,120,161,188, 48, 48, 48, 90, 90, 90,255, 0, + 255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, + 88,222,222,222,233,241,247,137,144,148,132,141,147,127,139,146,122, + 136,145,117,133,143,112,130,142,176,209,231,127,163,188, 48, 48, 48, + 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255, + 255, 0,255, 88, 88, 88,222,222,222,242,246,250,234,242,248,226,238, + 245,218,233,242,210,228,240,201,224,238,193,220,236,186,214,233,133, + 166,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, + 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,251,252,252, + 148,151,152,143,148,151,138,145,149,133,142,148,128,139,146,123,136, + 145,194,219,236,138,168,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, + 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222, + 222,222,255,255,255,252,253,253,244,248,250,235,243,248,228,238,245, + 220,234,243,212,230,241,202,223,236,144,171,188, 48, 48, 48, 90, 90, + 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0, + 255, 88, 88, 88,222,222,222,255,255,255,155,155,155,154,154,154,148, + 151,152,143,148,151,139,145,149,134,143,148,212,226,236,151,174,188, + 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255, + 255, 0,255,255, 0,255, 88, 88, 88,223,223,223,255,255,255,255,255, + 255,255,255,255,254,254,254,245,248,251,237,244,248,227,237,243,220, + 231,238,151,174,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, + 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222, + 255,255,255,155,155,155,155,155,155,155,155,155,155,155,155,246,249, + 251,236,240,244,217,224,231,175,182,190, 48, 48, 48, 90, 90, 90,255, + 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, + 88, 88,222,222,222,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,245,245,246,222,224,226,177,183,188,132,137,143, 48, 48, + 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0, + 255,255, 0,255, 88, 88, 88,222,222,222,255,255,255,155,155,155,155, + 155,155,155,155,155,255,255,255,137,137,137,112,112,112,107,107,107, + 66, 66, 66, 48, 48, 48, 96, 96, 96,255, 0,255,255, 0,255, 0, 0, + 255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,255,255, + 255,255,255,255,255,255,255,255,255,255,252,252,252,112,112,112,206, + 206,206,255,255,255,153,153,153, 48, 48, 48,135,135,135,255, 0,255, + 255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88, + 222,222,222,255,255,255,255,255,255,255,255,255,255,255,255,234,234, + 234,109,109,109,255,255,255,153,153,153, 88, 88, 88,135,135,135,255, + 0,255,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, + 0,255, 88, 88, 88,222,222,222,222,222,222,222,222,222,222,222,222, + 222,222,222,177,183,188, 88, 88, 88,153,153,153, 88, 88, 88,135,135, + 135,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0,255, 0, + 255,255, 0,255,255, 0,255, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255, 0, 0); + +Const + stdimg_edit : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0,235, 10, 0, 0,235, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 98,146, 94, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98,146, 94, 98,146, 94, + 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255, + 255,255,255,255,160,160,160,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255, 0, 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, + 88, 88, 88,220,220,220,160,160,160,160,160,160, 0, 0, 0,160,160, + 160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, + 160,160, 0, 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, 88, 88, 88, + 220,220,220,255,255,255,255,255,255, 88, 88, 88, 48, 48, 48, 0, 0, + 64,195,195,195,220,220,220,255,255,255,255,255,255,255,255,255, 0, + 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, 88, 88, 88,220,220,220, + 255,255,255,255,255,255,255,255,255, 88, 88, 88,168,220,255, 0, 88, + 192, 0, 88,192,195,195,195,220,220,220,255,255,255, 0, 0, 0, 98, + 146, 94, 98,146, 94, 98,146, 94, 88, 88, 88,220,220,220,195,195,195, + 195,195,195,195,195,195,160,160,160,168,220,255,168,220,255,168,220, + 255, 0, 88,192, 0, 88,192,160,160,160, 0, 0, 0, 98,146, 94, 98, + 146, 94, 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255, + 255,255,255,255,255,255, 88,168,255,168,220,255,168,220,255,168,220, + 255,168,220,255, 0, 0, 64, 0, 0, 0, 98,146, 94, 98,146, 94, 98, + 146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255,255, + 255,255,255,160,160,160,168,220,255,168,220,255, 0,128,255, 0,128, + 255, 0, 88,192, 48, 48, 48, 98,146, 94, 98,146, 94, 98,146, 94, 88, + 88, 88,220,220,220,195,195,195,195,195,195,195,195,195,195,195,195, + 195,195,195, 88,168,255,168,220,255, 0,128,255, 0,128,255, 0,128, + 255, 0, 88,192, 48, 48, 48, 98,146, 94, 98,146, 94, 88, 88, 88,220, + 220,220,255,255,255,255,255,255,255,255,255,255,255,255,195,195,195, + 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, + 255, 0, 88,192, 0, 0, 64, 98,146, 94, 88, 88, 88,220,220,220,255, + 255,255,255,255,255,255,255,255,255,255,255,195,195,195,255,255,255, + 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, + 255, 0, 88,192, 98,146, 94, 88, 88, 88,220,220,220,195,195,195,195, + 195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195, + 195,195,195, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, + 255, 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255, + 255,255,255,255,255,195,195,195,255,255,255,255,255,255,255,255,255, + 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 98,146, + 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255,255,255, + 255,255,195,195,195,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 88,168,255, 88,168,255, 0,128,255, 98,146, 94, 88, 88, + 88,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, + 220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, + 88, 88, 88, 88,168,255, 88,168,255, 98,146, 94, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 98,146, 94, 98,146, 94); + +Const + stdimg_edit_copy_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,180,183, + 181,134,139,137,133,138,136,133,138,136,133,138,136,133,138,136,133, + 138,136,133,138,136,164,167,166,194,197,196,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,136,141,139,244,244, + 244,246,247,247,245,246,246,251,252,252,251,251,251,212,212,212,150, + 154,152,226,228,227,133,138,136,194,197,196,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,136,141,139,249,250,250,239,240, + 240,239,240,240,239,240,240,250,250,250,250,250,250,149,154,152,250, + 250,250,226,227,227,133,138,136,157,161,160,219,220,220,195,197,196, + 195,197,196,195,197,196,135,140,138,253,254,254,239,240,240,239,240, + 240,239,240,240,239,240,240,250,250,250,149,154,152,250,250,250,247, + 248,248,226,228,227,133,138,136,196,198,197,249,249,249,249,250,250, + 249,249,249,136,141,139,255,255,255,239,240,240,239,240,240,239,240, + 240,239,240,240,239,240,240,137,142,140,137,142,140,137,142,140,137, + 142,140,133,138,136,196,198,197,252,252,252,245,245,245,245,245,245, + 136,141,139,255,255,255,239,240,240,198,199,199,198,199,199,198,199, + 199,198,199,199,198,199,199,238,238,238,246,247,247,195,196,195,133, + 138,136,196,198,197,255,255,255,246,246,246,225,226,226,135,140,138, + 255,255,255,239,240,240,239,240,240,239,240,240,239,240,240,239,240, + 240,239,240,240,239,240,240,250,250,250,243,243,243,133,138,136,196, + 198,197,255,255,255,246,247,247,246,246,246,136,141,139,255,255,255, + 239,240,240,198,199,199,198,199,199,198,199,199,198,199,199,198,199, + 199,239,240,240,239,240,240,255,255,255,133,138,136,196,198,197,255, + 255,255,247,247,247,226,227,227,135,140,138,255,255,255,239,240,240, + 239,240,240,239,240,240,239,240,240,239,240,240,239,240,240,239,240, + 240,239,240,240,255,255,255,133,138,136,196,198,197,255,255,255,247, + 248,248,247,247,247,136,141,139,255,255,255,239,240,240,198,199,199, + 198,199,199,198,199,199,198,199,199,198,199,199,198,199,199,239,240, + 240,255,255,255,133,138,136,196,198,197,255,255,255,247,248,248,227, + 228,228,135,140,138,255,255,255,239,240,240,239,240,240,239,240,240, + 239,240,240,239,240,240,239,240,240,239,240,240,239,240,240,255,255, + 255,133,138,136,196,198,197,255,255,255,247,248,248,247,248,248,136, + 141,139,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,133,138, + 136,196,198,197,255,255,255,247,248,248,227,228,228,170,173,173,133, + 138,136,133,138,136,133,138,136,133,138,136,133,138,136,133,138,136, + 133,138,136,133,138,136,133,138,136,133,138,136,177,180,179,196,198, + 197,255,255,255,247,248,248,247,247,247,247,247,247,247,247,247,247, + 247,247,247,247,247,247,248,248,247,248,248,255,255,255,194,197,196, + 255,255,255,255,255,255,255,255,255,255,255,255,196,198,197,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,194,197,196,255,255,255, + 255,255,255,255,255,255,255,255,255,219,220,220,194,197,196,194,197, + 196,194,197,196,194,197,196,194,197,196,194,197,196,194,197,196,194, + 197,196,194,197,196,194,197,196,217,219,218,255,255,255,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_edit_cut_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,172,172,226, 37, 37,178, 26, 26,175, 29, 29, + 174,209,209,239,255,255,255,255,255,255,255,255,255,255,255,255,172, + 172,226, 70, 70,190, 27, 27,176, 39, 39,179,209,209,239,255,255,255, + 255,255,255, 49, 49,182, 41, 41,219, 36, 36,209, 31, 31,206, 31, 31, + 177,209,209,239,255,255,255,255,255,255,209,209,239, 29, 29,177, 36, + 36,212, 34, 34,208, 31, 31,206, 39, 39,178,255,255,255,255,255,255, + 19, 19,173, 33, 33,208,255,255,255,117,117,213, 35, 35,211, 52, 52, + 184,255,255,255,255,255,255, 59, 59,187, 37, 37,214,114,114,214,255, + 255,255, 35, 35,210, 22, 22,173,255,255,255,255,255,255, 43, 43,179, + 37, 37,213,134,134,213,255,255,255, 38, 38,208, 13, 13,170,255,255, + 255,255,255,255, 5, 5,169, 38, 39,205,255,255,255,137,137,214, 34, + 34,209, 43, 43,179,255,255,255,255,255,255,172,172,226, 7, 7,168, + 35, 35,209, 73, 73,192, 26, 27,194, 1, 1,166,255,255,255,241,242, + 250, 30, 31,205, 25, 27,193, 74, 74,193, 33, 33,206, 7, 7,167,143, + 143,216,255,255,255,255,255,255,255,255,255,142,142,215, 9, 9,170, + 34, 34,210, 31, 31,206, 16, 17,184, 92, 94,196, 6, 7,169, 26, 26, + 201, 34, 34,209, 33, 33,203, 12, 12,170,171,171,225,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,127,127,210, + 33, 33,175, 6, 6,166, 70, 75,163, 2, 2,166, 25, 26,199, 37, 37, + 178,131,131,211,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,212,214,213, + 132,137,137,195,198,197,175,178,179, 52, 55,160,231,232,232,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,181,184,183,184,188,187, + 230,232,231,167,172,170,139,144,142,184,187,186,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,231,232,232,136,141,139,223,225,225,245,246,245, + 151,156,154,165,169,168,140,145,143,231,232,232,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,152,156,154,178,182,181,247,247,247,142,147,145,156,160,159, + 179,182,181,182,187,185,172,175,174,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,228,229,229,136, + 141,139,217,220,219,239,240,239,171,175,173,184,187,186,179,184,182, + 203,206,205,137,142,140,197,199,198,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,144,148,146,176,181,179,246, + 247,247,155,159,157,202,204,203,255,255,255,141,146,144,201,206,204, + 172,176,175,156,160,159,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,136,141,139,208,212,210,239,240,239,179, + 183,181,255,255,255,255,255,255,225,227,226,167,172,170,195,200,198, + 142,147,145,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,143,148,146,247,247,247,170,173,172,202,204,203,255, + 255,255,255,255,255,255,255,255,152,156,155,208,211,210,169,173,171, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,221,223,222,145,149,148,162,166,165,255,255,255,255,255,255,255, + 255,255,255,255,255,185,187,186,148,152,150,255,255,255,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_edit_delete_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,186,188,188,145,148,147,173,176,175,255,255, + 255,255,255,255,144,148,146,158,161,160,163,166,164,255,255,255,255, + 255,255,219,220,219,151,153,153,189,191,190,255,255,255,255,255,255, + 255,255,255,141,145,144,250,250,250,151,154,153,169,172,171,159,162, + 161,150,154,152,238,239,239,170,174,172,155,158,157,152,155,154,139, + 142,141,255,255,255,172,175,175,255,255,255,255,255,255,255,255,255, + 186,188,188,142,146,145,246,246,246,153,156,155,171,173,172,143,147, + 144,224,225,224,178,180,180,211,213,212,152,155,154,236,236,236,160, + 163,162,212,213,213,255,255,255,255,255,255,255,255,255,255,255,255, + 141,144,143,221,222,221,142,147,144,201,201,201,138,143,140,206,208, + 207,164,166,165,200,200,200,124,128,127,227,228,228,146,149,148,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,117,121,120, + 203,205,204,133,138,135,166,167,166,146,147,147,179,180,179,146,147, + 146,182,183,182,124,128,127,189,190,189,123,126,125,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,106,110,109,205,206,206, + 108,111,111,172,174,173,109,112,111,175,177,176,108,111,110,178,180, + 179,111,115,114,179,180,180,109,113,112,255,255,255,255,255,255,255, + 255,255,165,118, 87,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32, + 135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, + 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,165,118, 87,135, 74, 32,221,187,156,207,159,114,207,159,114,207,159,114,207,159,114, 207,159,114,207,159,114,207,159,114,207,159,114,207,159,114,207,159, 114,207,159,114,207,159,114,221,187,156,135, 74, 32,135, 74, 32,221, @@ -1435,58 +1642,6 @@ Const 138,136,133,138,136,133,138,136,133,138,136,133,138,136,171,174,173, 255,255,255,255,255,255); -Const - stdimg_btn_cancel_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255, 63, 61,237, 59, 56,235,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 33, - 31,227, 30, 28,226,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 74, 71,240, 79, 76,242, 64, 62,237, 60, 57,235,255,255, - 255,255,255,255,255,255,255,255,255,255, 39, 37,229, 36, 34,228, 49, - 47,234, 31, 29,226,255,255,255,255,255,255,255,255,255, 84, 81,243, - 88, 86,245, 99, 97,250, 88, 85,246, 65, 63,237, 61, 58,236,255,255, - 255,255,255,255, 48, 45,231, 44, 42,230, 65, 63,241, 76, 74,246, 49, - 47,234, 31, 29,226,255,255,255,255,255,255, 89, 86,245, 91, 88,246, - 101, 98,250,113,112,255, 89, 86,246, 66, 64,238, 62, 59,236, 57, 55, - 235, 53, 50,233, 71, 69,242, 99, 98,255, 74, 72,244, 47, 45,233, 34, - 32,227,255,255,255,255,255,255,255,255,255, 90, 87,245, 91, 89,246, - 102, 99,250,116,113,255, 90, 88,246, 67, 65,238, 62, 60,236, 80, 77, - 244,104,103,255, 80, 78,245, 54, 52,235, 42, 39,229,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 91, 88,246, 92, 90,246, - 103,100,250,116,114,255,115,112,255,112,110,255,110,108,255, 87, 85, - 247, 63, 61,238, 50, 48,232,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 92, 89,246, 93, 91,247, - 121,118,255, 89, 86,255, 87, 84,255,114,112,255, 72, 70,240, 60, 57, - 235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255, 97, 94,248, 93, 90,246,125,121,255, - 94, 91,255, 91, 88,255,118,116,255, 70, 67,239, 65, 63,237,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,105,103,251,102, 99,249,112,109,251,128,126,255,126,123,255, - 124,121,255,121,119,255, 94, 92,247, 71, 68,239, 66, 64,238,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,113,110,253,110, - 107,252,119,116,253,134,130,255,118,115,252,100, 98,248, 96, 93,247, - 109,106,250,123,121,255, 96, 93,247, 72, 69,239, 67, 65,238,255,255, - 255,255,255,255,255,255,255,118,115,255,116,113,254,125,122,254,138, - 135,255,124,121,253,108,105,251, 99, 97,249, 95, 92,247, 97, 94,248, - 110,108,250,125,122,255, 97, 95,247, 73, 70,240, 68, 65,238,255,255, - 255,255,255,255,119,116,255,122,119,255,129,126,255,129,126,254,116, - 113,253,108,105,251,255,255,255,255,255,255, 96, 93,247, 98, 95,248, - 111,109,251,126,124,255, 98, 95,248, 74, 71,240, 69, 66,238,255,255, - 255,255,255,255,119,116,255,122,119,255,121,118,254,114,111,253,255, - 255,255,255,255,255,255,255,255,255,255,255, 97, 94,248,100, 97,248, - 106,104,249, 84, 81,243, 79, 77,242,255,255,255,255,255,255,255,255, - 255,255,255,255,119,116,255,119,116,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 98, 95,248, 93, 91,247, - 89, 86,245,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 99, 96,248,255,255,255, - 255,255,255,255,255,255); - Const stdimg_edit_paste_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, @@ -1540,105 +1695,223 @@ Const 255, 0,255,255, 0,255); Const - stdimg_help_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,192,161,139,164,117, 85,142, 85, 45,142, 85, 45,165,119, 87,193, - 161,139,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,198,169,149,147, 91, 53,203,175, - 155,229,214,203,248,244,241,249,245,242,232,219,209,211,186,167,149, - 94, 56,199,171,151,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,163,116, 84,175,134,105,243,237,233,221,201,186,199,165, - 139,187,145,113,193,153,121,213,183,159,233,218,205,248,243,239,183, - 145,117,166,120, 88,255, 0,255,255, 0,255,255, 0,255,199,170,150, - 174,133,105,243,238,233,183,143,114,165,114, 76,179,135,101,255,255, - 255,255,255,255,193,151,116,197,155,120,215,185,160,249,245,241,180, - 140,112,199,171,151,255, 0,255,255, 0,255,146, 91, 52,242,235,230, - 177,135,105,157,103, 64,163,111, 73,178,132, 98,255,255,255,255,255, - 255,189,146,111,193,150,114,197,155,120,214,183,157,247,241,237,147, - 93, 54,255, 0,255,192,161,139,195,166,145,211,188,173,148, 92, 51, - 154,100, 60,161,108, 69,169,120, 82,200,168,143,204,173,148,183,137, - 101,187,143,107,191,147,112,193,150,115,231,215,201,207,181,161,193, - 161,139,162,115, 83,221,204,192,175,134,106,145, 88, 47,151, 96, 56, - 157,103, 64,167,118, 81,228,212,200,229,214,202,180,134, 98,182,135, - 99,185,139,103,186,142,106,209,178,155,230,215,204,165,118, 86,141, - 83, 43,245,240,237,148, 94, 56,142, 83, 42,148, 91, 51,153, 98, 58, - 159,105, 66,243,237,232,255,255,255,208,181,160,176,127, 90,178,131, - 94,180,133, 96,189,148,117,248,243,240,142, 84, 45,141, 83, 43,245, - 240,237,147, 92, 54,138, 79, 37,144, 86, 45,149, 93, 52,154, 99, 59, - 181,139,109,252,251,249,254,254,254,193,157,130,172,122, 84,173,124, - 86,183,141,108,247,243,239,142, 84, 44,162,115, 83,221,204,192,172, - 130,101,135, 74, 32,139, 80, 39,144, 86, 45,149, 92, 52,153, 98, 58, - 194,161,137,255,255,255,243,236,232,165,114, 75,166,115, 77,195,161, - 134,225,210,198,164,117, 85,192,161,139,195,165,144,208,185,169,135, - 74, 32,135, 74, 32,159,110, 75,160,111, 77,148, 91, 50,168,122, 89, - 255,255,255,253,252,251,161,109, 70,159,106, 67,218,198,183,198,170, - 149,192,161,139,255, 0,255,146, 92, 53,241,234,229,165,120, 88,135, - 74, 32,176,136,108,254,253,253,233,222,214,246,242,239,255,255,255, - 220,202,189,152, 96, 56,179,137,107,242,235,230,145, 91, 52,255, 0, - 255,255, 0,255,198,169,149,173,131,103,242,235,231,166,120, 89,156, - 105, 71,222,206,194,247,243,240,241,234,230,208,184,167,160,111, 77, - 173,130,100,243,237,232,171,128, 98,198,169,149,255, 0,255,255, 0, - 255,255, 0,255,163,116, 84,170,127, 97,240,232,227,208,185,169,172, - 130,101,150, 96, 59,150, 96, 59,172,130,101,209,186,170,240,233,228, - 170,128, 98,163,116, 84,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,198,169,149,145, 91, 52,193,162,141,219,201,189,244, - 239,235,244,239,235,219,201,189,193,163,141,145, 90, 51,199,170,150, + stdimg_ellipse : Array[0..181] of byte = ( + 66, 77,182, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 10, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 128, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0, + 229,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0,229, 0, + 0,255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0, 0, 0, + 0, 0,255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0,255, + 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0, 0, 0, 0, 0, + 255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0,255, 0,229, + 255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0, + 229,255, 0,229,255, 0,229,255, 0,229, 0, 0); + +Const + stdimg_executable_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,192,161,139,162,115, 83,141, 83, 43,141, - 83, 43,162,115, 83,192,161,139,255, 0,255,255, 0,255,255, 0,255, + 255,255, 0,255,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, + 54,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218,199,195,195,159, + 157,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,120, 72, 54,218,199,195,188,151,145,204,176,172,221,202, + 200,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54, + 218,199,195,181,142,133,182,144,135,183,145,137,217,197,193,190,154, + 148,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,120, 72, 54,218,199,195,174,136,122, + 175,135,122,176,137,124,193,162,152,216,196,191,188,153,144,181,143, + 133,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,120, 72, 54,218,199,195,201,177,167,200,176,165,187,155,143, + 183,149,136,171,131,116,198,170,161,194,163,153,175,136,123,177,137, + 125,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,207,185,175,207,186,176,208,187,177,209,187,178,202,178,167, + 187,156,142,205,181,171,209,188,179,173,134,119,171,130,115,172,132, + 117,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,204,182,171,205,183,172,206,184,173,206,185,174,199,174,162, + 176,140,124,191,162,149,203,179,169,170,130,113,153,111, 86,120, 72, + 54,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,202,180,167,203,180,168,203,181,169,204,182,170,176,142,124, + 180,148,131,177,144,127,153,111, 86,120, 72, 54,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,200,177,163,200,178,164,201,178,165,186,158,141,150,106, 81, + 153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,198,174,159,198,175,160,186,159,141,144,100, 72,120, 72, 54, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,195,171,155,159,122, 95,120, 72, 54,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255); Const - stdimg_list_remove_16 : Array[0..821] of byte = ( + stdimg_folder_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, + 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, + 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, + 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, + 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, + 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, + 134,213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213, + 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, + 215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,215,175, + 138,215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,226, + 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,217,179,143,217,179,143,228,202,177,135, + 74, 32,135, 74, 32,230,205,181,217,179,143,217,179,143,217,179,143, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,217,179,143,230,205,181,135, 74, 32,135, + 74, 32,231,207,184,217,179,143,217,179,143,217,179,143,217,179,143, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,231,207,184,135, 74, 32,135, 74, 32,232, + 210,188,217,179,143,217,179,143,217,179,143,217,179,143,217,179,143, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,232,210,188,135, 74, 32,136, 76, 34,230,209,188,234, + 212,192,234,212,192,234,212,192,234,212,192,234,212,192,226,197,169, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,234,212,192,135, 74, 32,139, 77, 36,136, 76, 34,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,140, 82, 42,218,190,167,227,200,173, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,235,215, + 196,135, 74, 32,135, 74, 32,204,164,133,188,136, 95,188,136, 94,188, + 136, 94,188,136, 94,175,120, 80,144, 86, 46,220,194,172,236,217,199, + 236,217,199,236,217,199,236,217,199,236,217,199,233,214,196,138, 79, + 37,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,205, + 161,124,218,186,158,190,150,120,135, 74, 32,135, 74, 32,135, 74, 32, + 135, 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,168,147,225,210, + 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,218, + 191,169,144, 89, 49,225,210,200,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,210, + 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,225, + 210,200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_folder_home_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, + 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, + 217,181,149,221,186,154, 98,173,106, 89,163, 97, 74,135, 79,117,122, + 118,121,120,121,126,126,126,118,118,118,103,130,106, 95,165,103, 72, + 146, 79, 83,137, 86,217,181,149,138, 79, 37,135, 74, 32,223,192,162, + 213,172,134,195,229,197,142,200,143,101,160,107,216,226,216,149,147, + 149,167,167,167,134,132,134,202,236,206,104,181,114,132,188,135,172, + 203,171,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, + 215,175,138,215,175,138,171,172,172,246,245,246,136,136,136,157,157, + 157,127,127,127,254,254,255,130,127,127,215,175,138,215,175,138,226, + 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, + 217,179,143,170,174,177,252,250,248,130,131,131,115,115,115,126,126, + 126,255,255,255,112,116,124,217,179,143,217,179,143,228,202,177,135, + 74, 32,135, 74, 32,230,205,181,217,179,143,217,179,143, 88,152,197, + 94,150,192,218,222,224,245,243,241,237,238,238,247,244,242,193,201, + 212, 60, 97,147, 56, 92,143,217,179,143,230,205,181,135, 74, 32,135, + 74, 32,231,207,184,217,179,143,217,179,143,103,160,205,100,162,205, + 92,149,191,212,215,217,254,248,243,188,202,213, 69,120,167, 91,139, + 179, 71,112,157,217,179,143,231,207,184,135, 74, 32,135, 74, 32,232, + 210,188,217,179,143,217,179,143,217,179,143, 99,156,203, 94,158,204, + 94,150,192,161,185,202, 79,140,186,106,157,196, 78,125,169,217,179, + 143,217,179,143,232,210,188,135, 74, 32,136, 76, 34,230,209,188,234, + 212,192,234,212,192,234,212,192,234,212,192, 95,154,202,102,163,207, + 93,151,194,111,168,206, 78,132,177,217,179,143,217,179,143,217,179, + 143,234,212,192,135, 74, 32,139, 77, 36,136, 76, 34,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,140, 82, 42, 84,138,186, 79,134,180, + 77,125,171,217,179,143,217,179,143,217,179,143,217,179,143,235,215, + 196,135, 74, 32,135, 74, 32,204,164,133,188,136, 95,188,136, 94,188, + 136, 94,188,136, 94,175,120, 80,144, 86, 46,220,194,172,236,217,199, + 236,217,199,236,217,199,236,217,199,236,217,199,233,214,196,138, 79, + 37,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,205, + 161,124,218,186,158,190,150,120,135, 74, 32,135, 74, 32,135, 74, 32, + 135, 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,168,147,225,210, + 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,218, + 191,169,144, 89, 49,225,210,200,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,210, + 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,225, + 210,200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_folder_new_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,182,132, 93,164,101, 52,164,101, 52, - 164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, - 52,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, - 255,255,255,255,255,164,101, 52,229,204,180,219,183,149,219,182,148, - 218,180,146,218,179,144,217,173,134,216,170,131,215,168,127,215,166, - 125,224,190,159,164,101, 52,255,255,255,255,255,255,255,255,255,255, - 255,255,164,101, 52,232,211,192,231,209,187,231,209,188,230,206,183, - 230,206,183,230,206,183,230,206,183,230,205,182,230,204,181,230,204, - 182,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,182, - 132, 93,164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52, - 164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52,182,132, - 93,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, + 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, + 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, + 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, + 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, + 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, + 134,213,172,134,213,172,134,212,172,134,212,172,134,212,172,134,213, + 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, + 215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,213,175, + 138,210,177,142,207,178,144,206,178,145,207,178,144,212,176,140,224, + 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, + 217,179,143,217,179,143,217,179,143,213,180,145,196,186,158,180,192, + 170,164,199,184,163,199,184,170,197,179,188,190,165,212,205,184,133, + 78, 38,135, 74, 32,230,205,181,217,179,143,217,179,143,217,179,143, + 217,179,143,212,180,146,187,190,165,144,206,198, 9,212,234, 95,222, + 232, 95,223,233, 10,212,236,128,212,211,169,216,209,124,104, 74,135, + 74, 32,231,207,184,217,179,143,217,179,143,217,179,143,214,179,144, + 192,188,161,139,206,200, 7,212,235,234,251,252, 4,212,237, 4,212, + 237,234,251,253, 7,212,237,111,226,235,107,153,141,135, 74, 32,232, + 210,188,217,179,143,217,179,143,216,179,143,208,182,149,165,197,181, + 89,219,229, 4,212,237,252,254,254,230,250,252,230,250,252,231,250, + 252, 4,213,237, 78,228,246, 92,189,192,136, 76, 34,230,209,188,234, + 212,192,234,212,192,233,212,192,216,214,198,146,220,221, 63,222,240, + 2,212,237,231,251,253,230,250,253,230,250,253,230,249,252, 1,212, + 237, 57,225,245, 86,202,209,139, 77, 36,136, 76, 34,135, 74, 32,135, + 74, 32,134, 74, 32,127, 92, 57, 97,161,154, 3,211,236,230,250,252, + 230,250,253,230,250,253,230,250,253,230,250,253,230,250,252, 4,213, + 237, 84,197,202,135, 74, 32,204,164,133,188,136, 95,188,136, 94,187, + 136, 94,178,143,106,123,167,154, 3,210,234,231,250,252,230,250,253, + 230,250,253,230,250,253,230,250,253,230,250,252, 4,213,236, 93,177, + 176,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,200, + 163,127,178,196,180, 8,210,233, 1,211,236, 0,212,237,237,251,253, + 237,251,253, 0,212,237, 1,212,237, 6,210,233,146,193,189,225,210, + 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,203, + 194,176,108,139,122, 80,218,232, 33,218,241, 0,212,237, 0,212,237, + 25,218,241, 70,227,245,157,241,251,231,252,254,255,255,255,225,210, + 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,134, 75, 33,207, + 211,204,190,245,252,129,235,248, 95,229,246, 90,229,246,118,234,248, + 183,244,252,234,252,254,253,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255); @@ -1696,328 +1969,398 @@ Const 255,255,255,255,255,255); Const - stdimg_edit_cut_16 : Array[0..821] of byte = ( + stdimg_folder_open_file_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 165,129,103,139, 82, 41,139, 82, 41,157,108, 74,157,108, 74,157,108, + 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157, + 108, 74,139, 82, 41,145,110, 84,255,255,255,255,255,255,139, 82, 41, + 209,165,123,210,165,124,210,165,124,210,165,124,210,165,124,210,165, + 124,210,165,124,210,165,124,210,165,124,210,165,124,210,165,124,209, + 165,123,139, 82, 41,255,255,255,255,255,255,157,104, 63,208,161,116, + 207,159,114,207,159,114,207,159,114,207,159,114,207,159,114,207,159, + 114,207,159,114,207,159,114,207,159,114,207,159,114,208,161,116,139, + 82, 41,255,255,255,139, 82, 41,196,151,112,208,162,119,207,160,117, + 207,160,117,207,160,117,207,160,117,207,160,117,207,160,117,207,160, + 117,207,160,117,207,160,117,207,160,117,208,162,119,196,151,112,139, + 82, 41,139, 82, 41,206,164,127,210,165,123,209,164,122,209,164,122, + 209,164,122,209,164,122,209,164,122,209,164,122,209,164,122,209,164, + 122,209,164,122,209,164,122,210,166,124,212,169,129,139, 82, 41,139, + 82, 41,215,180,148,220,186,153,220,186,153,220,186,153,220,185,152, + 216,179,143,212,169,130,211,168,127,211,168,127,211,168,127,211,168, + 127,211,168,127,212,168,128,209,169,133,139, 82, 41,139, 82, 41,139, + 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41, + 210,173,142,218,180,145,217,179,145,217,179,145,217,179,145,217,179, + 145,217,180,145,217,183,152,139, 82, 41,255,255,255,139, 82, 41,127, + 120,111,253,253,253,248,249,249,243,241,240,205,137, 89,139, 82, 41, + 139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, + 41,139, 82, 41,139, 82, 41,255,255,255,139, 82, 41,142,136,127,242, + 242,242,241,242,241,241,241,241,205,137, 89,255,247,240,253,231,214, + 253,230,212,252,228,208,251,227,203,254,243,232,205,136, 88,139, 82, + 41,255,255,255,255,255,255,139, 82, 41,177,154,132,151,138,124,150, + 137,123,148,136,121,205,137, 89,255,247,242, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92,253,242,231,205,137, 89,139, 82, 41,255,255, + 255,255,255,255,139, 82, 41,218,183,153,212,172,137,212,172,137,213, + 174,140,205,136, 88,254,247,241,252,228,209,251,226,204,249,221,196, + 247,218,192,252,242,233,205,137, 89,139, 82, 41,255,255,255,255,255, + 255,157,103, 62,197,159,132,213,181,155,213,181,155,211,179,152,204, + 135, 87,255,247,241, 93, 93, 93, 92, 92, 92, 92, 92, 92,254,249,243, + 255,247,240,205,137, 89,255,255,255,255,255,255,255,255,255,255,255, + 255,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,205,137, 89,255, + 247,240,255,247,240,255,247,240,255,247,240,255,247,240,255,247,240, + 205,137, 89,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,205,137, 89,205,137, 89,205, + 137, 89,205,137, 89,205,137, 89,205,137, 89,205,137, 89,205,137, 89, + 255,255,255,255,255,255); + +Const + stdimg_folder_up_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,172,172,226, 37, 37,178, 26, 26,175, 29, 29, - 174,209,209,239,255,255,255,255,255,255,255,255,255,255,255,255,172, - 172,226, 70, 70,190, 27, 27,176, 39, 39,179,209,209,239,255,255,255, - 255,255,255, 49, 49,182, 41, 41,219, 36, 36,209, 31, 31,206, 31, 31, - 177,209,209,239,255,255,255,255,255,255,209,209,239, 29, 29,177, 36, - 36,212, 34, 34,208, 31, 31,206, 39, 39,178,255,255,255,255,255,255, - 19, 19,173, 33, 33,208,255,255,255,117,117,213, 35, 35,211, 52, 52, - 184,255,255,255,255,255,255, 59, 59,187, 37, 37,214,114,114,214,255, - 255,255, 35, 35,210, 22, 22,173,255,255,255,255,255,255, 43, 43,179, - 37, 37,213,134,134,213,255,255,255, 38, 38,208, 13, 13,170,255,255, - 255,255,255,255, 5, 5,169, 38, 39,205,255,255,255,137,137,214, 34, - 34,209, 43, 43,179,255,255,255,255,255,255,172,172,226, 7, 7,168, - 35, 35,209, 73, 73,192, 26, 27,194, 1, 1,166,255,255,255,241,242, - 250, 30, 31,205, 25, 27,193, 74, 74,193, 33, 33,206, 7, 7,167,143, - 143,216,255,255,255,255,255,255,255,255,255,142,142,215, 9, 9,170, - 34, 34,210, 31, 31,206, 16, 17,184, 92, 94,196, 6, 7,169, 26, 26, - 201, 34, 34,209, 33, 33,203, 12, 12,170,171,171,225,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,127,127,210, - 33, 33,175, 6, 6,166, 70, 75,163, 2, 2,166, 25, 26,199, 37, 37, - 178,131,131,211,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,212,214,213, - 132,137,137,195,198,197,175,178,179, 52, 55,160,231,232,232,255,255, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,181,184,183,184,188,187, - 230,232,231,167,172,170,139,144,142,184,187,186,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,231,232,232,136,141,139,223,225,225,245,246,245, - 151,156,154,165,169,168,140,145,143,231,232,232,255,255,255,255,255, + 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, + 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, + 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, + 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, + 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, + 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, + 134,213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213, + 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, + 215,175,138,215,175,138,143, 85, 42,143, 85, 42,143, 85, 42,143, 85, + 42,143, 85, 42,143, 85, 42,215,175,138,215,175,138,215,175,138,226, + 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, + 217,179,143,143, 85, 42,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,217,179,143,217,179,143,228,202,177,135, + 74, 32,135, 74, 32,230,205,181,217,179,143,143, 85, 42,205,164,128, + 143, 85, 42,205,164,128,143, 85, 42,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,217,179,143,230,205,181,135, 74, 32,135, + 74, 32,231,207,184,217,179,143,182,133, 95,143, 85, 42,143, 85, 42, + 143, 85, 42,182,133, 95,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,231,207,184,135, 74, 32,135, 74, 32,232, + 210,188,217,179,143,217,179,143,205,164,128,143, 85, 42,205,164,128, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,232,210,188,135, 74, 32,136, 76, 34,230,209,188,234, + 212,192,234,212,192,234,212,192,234,212,192,234,212,192,226,197,169, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,234,212,192,135, 74, 32,139, 77, 36,136, 76, 34,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,140, 82, 42,218,190,167,227,200,173, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,235,215, + 196,135, 74, 32,135, 74, 32,204,164,133,188,136, 95,188,136, 94,188, + 136, 94,188,136, 94,175,120, 80,144, 86, 46,220,194,172,236,217,199, + 236,217,199,236,217,199,236,217,199,236,217,199,233,214,196,138, 79, + 37,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,205, + 161,124,218,186,158,190,150,120,135, 74, 32,135, 74, 32,135, 74, 32, + 135, 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,168,147,225,210, + 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,218, + 191,169,144, 89, 49,225,210,200,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,210, + 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,225, + 210,200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,152,156,154,178,182,181,247,247,247,142,147,145,156,160,159, - 179,182,181,182,187,185,172,175,174,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,228,229,229,136, - 141,139,217,220,219,239,240,239,171,175,173,184,187,186,179,184,182, - 203,206,205,137,142,140,197,199,198,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,144,148,146,176,181,179,246, - 247,247,155,159,157,202,204,203,255,255,255,141,146,144,201,206,204, - 172,176,175,156,160,159,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,136,141,139,208,212,210,239,240,239,179, - 183,181,255,255,255,255,255,255,225,227,226,167,172,170,195,200,198, - 142,147,145,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,143,148,146,247,247,247,170,173,172,202,204,203,255, - 255,255,255,255,255,255,255,255,152,156,155,208,211,210,169,173,171, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,221,223,222,145,149,148,162,166,165,255,255,255,255,255,255,255, - 255,255,255,255,255,185,187,186,148,152,150,255,255,255,255,255,255, 255,255,255,255,255,255); Const - stdimg_menu_save_16 : Array[0..821] of byte = ( + stdimg_font_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,216,171,142,205,149,112,189,115, 66,183,104, 53,181,104, - 53,180,103, 52,178,102, 52,176,101, 51,174,100, 51,172, 99, 50,170, - 98, 50,169, 97, 50,168, 96, 49,167, 97, 50,171,105, 60,188,134, 97, - 195,125, 79,235,198,173,234,197,173,254,251,248,254,251,248,254,251, - 248,254,251,248,254,251,248,254,251,248,254,251,248,254,251,248,254, - 251,248,254,251,248,200,154,124,199,152,121,173,107, 64,186,108, 56, - 237,202,179,224,162,122,254,250,247, 98,192,136, 98,192,136, 98,192, - 136, 98,192,136, 98,192,136, 98,192,136, 98,192,136, 98,192,136,253, - 249,246,202,141,101,201,155,124,167, 97, 50,187,108, 56,238,204,182, - 225,162,122,254,250,247,191,220,194,191,220,194,191,220,194,191,220, - 194,191,220,194,191,220,194,191,220,194,191,220,194,253,249,246,205, - 144,104,204,158,129,168, 97, 50,187,107, 56,239,206,184,225,162,121, - 254,250,247, 98,192,136, 98,192,136, 98,192,136, 98,192,136, 98,192, - 136, 98,192,136, 98,192,136, 98,192,136,253,249,246,207,147,106,206, - 163,132,170, 97, 50,186,106, 54,239,208,187,226,162,122,254,251,248, - 254,251,248,254,251,248,254,251,248,254,251,248,254,251,248,254,251, - 248,254,251,248,254,251,248,254,251,248,211,150,109,210,167,138,171, - 98, 50,187,106, 54,240,210,190,226,163,122,226,163,122,225,163,122, - 226,163,123,225,163,123,224,161,120,222,159,119,221,159,118,220,157, - 116,217,155,114,216,153,113,214,153,112,213,171,142,173, 99, 51,187, - 106, 54,242,213,194,227,163,122,227,163,122,226,163,123,226,163,123, - 226,164,123,225,162,121,224,161,120,222,160,119,222,158,117,220,157, - 116,218,155,115,217,155,115,218,176,149,175,100, 51,187,106, 54,242, - 216,197,227,164,123,227,163,122,227,164,122,226,164,123,226,163,123, - 225,163,123,225,162,121,223,160,119,222,159,118,221,158,116,219,156, - 114,220,157,116,221,181,154,177,101, 52,187,107, 54,244,217,199,230, - 166,125,200,140,100,201,141,101,201,142,103,203,146,108,203,146,109, - 202,144,105,200,140,101,200,140,100,200,140,100,200,140,100,218,156, - 116,225,186,159,179,102, 52,187,108, 55,244,220,201,231,167,125,249, - 236,225,249,236,225,249,237,227,252,244,238,253,250,247,253,247,243, - 250,237,229,247,231,219,247,229,217,246,229,216,222,160,119,228,190, - 164,180,103, 52,189,110, 58,245,221,204,231,168,126,250,240,232,250, - 240,232,201,141,102,250,240,233,253,248,243,254,250,248,252,244,239, - 249,233,223,247,231,219,247,229,217,224,162,120,231,194,169,182,104, - 53,192,116, 66,246,223,208,232,168,126,252,246,241,252,246,241,200, - 140,100,250,241,233,251,244,238,253,250,247,253,249,246,250,240,232, - 248,232,221,247,230,219,225,163,122,239,213,195,183,106, 54,198,130, - 85,246,223,209,233,170,128,254,250,246,253,250,246,200,140,100,251, - 243,238,251,241,234,252,246,242,254,251,248,252,246,241,249,236,226, - 248,231,219,238,208,186,236,208,189,189,116, 67,214,165,133,246,224, - 209,247,224,209,254,251,248,254,251,247,253,249,246,252,245,240,250, - 240,234,251,242,237,253,249,246,253,250,247,251,241,235,248,233,223, - 236,209,190,205,146,106,226,197,177,225,189,166,217,171,141,201,137, - 94,192,117, 67,189,110, 58,187,108, 55,187,107, 54,187,106, 54,187, - 106, 54,188,108, 57,189,110, 59,187,109, 58,191,116, 68,201,141,101, - 231,206,188,255,255,255); - -Const - stdimg_arrow_up : Array[0..149] of byte = ( - 66, 77,150, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 7, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 96, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, - 255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0); - -Const - stdimg_executable_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, - 54,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218,199,195,195,159, - 157,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,120, 72, 54,218,199,195,188,151,145,204,176,172,221,202, - 200,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54, - 218,199,195,181,142,133,182,144,135,183,145,137,217,197,193,190,154, - 148,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,120, 72, 54,218,199,195,174,136,122, - 175,135,122,176,137,124,193,162,152,216,196,191,188,153,144,181,143, - 133,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,120, 72, 54,218,199,195,201,177,167,200,176,165,187,155,143, - 183,149,136,171,131,116,198,170,161,194,163,153,175,136,123,177,137, - 125,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,207,185,175,207,186,176,208,187,177,209,187,178,202,178,167, - 187,156,142,205,181,171,209,188,179,173,134,119,171,130,115,172,132, - 117,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,204,182,171,205,183,172,206,184,173,206,185,174,199,174,162, - 176,140,124,191,162,149,203,179,169,170,130,113,153,111, 86,120, 72, - 54,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,202,180,167,203,180,168,203,181,169,204,182,170,176,142,124, - 180,148,131,177,144,127,153,111, 86,120, 72, 54,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,200,177,163,200,178,164,201,178,165,186,158,141,150,106, 81, - 153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,198,174,159,198,175,160,186,159,141,144,100, 72,120, 72, 54, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,195,171,155,159,122, 95,120, 72, 54,255, 0,255,255, 0,255, + 255,255, 0,255,255, 0,255,255, 0,255,128,128,128,135,135,135,133, + 133,133,133,133,133,128,128,128,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255,255, 0,255,255, 0,255, 88, 88, 88,102,102,102,108,108,108, 99, + 99, 99, 83, 83, 83,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,255, + 255,255, 0,255,255, 0,255, 81, 81, 81, 84, 84, 84, 81, 81, 81,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); - -Const - stdimg_search_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 255, 0,255, 60, 77,162, 76, 89,162, 77, 90,161, 74, 87,161, 73, 84, + 156,255, 0,255, 80, 80, 77, 45, 45, 45, 74, 74, 74,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 36, 59,219, 0, 43,255, 0, 47,255, 0, 39,239, 45, 62,197,255, 0, + 255, 65, 65, 63, 7, 7, 7, 60, 60, 60,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,100,148,186, 34, - 103,157,129,168,198,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,111,156,194, 85,141,188,137,181,221, 24, - 95,151,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,123,164,202,100,151,197,157,193,228,102,153,199, 49,113,165,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,233,207,186, - 219,178,146,211,166,128,208,161,124,210,166,133,174,161,153,117,162, - 204,171,203,232,118,164,206, 64,123,175,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,232,202,176,232,201,174,245,225,205, - 247,229,211,247,229,209,243,221,200,223,186,156,199,168,145,134,174, - 213, 80,135,187,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,241,219,200,237,208,183,248,232,217,245,222,200,243,216,189, - 243,214,187,244,219,194,247,228,210,223,187,157,160,151,149,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,238, - 206,178,247,231,215,246,225,204,244,219,194,244,218,192,243,216,189, - 243,215,187,244,219,194,243,222,201,210,168,135,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,240,206,175,249, - 236,223,245,223,200,245,221,198,244,220,195,244,218,193,243,217,190, - 243,215,189,248,230,211,211,166,128,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,244,211,181,249,237,225,246, - 225,204,245,223,201,245,222,199,244,220,196,244,219,194,244,218,192, - 248,231,214,215,171,135,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,248,219,193,249,235,222,247,231,214,246, - 225,204,245,224,202,245,222,200,245,221,197,246,225,203,245,226,208, - 223,185,153,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,252,234,216,248,226,204,250,238,227,247,231,214,246, - 226,206,246,225,203,246,227,208,249,234,221,236,207,181,236,212,191, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,251,228,206,249,226,205,250,236,222,249,238,226,249, - 237,226,248,233,218,240,213,189,237,208,183,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,252,234,217,250,221,194,246,214,185,244,211,181,243, - 212,184,245,224,205,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 19, 38,213, 0, 32,255, 80, 88,168,255, 0,255,255, 0,255, 55, 55, + 55, 0, 0, 0, 58, 58, 58,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 28, 37,212, + 0, 16,255, 86, 89,166,255, 0,255,255, 0,255, 55, 55, 55, 1, 1, + 1, 58, 58, 58,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255, 27, 28,213, 0, 3,255, + 85, 85,168,255, 0,255,255, 0,255, 55, 55, 55, 0, 0, 0, 58, 58, + 58,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255, 27, 27,213, 0, 0,255, 84, 84,166, + 255, 0,255,255, 0,255, 57, 57, 57, 11, 11, 11, 60, 60, 60,255, 0, 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 0,255,255, 0,255, 27, 27,220, 3, 4,166, 62, 62, 88,255, 0,255, + 255, 0,255, 71, 71, 71, 49, 49, 49, 71, 71, 71,255, 0,255,255, 0, + 255,100,100,100,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255, 27, 27,224, 19, 19,138, 52, 52, 32,255, 0,255,255, 0,255, + 78, 78, 78, 93, 93, 93, 76, 76, 76,255, 0,255,255, 0,255, 40, 40, + 40,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 29, + 29,225, 24, 24,153,113,113, 93, 65, 65, 65, 71, 71, 71, 84, 84, 81, + 139,139,138, 75, 75, 75, 74, 74, 74, 66, 66, 66,113,113,113,255, 0, + 255, 78, 78,167, 88, 88,152,255, 0,255,255, 0,255, 48, 48,225, 37, + 38,161,103,103, 98,114,114,111,106,106,103,106,106,115,112,112,115, + 111,111,111,105,105,105,113,113,113,113,113,113,255, 0,255, 83, 83, + 197, 45, 45,204,255, 0,255,255, 0,255, 59, 60,212, 81, 83,247, 72, + 72,146,255, 0,255,255, 0,255, 43, 44,213,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,105,105,181,113,114, + 255, 76, 76,207, 77, 77,191, 97, 98,244,127,128,255, 79, 79,220, 83, + 84,188, 87, 87,223,104,105,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,123,123,178, 80, 80,215, 84, 84, + 223, 80, 80,228, 81, 81,220, 74, 74,218, 79, 79,223, 77, 77,228, 83, + 83,239, 67, 68,231,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255); Const - stdimg_menu_quit_16 : Array[0..821] of byte = ( + stdimg_help_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31, - 163, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31,163, 31, - 31,163, 31, 31,163, 31, 31,163,255, 0,255,255, 0,255,255, 0,255, - 33, 33,176, 6, 5,193, 0, 0,194, 0, 0,201, 0, 0,206, 0, 0, - 217, 24, 24,228, 26, 26,234, 12, 15,235, 6, 12,236, 26, 36,239, 36, - 48,241, 50, 67,251, 42, 47,189,255, 0,255,255, 0,255, 16, 16,173, - 0, 0,181, 0, 0,190, 0, 0,195,108,108,225,216,216,249,255,255, - 255,255,255,255,227,227,253,133,136,243, 24, 34,233, 31, 43,235, 45, - 60,239, 39, 46,196,255, 0,255,255, 0,255, 16, 16,170, 0, 0,181, - 1, 1,187,142,142,229,255,255,255,223,223,246,144,144,233,139,139, - 235,212,212,246,255,255,255,173,177,248, 32, 44,235, 42, 57,239, 38, - 45,195,255, 0,255,255, 0,255, 18, 18,168, 1, 1,179,105,105,214, - 255,255,255,173,173,233, 10, 10,206, 0, 0,213, 0, 0,221, 2, 2, - 224,149,151,238,255,255,255,147,153,246, 29, 43,237, 37, 44,193,255, - 0,255,255, 0,255, 23, 23,166, 23, 23,185,211,211,242,246,246,252, - 51, 51,207, 30, 30,212, 31, 31,218, 19, 19,222, 0, 0,227, 7, 10, - 227,228,228,250,235,236,254, 41, 53,238, 34, 40,192,255, 0,255,255, - 0,255, 27, 27,164, 51, 51,190,239,239,250,220,220,246, 44, 44,203, - 54, 54,212, 50, 50,217, 54, 54,223, 57, 56,230, 18, 19,230,181,182, - 247,255,255,255, 51, 60,238, 30, 35,190,255, 0,255,255, 0,255, 31, - 31,163, 58, 58,188,227,227,245,239,239,251, 67, 67,206, 61, 61,210, - 155,155,235,158,158,239, 73, 73,227, 74, 74,233,222,222,252,239,240, - 253, 30, 36,234, 28, 31,189,255, 0,255,255, 0,255, 36, 36,162, 65, - 65,188,170,170,222,255,255,255,159,159,229, 74, 74,208,238,238,251, - 244,244,253, 84, 84,224,149,149,239,255,255,255,197,197,244, 14, 16, - 231, 22, 23,187,255, 0,255,255, 0,255, 40, 40,162, 89, 89,193, 97, - 97,194,221,221,238,255,255,255,147,147,224,225,225,247,230,230,249, - 160,160,235,255,255,255,233,233,246,131,131,230, 99, 99,237, 23, 23, - 185,255, 0,255,255, 0,255, 46, 46,163,107,107,195,100,100,195,113, - 113,198,175,175,215,133,133,212,231,231,248,233,233,250,165,165,225, - 208,208,232,135,135,222,123,123,229,141,141,234, 53, 53,186,255, 0, - 255,255, 0,255, 55, 55,165,120,120,195,118,118,196,118,118,200,113, - 113,199,123,123,207,241,241,251,246,246,253,131,131,216,128,128,215, - 137,137,224,143,143,225,150,150,229, 68, 68,186,255, 0,255,255, 0, - 255, 84, 84,167,172,172,222,170,170,219,172,172,222,175,175,225,179, - 179,229,176,176,228,179,179,231,189,189,237,191,191,238,195,195,239, - 197,197,240,209,209,247,163,163,193,255, 0,255,255, 0,255,255, 0, - 255,103,103,175,100,100,172,100,100,171,101,101,172,101,101,172,101, - 101,173,102,102,173,102,102,173,102,102,173,103,103,173,104,104,173, - 104,104,175,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255,192,161,139,164,117, 85,142, 85, 45,142, 85, 45,165,119, 87,193, + 161,139,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,198,169,149,147, 91, 53,203,175, + 155,229,214,203,248,244,241,249,245,242,232,219,209,211,186,167,149, + 94, 56,199,171,151,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,163,116, 84,175,134,105,243,237,233,221,201,186,199,165, + 139,187,145,113,193,153,121,213,183,159,233,218,205,248,243,239,183, + 145,117,166,120, 88,255, 0,255,255, 0,255,255, 0,255,199,170,150, + 174,133,105,243,238,233,183,143,114,165,114, 76,179,135,101,255,255, + 255,255,255,255,193,151,116,197,155,120,215,185,160,249,245,241,180, + 140,112,199,171,151,255, 0,255,255, 0,255,146, 91, 52,242,235,230, + 177,135,105,157,103, 64,163,111, 73,178,132, 98,255,255,255,255,255, + 255,189,146,111,193,150,114,197,155,120,214,183,157,247,241,237,147, + 93, 54,255, 0,255,192,161,139,195,166,145,211,188,173,148, 92, 51, + 154,100, 60,161,108, 69,169,120, 82,200,168,143,204,173,148,183,137, + 101,187,143,107,191,147,112,193,150,115,231,215,201,207,181,161,193, + 161,139,162,115, 83,221,204,192,175,134,106,145, 88, 47,151, 96, 56, + 157,103, 64,167,118, 81,228,212,200,229,214,202,180,134, 98,182,135, + 99,185,139,103,186,142,106,209,178,155,230,215,204,165,118, 86,141, + 83, 43,245,240,237,148, 94, 56,142, 83, 42,148, 91, 51,153, 98, 58, + 159,105, 66,243,237,232,255,255,255,208,181,160,176,127, 90,178,131, + 94,180,133, 96,189,148,117,248,243,240,142, 84, 45,141, 83, 43,245, + 240,237,147, 92, 54,138, 79, 37,144, 86, 45,149, 93, 52,154, 99, 59, + 181,139,109,252,251,249,254,254,254,193,157,130,172,122, 84,173,124, + 86,183,141,108,247,243,239,142, 84, 44,162,115, 83,221,204,192,172, + 130,101,135, 74, 32,139, 80, 39,144, 86, 45,149, 92, 52,153, 98, 58, + 194,161,137,255,255,255,243,236,232,165,114, 75,166,115, 77,195,161, + 134,225,210,198,164,117, 85,192,161,139,195,165,144,208,185,169,135, + 74, 32,135, 74, 32,159,110, 75,160,111, 77,148, 91, 50,168,122, 89, + 255,255,255,253,252,251,161,109, 70,159,106, 67,218,198,183,198,170, + 149,192,161,139,255, 0,255,146, 92, 53,241,234,229,165,120, 88,135, + 74, 32,176,136,108,254,253,253,233,222,214,246,242,239,255,255,255, + 220,202,189,152, 96, 56,179,137,107,242,235,230,145, 91, 52,255, 0, + 255,255, 0,255,198,169,149,173,131,103,242,235,231,166,120, 89,156, + 105, 71,222,206,194,247,243,240,241,234,230,208,184,167,160,111, 77, + 173,130,100,243,237,232,171,128, 98,198,169,149,255, 0,255,255, 0, + 255,255, 0,255,163,116, 84,170,127, 97,240,232,227,208,185,169,172, + 130,101,150, 96, 59,150, 96, 59,172,130,101,209,186,170,240,233,228, + 170,128, 98,163,116, 84,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,198,169,149,145, 91, 52,193,162,141,219,201,189,244, + 239,235,244,239,235,219,201,189,193,163,141,145, 90, 51,199,170,150, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,192,161,139,162,115, 83,141, 83, 43,141, + 83, 43,162,115, 83,192,161,139,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255); Const - stdimg_menu_exit_16 : Array[0..821] of byte = ( + stdimg_hidden : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 15, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255, + 255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, + 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, + 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255, + 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, + 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255, + 255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 0, 0, 0); + +Const + stdimg_link : Array[0..449] of byte = ( + 66, 77,194, 1, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 11, 0, 0, 0, 11, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 140, 1, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255, + 255,255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255, + 255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255, + 255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255, + 255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, + 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128, + 128,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, + 128,128,128,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, + 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, + 0, 0,128,128,128,255,255,255,255,255,255,255,255,255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, + 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0, 0, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128, 0, 0, 0, 0, 0, 0); + +Const + stdimg_list_add_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,182,132, + 93,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,164,101, 52,230,206, + 183,230,206,183,164,101, 52,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,164,101, 52,230,206,183,217,173, + 134,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,164,101, 52,230,206,183,217,173,134,164,101, + 52,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,182,132, 93,164,101, 52,164,101, 52, + 164,101, 52,164,101, 52,217,173,134,217,173,134,164,101, 52,164,101, + 52,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, + 255,255,255,255,255,164,101, 52,229,204,180,219,183,149,219,182,148, + 218,180,146,218,179,144,217,173,134,216,170,131,215,168,127,215,166, + 125,224,190,159,164,101, 52,255,255,255,255,255,255,255,255,255,255, + 255,255,164,101, 52,232,211,192,231,209,187,231,209,188,230,206,183, + 230,206,183,230,206,183,230,206,183,230,205,182,230,204,181,230,204, + 182,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,182, + 132, 93,164,101, 52,164,101, 52,164,101, 52,164,101, 52,230,206,183, + 230,206,183,164,101, 52,164,101, 52,164,101, 52,164,101, 52,182,132, + 93,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,164,101, 52,230,206,183,230,206,183, + 164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,164,101, 52,230,206,183,230,206,183,164,101, 52, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,164,101, 52,230,206,183,230,206,183,164,101, 52,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,182, + 132, 93,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_list_remove_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,165,193,214,128,167,197, 99,148,184, 22, 94,147, 29, 99,151, - 153,153,153,113,113,113, 84, 84, 84, 81, 81, 81, 79, 79, 79, 76, 76, - 76, 74, 74, 74, 71, 71, 71, 69, 69, 69, 37,103,157, 50,116,168, 61, - 124,175, 71,132,181, 78,138,186, 62,126,173, 32,101,152,255,255,255, - 255,255,255, 88, 88, 88,162,162,162,162,162,162,163,163,163,164,164, - 164,164,164,164,165,165,165, 47,111,165,120,171,210,120,171,211,115, - 167,209,105,160,205, 64,127,174, 35,103,154,255,255,255,255,255,255, - 92, 92, 92,161,161,161, 60,115, 64,160,161,161,163,163,163,163,163, - 163,164,164,164, 54,116,170,125,175,212, 91,154,201, 84,149,199, 88, - 150,200, 65,128,174, 38,105,157,255,255,255,255,255,255, 96, 96, 96, - 160,160,160, 61,118, 65, 54,113, 57,162,162,162,162,162,162,163,163, - 163, 61,121,176,130,179,215, 98,159,204, 90,154,201, 94,155,202, 67, - 129,175, 44,109,160, 55,130, 62, 52,126, 59, 49,121, 55, 46,117, 52, - 73,145, 80, 70,143, 76, 57,115, 61,161,161,161,162,162,162, 69,126, - 180,136,183,217,103,163,207, 97,158,204, 99,159,204, 69,131,177, 49, - 113,164, 59,135, 66,137,203,146,132,200,141,128,198,136,123,195,131, - 119,193,127, 71,143, 77, 59,116, 63,161,161,161, 76,132,186,141,187, - 219,110,168,209,102,166,209, 95,180,223, 71,133,177, 55,117,169, 62, - 139, 70,143,206,153,125,198,135,120,195,129,115,192,124,116,192,124, - 121,194,129, 73,144, 79, 84,127, 87, 84,137,191,148,191,221,117,173, - 212, 99,184,225, 75,212,255, 66,139,184, 61,122,173, 65,144, 74,148, - 210,159,145,208,154,141,205,150,137,203,146,132,200,141, 81,152, 88, - 65,124, 70,159,159,159, 90,142,196,152,195,224,124,179,215,116,175, - 214, 94,196,237, 75,136,179, 69,127,178, 68,148, 77, 66,145, 75, 63, - 141, 72, 61,137, 69, 93,164,101, 90,160, 97, 69,131, 75,158,158,158, - 158,158,158, 96,146,201,158,199,226,131,184,218,125,180,215,126,179, - 215, 79,137,180, 75,132,183,255,255,255,255,255,255,119,119,119,154, - 154,154, 61,138, 69, 73,138, 79,156,156,156,157,157,157,157,157,157, - 102,150,204,162,203,227,137,189,220,131,185,218,132,185,218, 81,139, - 181, 82,137,188,255,255,255,255,255,255,122,122,122,153,153,153, 82, - 145, 89,153,154,153,155,155,155,156,156,156,156,156,156,108,154,208, - 167,206,229,143,193,223,137,189,220,139,189,220, 83,141,182, 90,142, - 194,255,255,255,255,255,255,125,125,125,153,153,153,153,153,153,154, - 154,154,154,154,154,155,155,155,155,155,155,111,157,211,170,209,231, - 171,209,231,152,199,225,145,194,222, 86,143,183, 96,147,198,255,255, - 255,255,255,255,128,128,128,126,126,126,124,124,124,122,122,122,119, - 119,119,117,117,117,114,114,114,113,158,212,111,158,214,135,178,220, - 171,211,232,169,208,230, 88,144,184,103,151,203,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,132,172,220,109,156,212, - 133,177,218, 90,145,185,109,156,207,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,177,202,232, - 108,156,211,112,158,210); + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,182,132, 93,164,101, 52,164,101, 52, + 164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, + 52,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, + 255,255,255,255,255,164,101, 52,229,204,180,219,183,149,219,182,148, + 218,180,146,218,179,144,217,173,134,216,170,131,215,168,127,215,166, + 125,224,190,159,164,101, 52,255,255,255,255,255,255,255,255,255,255, + 255,255,164,101, 52,232,211,192,231,209,187,231,209,188,230,206,183, + 230,206,183,230,206,183,230,206,183,230,205,182,230,204,181,230,204, + 182,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,182, + 132, 93,164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52, + 164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52,182,132, + 93,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); Const stdimg_menu_check_16 : Array[0..821] of byte = ( @@ -2044,582 +2387,292 @@ Const 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, - 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); - -Const - stdimg_btn_close_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,183,183,183,174,174,174, 48,113,169, 44,110,166, 40,107, - 163, 36,104,160, 33,102,158, 29, 99,155, 26, 97,153, 23, 95,151, 20, - 92,148, 17, 91,147,108,108,108,108,108,108,255,255,255,255,255,255, - 255,255,255,255,255,255, 54,117,173,134,182,216,131,179,215,129,178, - 214,125,175,213,123,173,212,121,171,211,118,170,210,116,168,209, 21, - 93,149,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 60,121,177,139,185,218,102,162,206, 98,160,205, 95,157, - 203, 91,154,201, 88,151,200, 84,149,199,119,171,211, 25, 96,152,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 66,125,181,143,189,220,108,167,208,103,164,207,100,161,205, 96,158, - 204, 92,155,202, 89,153,201,123,173,212, 30,100,156,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 72,130,186, - 147,192,221,113,171,210,109,168,209,105,165,207,102,162,206, 98,159, - 204, 94,156,203,127,176,213, 35,103,159,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 78,134,190,152,195,223, - 119,175,213,115,172,211,111,169,210,107,167,208, 91,183,227, 84,194, - 237,129,180,215, 40,107,163,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255, 83,138,194,156,198,225,124,179,215, - 121,177,213,117,173,212,113,171,210, 95,186,228, 75,212,255,124,187, - 224, 46,111,167,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255, 89,142,198,160,201,227,130,184,217,126,181,216, - 122,178,214,119,175,213,115,172,211,109,171,212,140,186,218, 51,115, - 171,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255, 94,145,201,164,204,228,135,187,219,132,185,218,128,182,216, - 124,179,215,121,176,213,116,173,212,143,189,220, 57,119,175,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 99, - 149,205,168,207,229,140,191,221,136,189,220,133,186,219,129,183,217, - 126,180,215,122,178,214,148,193,221, 63,124,180,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,103,152,208,171, - 209,231,144,194,223,141,192,222,138,190,220,135,187,219,131,184,218, - 128,182,216,153,196,224, 69,128,184,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,107,155,211,174,212,232,171, - 211,232,170,209,231,168,207,229,165,205,228,162,203,228,160,201,226, - 157,199,225, 75,132,188,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,110,157,213,108,155,211,105,154,210,102, - 151,207, 99,149,205, 96,147,203, 92,144,200, 89,142,198, 85,139,195, - 81,136,192,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); - -Const - stdimg_bevel : Array[0..1709] of byte = ( - 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 120, 6, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,200,208,212, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,128,128,128,200,208,212,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,255,255, - 255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255, - 255,255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,200,208,212,128, - 128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255, - 128,128,128,255,255,255,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,128,128,128,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,255,255,255, - 200,208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, - 0,255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,255,255,255,200,208,212,128,128,128,255,255,255,255, 0,255,255, - 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,128,128,128,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,255,255,255,200,208,212,128,128,128,255,255,255, - 255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255, - 255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,255,255,255,200,208,212,128,128, - 128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128, - 128,128,255,255,255,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0, - 255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,128,128,128,255,255,255,255, 0,255,255, 0, - 255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,255, - 255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, - 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255, - 200,208,212,255,255,255,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,128,128,128,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128, - 255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128, - 128,255,255,255,200,208,212,255,255,255,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,128,128,128,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, - 0,255,128,128,128,255,255,255,200,208,212,255,255,255,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, - 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,255,255, - 255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,128, - 128,128,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200, - 208,212,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,128,128,128,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,255, - 255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, - 255,255,255,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,128,128,128,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,200,208,212,255,255,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,200,208,212,255, 0,255, + 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, + 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, + 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0); - -Const - stdimg_choice_no_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255, 98, 98,162,164,164,178,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,152,152,171,101,101,160,255, 0,255,255, 0,255, - 255, 0,255, 48, 48,162, 55, 55,241, 19, 19,202,152,152,172,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,135, - 135,164, 17, 17,205, 48, 48,234, 61, 61,154,255, 0,255,255, 0,255, - 8, 8,224, 72, 72,245, 76, 76,240, 5, 5,200,135,135,163,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,116,116,157, 5, 5,205, 90, - 90,239, 90, 90,244, 9, 9,217,255, 0,255,255, 0,255, 34, 34,254, - 55, 55,255, 89, 89,255, 74, 74,237, 5, 5,199,119,119,156,255, 0, - 255,255, 0,255, 98, 98,152, 8, 8,206, 90, 90,237,115,115,255, 85, - 85,255, 54, 54,253,255, 0,255,255, 0,255, 29, 29,255, 43, 43,255, - 57, 57,255, 86, 86,255, 69, 69,235, 5, 5,196,102,102,148, 85, 85, - 147, 9, 9,203, 84, 84,237,106,106,255, 80, 80,255, 65, 65,255, 52, - 52,255,255, 0,255,255, 0,255,255, 0,255, 30, 30,255, 43, 43,255, - 53, 53,255, 74, 74,255, 55, 55,232, 1, 1,187, 6, 6,192, 68, 68, - 237, 88, 88,255, 71, 71,255, 62, 62,255, 54, 54,249,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255, 31, 31,251, 47, 47,255, - 60, 60,255, 78, 78,255, 49, 49,232, 55, 55,237, 75, 75,255, 56, 56, - 255, 50, 50,255, 55, 55,241,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255, 77, 77,238, 97, 97,255, - 96, 96,255, 96, 96,255, 98, 98,255, 98, 98,255, 91, 91,255, 73, 73, - 227,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 43, 43,156, 61, 61,244, 99, 99,255, - 99, 99,255,100,100,255,100,100,255, 54, 54,237, 75, 75,146,255, 0, 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255, 47, 47,123, 0, 0,166, 49, 49,242,107,107,255,106,106,255, - 106,106,255,105,105,255, 33, 33,230, 0, 0,152, 82, 82,127,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 43, 43,115, 0, - 0,164, 55, 55,243,121,121,255,120,120,255,121,121,255,121,121,255, - 120,120,255,116,116,255, 38, 38,229, 0, 0,146, 82, 82,123,255, 0, - 255,255, 0,255,255, 0,255, 45, 45,112, 0, 0,156, 66, 66,242,138, - 138,255,137,137,255,136,136,255,102,102,209,103,103,224,141,141,255, - 136,136,255,132,132,255, 42, 42,227, 0, 0,139, 91, 91,128,255, 0, - 255,255, 0,255, 0, 0,156, 73, 73,242,155,155,255,153,153,255,153, - 153,255,115,115,207,255, 0,255,255, 0,255,110,110,228,158,158,255, - 153,153,255,148,148,255, 47, 47,229, 13, 13,130,255, 0,255,255, 0, - 255, 85, 85,254,174,174,255,169,169,255,168,168,255,119,119,205,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,118,118,228,175,175,255, - 169,169,255,169,169,255, 60, 60,222,255, 0,255,255, 0,255,127,127, - 208,187,187,255,187,187,255,122,122,207,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,126,126,228,200,200,255, - 164,164,255,152,152,199,255, 0,255,255, 0,255,255, 0,255,126,126, - 210,127,127,214,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,121,121,231,154,154,197, - 255, 0,255,255, 0,255); - -Const - stdimg_radiobuttons : Array[0..2213] of byte = ( - 66, 77,166, 8, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 60, 0, 0, 0, 12, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 112, 8, 0, 0,196, 14, 0, 0,196, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255, 0,255,255, 0, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255,255,255,255,255,255,255,255,255,255,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255,255,255,255,255,255,191,191,191,191,191,191,191,191,191, - 191,191,191,255,255,255,255,255,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255,255,255,255,255,255,191,191,191,191,191,191,191, - 191,191,191,191,191,255,255,255,255,255,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255,255,255,255,255,255,191,191,191,191,191, - 191,191,191,191,191,191,191,255,255,255,255,255,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255,255,255,255,255,255,191,191,191, - 191,191,191,191,191,191,191,191,191,255,255,255,255,255,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255,255,255,255,255,255,191, - 191,191,191,191,191,191,191,191,191,191,191,255,255,255,255,255,255, - 255, 0,255,255, 0,255,255, 0,255,127,127,127,191,191,191,191,191, - 191,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,191, - 191,191,255,255,255,255, 0,255,255, 0,255,127,127,127,191,191,191, - 191,191,191,255,255,255,255,255,255,255,255,255,255,255,255,191,191, - 191,191,191,191,255,255,255,255, 0,255,255, 0,255,127,127,127,191, - 191,191,191,191,191,127,127,127,127,127,127,127,127,127,127,127,127, - 191,191,191,191,191,191,255,255,255,255, 0,255,255, 0,255,127,127, - 127,191,191,191,191,191,191,127,127,127,127,127,127,127,127,127,127, - 127,127,191,191,191,191,191,191,255,255,255,255, 0,255,255, 0,255, - 127,127,127,191,191,191,191,191,191,127,127,127,127,127,127,127,127, - 127,127,127,127,191,191,191,191,191,191,255,255,255,255, 0,255,255, - 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, 0, - 255,255, 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255, - 255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, - 255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, - 191,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 191,191,191,255,255,255,255, 0,255,127,127,127, 0, 0, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); + +Const + stdimg_menu_exit_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0, - 255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255, - 255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, - 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255,127,127, - 127, 0, 0, 0,127,127,127,127,127,127,127,127,127, 0, 0, 0, 0, - 0, 0,127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, - 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, - 255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191, - 191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, - 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, - 127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127, - 127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, - 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, - 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,255,255,255,191,191,191,255,255,255,127, - 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255,255, - 255,127,127,127, 0, 0, 0,127,127,127,127,127,127, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,191,191,191, - 255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, - 191,191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, + 255,255,165,193,214,128,167,197, 99,148,184, 22, 94,147, 29, 99,151, + 153,153,153,113,113,113, 84, 84, 84, 81, 81, 81, 79, 79, 79, 76, 76, + 76, 74, 74, 74, 71, 71, 71, 69, 69, 69, 37,103,157, 50,116,168, 61, + 124,175, 71,132,181, 78,138,186, 62,126,173, 32,101,152,255,255,255, + 255,255,255, 88, 88, 88,162,162,162,162,162,162,163,163,163,164,164, + 164,164,164,164,165,165,165, 47,111,165,120,171,210,120,171,211,115, + 167,209,105,160,205, 64,127,174, 35,103,154,255,255,255,255,255,255, + 92, 92, 92,161,161,161, 60,115, 64,160,161,161,163,163,163,163,163, + 163,164,164,164, 54,116,170,125,175,212, 91,154,201, 84,149,199, 88, + 150,200, 65,128,174, 38,105,157,255,255,255,255,255,255, 96, 96, 96, + 160,160,160, 61,118, 65, 54,113, 57,162,162,162,162,162,162,163,163, + 163, 61,121,176,130,179,215, 98,159,204, 90,154,201, 94,155,202, 67, + 129,175, 44,109,160, 55,130, 62, 52,126, 59, 49,121, 55, 46,117, 52, + 73,145, 80, 70,143, 76, 57,115, 61,161,161,161,162,162,162, 69,126, + 180,136,183,217,103,163,207, 97,158,204, 99,159,204, 69,131,177, 49, + 113,164, 59,135, 66,137,203,146,132,200,141,128,198,136,123,195,131, + 119,193,127, 71,143, 77, 59,116, 63,161,161,161, 76,132,186,141,187, + 219,110,168,209,102,166,209, 95,180,223, 71,133,177, 55,117,169, 62, + 139, 70,143,206,153,125,198,135,120,195,129,115,192,124,116,192,124, + 121,194,129, 73,144, 79, 84,127, 87, 84,137,191,148,191,221,117,173, + 212, 99,184,225, 75,212,255, 66,139,184, 61,122,173, 65,144, 74,148, + 210,159,145,208,154,141,205,150,137,203,146,132,200,141, 81,152, 88, + 65,124, 70,159,159,159, 90,142,196,152,195,224,124,179,215,116,175, + 214, 94,196,237, 75,136,179, 69,127,178, 68,148, 77, 66,145, 75, 63, + 141, 72, 61,137, 69, 93,164,101, 90,160, 97, 69,131, 75,158,158,158, + 158,158,158, 96,146,201,158,199,226,131,184,218,125,180,215,126,179, + 215, 79,137,180, 75,132,183,255,255,255,255,255,255,119,119,119,154, + 154,154, 61,138, 69, 73,138, 79,156,156,156,157,157,157,157,157,157, + 102,150,204,162,203,227,137,189,220,131,185,218,132,185,218, 81,139, + 181, 82,137,188,255,255,255,255,255,255,122,122,122,153,153,153, 82, + 145, 89,153,154,153,155,155,155,156,156,156,156,156,156,108,154,208, + 167,206,229,143,193,223,137,189,220,139,189,220, 83,141,182, 90,142, + 194,255,255,255,255,255,255,125,125,125,153,153,153,153,153,153,154, + 154,154,154,154,154,155,155,155,155,155,155,111,157,211,170,209,231, + 171,209,231,152,199,225,145,194,222, 86,143,183, 96,147,198,255,255, + 255,255,255,255,128,128,128,126,126,126,124,124,124,122,122,122,119, + 119,119,117,117,117,114,114,114,113,158,212,111,158,214,135,178,220, + 171,211,232,169,208,230, 88,144,184,103,151,203,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255, - 255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, - 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, - 127,127,127,127,127,127,127,127,127, 0, 0, 0, 0, 0, 0,127,127, - 127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, - 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255,255, 0, - 255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, 0,255, - 255, 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, - 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255,255, - 255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191, - 255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, - 191,191,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, - 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, - 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255,127,127, - 127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, - 127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255, - 127,127,127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,127,127, - 127,127,127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, - 0,255,127,127,127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127, - 127,127,127,127,127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0, - 255,255, 0,255,255, 0,255,127,127,127,127,127,127, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127, - 127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127, - 127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127, - 127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127, - 127,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, - 127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,127,127,127,127,127,127,127,127,127,127,127, - 127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127,127,127,127, - 127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127,127, - 127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127, - 127,127,127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127, - 127,127,127,127,127,127,127,127,127,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255); + 255,255,255,255,255,255,255,255,255,255,255,132,172,220,109,156,212, + 133,177,218, 90,145,185,109,156,207,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,177,202,232, + 108,156,211,112,158,210); + +Const + stdimg_menu_preferences_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,215,194,180,135, 74, 32,135, 74, 32,135, 74, 32,223,207, + 196,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 135, 74, 32,190,165,146,184,156,134,184,156,134,135, 74, 32,223,207, + 196,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,193, + 196,195,154,158,157,193,196,195,255, 0,255,255, 0,255,135, 74, 32, + 204,187,173,167,145,125,181,149,122,174,139,114,135, 74, 32,223,207, + 196,255, 0,255,255, 0,255,255, 0,255,219,220,220,133,138,136,158, + 161,160,133,138,136,255, 0,255,255, 0,255,135, 74, 32,204,187,173, + 164,141,120,162,138,116,180,149,122,179,147,124,135, 74, 32,255, 0, + 255,255, 0,255,219,220,220,133,138,136,210,211,212,194,195,196,133, + 138,136,255, 0,255,255, 0,255,232,221,213,135, 74, 32,212,200,189, + 164,141,120,164,141,120,190,165,146,135, 74, 32,255, 0,255,219,220, + 220,133,138,136,226,227,228,194,196,198,133,138,136,193,196,195,255, + 0,255,255, 0,255,255, 0,255,243,237,233,135, 74, 32,204,187,173, + 204,187,173,179,147,124,135, 74, 32,193,196,195,133,138,136,211,211, + 212,189,190,191,133,138,136,219,220,220,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,243,237,233,135, 74, 32,135, 74, 32, + 135, 74, 32,133,131,125,170,173,173,200,201,202,189,190,191,133,138, + 136,219,220,220,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 181,183,184,133,138,136,183,184,185,133,138,136,219,220,220,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,219, + 220,220,133,138,136,133,138,136,133,138,136,133,138,136,208,209,210, + 163,164,164,133,138,136,193,196,195,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,219,220,220,133,138,136,243, + 243,243,239,240,240,237,238,238,234,236,236,182,185,186,133,138,136, + 219,220,220,133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,133,138,136,245,246,246,169,172,171,133, + 138,136,247,247,247,226,227,229,170,173,173,245,246,246,255, 0,255, + 219,220,220,133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,219,220,220,133,138,136,255, 0,255,219,220,220,133, + 138,136,250,250,250,133,138,136,255, 0,255,255, 0,255,255, 0,255, + 219,220,220,133,138,136,135,140,138,179,179,179,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,133,138,136,238, + 240,240,133,138,136,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 133,138,136,240,240,240,133,138,136,179,179,179,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,133,138,136,233,235,236,133,138,136,219, + 220,220,255, 0,255,255, 0,255,255, 0,255,255, 0,255,179,179,179, + 133,138,136,238,239,239,133,138,136,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,219,220,220,133,138,136,219,220,220,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,179,179,179, + 133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); Const - stdimg_refresh_16 : Array[0..821] of byte = ( + stdimg_menu_quit_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,197,157,126,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,225,205,189,189,144,108,174,118, 73,166,105, 57,176, - 122, 79,196,156,124,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,164,101, 52,203,167,139,255, 0,255,225,204,188,172,113, - 68,184,134, 93,206,166,132,216,182,151,219,185,153,211,172,138,195, - 149,111,169,109, 63,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 165,104, 56,185,136, 96,180,129, 88,180,128, 86,227,202,180,236,218, - 201,231,209,188,227,201,176,222,190,160,210,171,136,206,165,130,211, - 174,142,169,110, 64,255, 0,255,255, 0,255,255, 0,255,167,105, 58, - 241,228,216,212,178,149,244,233,224,243,232,221,237,220,204,210,173, - 143,179,125, 83,166,104, 56,166,105, 57,166,106, 58,169,109, 61,176, - 120, 76,197,157,125,255, 0,255,255, 0,255,166,104, 57,246,238,230, - 245,236,227,245,237,228,230,210,193,179,126, 84,185,136, 97,255, 0, - 255,255, 0,255,217,191,171,175,117, 74,182,124, 79,167,107, 59,167, - 107, 59,255, 0,255,255, 0,255,165,104, 55,246,238,230,235,215,196, - 234,217,201,164,102, 53,217,191,171,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,173,115, 70,225,196,174,200,158,124,164,101, 52,255, - 0,255,255, 0,255,165,103, 54,245,237,229,246,237,229,245,236,228, - 215,184,157,177,122, 79,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,165,103, 54,255, 0,255,255, - 0,255,166,105, 57,164,102, 53,164,102, 53,165,102, 54,165,103, 54, - 165,103, 55,189,143,108,255, 0,255,255, 0,255,255, 0,255,255, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,198,158,128,164,101, 52,175,120, 76,178,123, 82,178,123, - 82,178,124, 82,164,101, 52,255, 0,255,255, 0,255,165,103, 54,217, - 189,167,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,187,139,102,209,174,145,246,238,231,242,230,219,246,238, - 230,167,108, 61,255, 0,255,255, 0,255,164,102, 54,168,108, 61,221, - 187,162,174,118, 75,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 221,197,179,164,102, 53,233,215,199,235,216,198,245,236,227,168,109, - 62,255, 0,255,255, 0,255,170,111, 65,171,112, 65,169,109, 61,170, - 112, 66,213,184,162,255, 0,255,255, 0,255,183,134, 95,188,141,103, - 235,219,205,245,235,226,246,238,230,246,238,230,169,109, 62,255, 0, - 255,255, 0,255,202,164,135,192,145,106,197,152,114,168,107, 60,164, - 102, 53,168,108, 60,186,139,101,217,187,161,241,228,216,242,230,219, - 243,232,221,206,168,137,234,216,200,169,110, 63,255, 0,255,255, 0, - 255,255, 0,255,169,111, 65,211,173,140,220,189,157,221,190,161,229, - 203,180,233,211,191,238,221,204,240,226,213,231,210,191,178,124, 82, - 187,141,104,174,117, 73,165,104, 55,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,169,109, 63,193,146,107,211,176,143,223,194,168,222, - 193,168,212,177,147,188,140,102,170,112, 67,224,202,185,255, 0,255, - 219,194,174,164,101, 52,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,200,161,132,178,125, 83,168,108, 61,176,120, 77,190, - 145,110,225,205,189,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 212,182,159,255, 0,255); - -Const - stdimg_list_add_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,182,132, - 93,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,164,101, 52,230,206, - 183,230,206,183,164,101, 52,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,164,101, 52,230,206,183,217,173, - 134,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,164,101, 52,230,206,183,217,173,134,164,101, - 52,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,182,132, 93,164,101, 52,164,101, 52, - 164,101, 52,164,101, 52,217,173,134,217,173,134,164,101, 52,164,101, - 52,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, - 255,255,255,255,255,164,101, 52,229,204,180,219,183,149,219,182,148, - 218,180,146,218,179,144,217,173,134,216,170,131,215,168,127,215,166, - 125,224,190,159,164,101, 52,255,255,255,255,255,255,255,255,255,255, - 255,255,164,101, 52,232,211,192,231,209,187,231,209,188,230,206,183, - 230,206,183,230,206,183,230,206,183,230,205,182,230,204,181,230,204, - 182,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,182, - 132, 93,164,101, 52,164,101, 52,164,101, 52,164,101, 52,230,206,183, - 230,206,183,164,101, 52,164,101, 52,164,101, 52,164,101, 52,182,132, - 93,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,164,101, 52,230,206,183,230,206,183, - 164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,164,101, 52,230,206,183,230,206,183,164,101, 52, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,164,101, 52,230,206,183,230,206,183,164,101, 52,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,182, - 132, 93,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); + 255, 0,255,255, 0,255, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31, + 163, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31,163, 31, + 31,163, 31, 31,163, 31, 31,163,255, 0,255,255, 0,255,255, 0,255, + 33, 33,176, 6, 5,193, 0, 0,194, 0, 0,201, 0, 0,206, 0, 0, + 217, 24, 24,228, 26, 26,234, 12, 15,235, 6, 12,236, 26, 36,239, 36, + 48,241, 50, 67,251, 42, 47,189,255, 0,255,255, 0,255, 16, 16,173, + 0, 0,181, 0, 0,190, 0, 0,195,108,108,225,216,216,249,255,255, + 255,255,255,255,227,227,253,133,136,243, 24, 34,233, 31, 43,235, 45, + 60,239, 39, 46,196,255, 0,255,255, 0,255, 16, 16,170, 0, 0,181, + 1, 1,187,142,142,229,255,255,255,223,223,246,144,144,233,139,139, + 235,212,212,246,255,255,255,173,177,248, 32, 44,235, 42, 57,239, 38, + 45,195,255, 0,255,255, 0,255, 18, 18,168, 1, 1,179,105,105,214, + 255,255,255,173,173,233, 10, 10,206, 0, 0,213, 0, 0,221, 2, 2, + 224,149,151,238,255,255,255,147,153,246, 29, 43,237, 37, 44,193,255, + 0,255,255, 0,255, 23, 23,166, 23, 23,185,211,211,242,246,246,252, + 51, 51,207, 30, 30,212, 31, 31,218, 19, 19,222, 0, 0,227, 7, 10, + 227,228,228,250,235,236,254, 41, 53,238, 34, 40,192,255, 0,255,255, + 0,255, 27, 27,164, 51, 51,190,239,239,250,220,220,246, 44, 44,203, + 54, 54,212, 50, 50,217, 54, 54,223, 57, 56,230, 18, 19,230,181,182, + 247,255,255,255, 51, 60,238, 30, 35,190,255, 0,255,255, 0,255, 31, + 31,163, 58, 58,188,227,227,245,239,239,251, 67, 67,206, 61, 61,210, + 155,155,235,158,158,239, 73, 73,227, 74, 74,233,222,222,252,239,240, + 253, 30, 36,234, 28, 31,189,255, 0,255,255, 0,255, 36, 36,162, 65, + 65,188,170,170,222,255,255,255,159,159,229, 74, 74,208,238,238,251, + 244,244,253, 84, 84,224,149,149,239,255,255,255,197,197,244, 14, 16, + 231, 22, 23,187,255, 0,255,255, 0,255, 40, 40,162, 89, 89,193, 97, + 97,194,221,221,238,255,255,255,147,147,224,225,225,247,230,230,249, + 160,160,235,255,255,255,233,233,246,131,131,230, 99, 99,237, 23, 23, + 185,255, 0,255,255, 0,255, 46, 46,163,107,107,195,100,100,195,113, + 113,198,175,175,215,133,133,212,231,231,248,233,233,250,165,165,225, + 208,208,232,135,135,222,123,123,229,141,141,234, 53, 53,186,255, 0, + 255,255, 0,255, 55, 55,165,120,120,195,118,118,196,118,118,200,113, + 113,199,123,123,207,241,241,251,246,246,253,131,131,216,128,128,215, + 137,137,224,143,143,225,150,150,229, 68, 68,186,255, 0,255,255, 0, + 255, 84, 84,167,172,172,222,170,170,219,172,172,222,175,175,225,179, + 179,229,176,176,228,179,179,231,189,189,237,191,191,238,195,195,239, + 197,197,240,209,209,247,163,163,193,255, 0,255,255, 0,255,255, 0, + 255,103,103,175,100,100,172,100,100,171,101,101,172,101,101,172,101, + 101,173,102,102,173,102,102,173,102,102,173,103,103,173,104,104,173, + 104,104,175,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); Const - stdimg_edit_copy_16 : Array[0..821] of byte = ( + stdimg_menu_save_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,180,183, - 181,134,139,137,133,138,136,133,138,136,133,138,136,133,138,136,133, - 138,136,133,138,136,164,167,166,194,197,196,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,136,141,139,244,244, - 244,246,247,247,245,246,246,251,252,252,251,251,251,212,212,212,150, - 154,152,226,228,227,133,138,136,194,197,196,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,136,141,139,249,250,250,239,240, - 240,239,240,240,239,240,240,250,250,250,250,250,250,149,154,152,250, - 250,250,226,227,227,133,138,136,157,161,160,219,220,220,195,197,196, - 195,197,196,195,197,196,135,140,138,253,254,254,239,240,240,239,240, - 240,239,240,240,239,240,240,250,250,250,149,154,152,250,250,250,247, - 248,248,226,228,227,133,138,136,196,198,197,249,249,249,249,250,250, - 249,249,249,136,141,139,255,255,255,239,240,240,239,240,240,239,240, - 240,239,240,240,239,240,240,137,142,140,137,142,140,137,142,140,137, - 142,140,133,138,136,196,198,197,252,252,252,245,245,245,245,245,245, - 136,141,139,255,255,255,239,240,240,198,199,199,198,199,199,198,199, - 199,198,199,199,198,199,199,238,238,238,246,247,247,195,196,195,133, - 138,136,196,198,197,255,255,255,246,246,246,225,226,226,135,140,138, - 255,255,255,239,240,240,239,240,240,239,240,240,239,240,240,239,240, - 240,239,240,240,239,240,240,250,250,250,243,243,243,133,138,136,196, - 198,197,255,255,255,246,247,247,246,246,246,136,141,139,255,255,255, - 239,240,240,198,199,199,198,199,199,198,199,199,198,199,199,198,199, - 199,239,240,240,239,240,240,255,255,255,133,138,136,196,198,197,255, - 255,255,247,247,247,226,227,227,135,140,138,255,255,255,239,240,240, - 239,240,240,239,240,240,239,240,240,239,240,240,239,240,240,239,240, - 240,239,240,240,255,255,255,133,138,136,196,198,197,255,255,255,247, - 248,248,247,247,247,136,141,139,255,255,255,239,240,240,198,199,199, - 198,199,199,198,199,199,198,199,199,198,199,199,198,199,199,239,240, - 240,255,255,255,133,138,136,196,198,197,255,255,255,247,248,248,227, - 228,228,135,140,138,255,255,255,239,240,240,239,240,240,239,240,240, - 239,240,240,239,240,240,239,240,240,239,240,240,239,240,240,255,255, - 255,133,138,136,196,198,197,255,255,255,247,248,248,247,248,248,136, - 141,139,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,133,138, - 136,196,198,197,255,255,255,247,248,248,227,228,228,170,173,173,133, - 138,136,133,138,136,133,138,136,133,138,136,133,138,136,133,138,136, - 133,138,136,133,138,136,133,138,136,133,138,136,177,180,179,196,198, - 197,255,255,255,247,248,248,247,247,247,247,247,247,247,247,247,247, - 247,247,247,247,247,247,248,248,247,248,248,255,255,255,194,197,196, - 255,255,255,255,255,255,255,255,255,255,255,255,196,198,197,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,194,197,196,255,255,255, - 255,255,255,255,255,255,255,255,255,219,220,220,194,197,196,194,197, - 196,194,197,196,194,197,196,194,197,196,194,197,196,194,197,196,194, - 197,196,194,197,196,194,197,196,217,219,218,255,255,255,255,255,255, - 255,255,255,255,255,255); + 0, 0, 0,216,171,142,205,149,112,189,115, 66,183,104, 53,181,104, + 53,180,103, 52,178,102, 52,176,101, 51,174,100, 51,172, 99, 50,170, + 98, 50,169, 97, 50,168, 96, 49,167, 97, 50,171,105, 60,188,134, 97, + 195,125, 79,235,198,173,234,197,173,254,251,248,254,251,248,254,251, + 248,254,251,248,254,251,248,254,251,248,254,251,248,254,251,248,254, + 251,248,254,251,248,200,154,124,199,152,121,173,107, 64,186,108, 56, + 237,202,179,224,162,122,254,250,247, 98,192,136, 98,192,136, 98,192, + 136, 98,192,136, 98,192,136, 98,192,136, 98,192,136, 98,192,136,253, + 249,246,202,141,101,201,155,124,167, 97, 50,187,108, 56,238,204,182, + 225,162,122,254,250,247,191,220,194,191,220,194,191,220,194,191,220, + 194,191,220,194,191,220,194,191,220,194,191,220,194,253,249,246,205, + 144,104,204,158,129,168, 97, 50,187,107, 56,239,206,184,225,162,121, + 254,250,247, 98,192,136, 98,192,136, 98,192,136, 98,192,136, 98,192, + 136, 98,192,136, 98,192,136, 98,192,136,253,249,246,207,147,106,206, + 163,132,170, 97, 50,186,106, 54,239,208,187,226,162,122,254,251,248, + 254,251,248,254,251,248,254,251,248,254,251,248,254,251,248,254,251, + 248,254,251,248,254,251,248,254,251,248,211,150,109,210,167,138,171, + 98, 50,187,106, 54,240,210,190,226,163,122,226,163,122,225,163,122, + 226,163,123,225,163,123,224,161,120,222,159,119,221,159,118,220,157, + 116,217,155,114,216,153,113,214,153,112,213,171,142,173, 99, 51,187, + 106, 54,242,213,194,227,163,122,227,163,122,226,163,123,226,163,123, + 226,164,123,225,162,121,224,161,120,222,160,119,222,158,117,220,157, + 116,218,155,115,217,155,115,218,176,149,175,100, 51,187,106, 54,242, + 216,197,227,164,123,227,163,122,227,164,122,226,164,123,226,163,123, + 225,163,123,225,162,121,223,160,119,222,159,118,221,158,116,219,156, + 114,220,157,116,221,181,154,177,101, 52,187,107, 54,244,217,199,230, + 166,125,200,140,100,201,141,101,201,142,103,203,146,108,203,146,109, + 202,144,105,200,140,101,200,140,100,200,140,100,200,140,100,218,156, + 116,225,186,159,179,102, 52,187,108, 55,244,220,201,231,167,125,249, + 236,225,249,236,225,249,237,227,252,244,238,253,250,247,253,247,243, + 250,237,229,247,231,219,247,229,217,246,229,216,222,160,119,228,190, + 164,180,103, 52,189,110, 58,245,221,204,231,168,126,250,240,232,250, + 240,232,201,141,102,250,240,233,253,248,243,254,250,248,252,244,239, + 249,233,223,247,231,219,247,229,217,224,162,120,231,194,169,182,104, + 53,192,116, 66,246,223,208,232,168,126,252,246,241,252,246,241,200, + 140,100,250,241,233,251,244,238,253,250,247,253,249,246,250,240,232, + 248,232,221,247,230,219,225,163,122,239,213,195,183,106, 54,198,130, + 85,246,223,209,233,170,128,254,250,246,253,250,246,200,140,100,251, + 243,238,251,241,234,252,246,242,254,251,248,252,246,241,249,236,226, + 248,231,219,238,208,186,236,208,189,189,116, 67,214,165,133,246,224, + 209,247,224,209,254,251,248,254,251,247,253,249,246,252,245,240,250, + 240,234,251,242,237,253,249,246,253,250,247,251,241,235,248,233,223, + 236,209,190,205,146,106,226,197,177,225,189,166,217,171,141,201,137, + 94,192,117, 67,189,110, 58,187,108, 55,187,107, 54,187,106, 54,187, + 106, 54,188,108, 57,189,110, 59,187,109, 58,191,116, 68,201,141,101, + 231,206,188,255,255,255); Const - stdimg_hidden : Array[0..821] of byte = ( + stdimg_menu_save_all_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 15, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255, - 255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, - 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, - 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255, - 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, - 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255, - 255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,202,138, + 97,195,132, 88,211,139,104,225,143,112,220,141,108,218,139,109,215, + 138,110,205,139,108,171,109, 68,166, 95, 46,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,198,131, 85,239,206, + 186,221,255,255,135,238,199,162,244,215,162,246,215,140,238,199,224, + 255,255,221,162,133,171,106, 62,255,255,255,255,255,255,255,255,255, + 255,255,255,208,153,117,203,148,110,195,127, 81,239,182,154,234,243, + 232, 81,191,132,111,201,152,113,201,153, 84,191,132,228,244,233,221, + 156,123,170,105, 58,255,255,255,255,255,255,255,255,255,255,255,255, + 205,147,107,241,212,195,196,129, 84,234,182,151,243,243,234,237,241, + 230,239,241,230,239,240,230,237,241,229,243,245,237,213,156,121,176, + 112, 68,255,255,255,255,255,255,213,163,131,208,158,123,199,131, 88, + 238,180,153,201,139, 97,230,181,146,226,167,129,225,167,129,222,163, + 125,220,161,123,219,159,121,217,158,119,212,154,115,187,126, 87,255, + 255,255,255,255,255,210,157,121,242,216,201,201,145,106,225,190,159, + 202,141,101,234,184,153,221,165,126,221,166,128,219,163,124,217,160, + 122,217,160,121,216,159,120,216,158,120,191,132, 93,255,255,255,255, + 255,255,208,154,118,242,197,175,205,153,115,215,184,148,200,136, 93, + 239,191,161,253,252,250,254,252,251,254,253,253,254,253,252,253,251, + 250,253,252,251,221,168,133,193,127, 83,255,255,255,255,255,255,208, + 156,120,238,197,173,207,155,119,235,192,164,199,134, 91,239,192,158, + 255,255,255,204,147,110,255,255,255,255,255,255,255,251,247,255,248, + 241,228,175,140,199,138, 97,255,255,255,255,255,255,212,164,130,235, + 197,169,204,142,101,238,190,161,204,141,101,243,205,176,255,255,255, + 227,199,179,255,255,255,255,255,255,255,255,255,255,255,255,234,191, + 161,201,137, 96,255,255,255,255,255,255,213,165,134,238,199,175,202, + 140, 99,237,191,158,212,151,110,212,158,123,208,152,113,214,164,130, + 205,142,104,205,144,105,208,154,117,209,153,115,200,139, 98,238,220, + 208,255,255,255,255,255,255,212,161,127,242,205,181,210,156,121,244, + 211,186,255,255,255,231,206,189,255,255,254,255,255,255,251,246,242, + 248,241,237,237,199,173,208,152,117,255,255,255,255,255,255,255,255, + 255,255,255,255,211,160,126,242,205,179,218,165,129,212,160,126,214, + 166,131,219,176,146,211,157,123,211,158,123,211,159,123,209,154,117, + 207,154,118,240,225,214,255,255,255,255,255,255,255,255,255,255,255, + 255,215,165,134,246,216,193,255,255,255,233,211,195,255,255,255,255, + 255,255,255,255,255,255,255,255,238,205,181,212,162,130,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,221,173, + 141,221,179,151,218,174,143,223,183,156,216,166,136,216,168,137,218, + 175,146,219,175,145,212,164,131,241,227,217,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 0, 0, 0); + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); Const stdimg_menu_saveas_16 : Array[0..821] of byte = ( @@ -2674,188 +2727,239 @@ Const 231,206,188,255,255,255); Const - stdimg_link : Array[0..449] of byte = ( - 66, 77,194, 1, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 11, 0, 0, 0, 11, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 140, 1, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255, - 255,255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255, - 255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255, - 255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255, - 255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, - 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128, - 128,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, - 128,128,128,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, - 0, 0,128,128,128,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 0, 0, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128, 0, 0, 0, 0, 0, 0); - -Const - stdimg_checkboxes : Array[0..2601] of byte = ( - 66, 77, 42, 10, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 65, 0, 0, 0, 13, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 244, 9, 0, 0,196, 14, 0, 0,196, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 0,127,127,127,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,255,255,255, - 127,127,127,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,255,255,255,127,127,127,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,255,255,255,127,127,127,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,255,255,255,127,127, - 127,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, - 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, - 255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127,127, 0, - 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255, - 255,127,127,127, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0, 0,255, - 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255, - 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, - 127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,127,127,127,127,127, - 127, 52, 52, 52, 52, 52, 52,127,127,127,191,191,191,255,255,255,127, - 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, - 191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255, - 255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0,255,255,255,191,191,191,255,255,255,127,127, - 127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191, - 255,255,255,127,127,127, 0, 0, 0,127,127,127, 52, 52, 52, 52, 52, - 52, 52, 52, 52,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52,127, - 127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127,127, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255, - 255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, - 255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, - 0,127,127,127,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52,127,127,127,127,127,127,191,191,191,255,255,255, - 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, - 191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0, - 255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,127, - 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, + stdimg_radiobuttons : Array[0..2213] of byte = ( + 66, 77,166, 8, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 60, 0, 0, 0, 12, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 112, 8, 0, 0,196, 14, 0, 0,196, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255,255,255,255,255,255,191,191,191,191,191,191,191,191,191, + 191,191,191,255,255,255,255,255,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255,255,255,255,255,255,191,191,191,191,191,191,191, + 191,191,191,191,191,255,255,255,255,255,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255,255,255,255,255,255,191,191,191,191,191, + 191,191,191,191,191,191,191,255,255,255,255,255,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255,255,255,255,255,255,191,191,191, + 191,191,191,191,191,191,191,191,191,255,255,255,255,255,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255,255,255,255,255,255,191, + 191,191,191,191,191,191,191,191,191,191,191,255,255,255,255,255,255, + 255, 0,255,255, 0,255,255, 0,255,127,127,127,191,191,191,191,191, + 191,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,191, + 191,191,255,255,255,255, 0,255,255, 0,255,127,127,127,191,191,191, + 191,191,191,255,255,255,255,255,255,255,255,255,255,255,255,191,191, + 191,191,191,191,255,255,255,255, 0,255,255, 0,255,127,127,127,191, + 191,191,191,191,191,127,127,127,127,127,127,127,127,127,127,127,127, + 191,191,191,191,191,191,255,255,255,255, 0,255,255, 0,255,127,127, + 127,191,191,191,191,191,191,127,127,127,127,127,127,127,127,127,127, + 127,127,191,191,191,191,191,191,255,255,255,255, 0,255,255, 0,255, + 127,127,127,191,191,191,191,191,191,127,127,127,127,127,127,127,127, + 127,127,127,127,191,191,191,191,191,191,255,255,255,255, 0,255,255, + 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, 0, + 255,255, 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255, + 255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, + 255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127, 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, - 191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127, - 127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52,127,127,127,127,127,127, - 127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127, - 127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191, - 255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, - 255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, - 0, 0,127,127,127,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52,127,127,127,127,127,127,191,191,191,255,255, - 255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, + 191,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127, 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 191,191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255, + 191,191,191,255,255,255,255, 0,255,127,127,127, 0, 0, 0,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, - 0,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,191,191,191,255,255,255, + 255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0, + 255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255, + 255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, + 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255,127,127, + 127, 0, 0, 0,127,127,127,127,127,127,127,127,127, 0, 0, 0, 0, + 0, 0,127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, - 191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, 52, 52, 52, - 52, 52, 52, 52, 52, 52,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, - 52,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127, - 127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, + 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, + 255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191, - 191,255,255,255,127,127,127, 0, 0, 0,255,255,255, 0, 0, 0, 0, - 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, - 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, + 191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, + 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, - 0, 0, 0,127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,127,127, - 127,127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,191,191,191,255, - 255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127, + 127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, + 127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127, + 127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127, 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,191,191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255, + 127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, + 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, + 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,255,255,255,191,191,191,255,255,255,127, + 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255,255, + 255,127,127,127, 0, 0, 0,127,127,127,127,127,127, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,191,191,191, + 255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, + 191,191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, - 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255, - 255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, + 255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255, + 255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, + 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0, - 127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, - 191,191,255,255,255,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,191,191,191,255,255,255,127,127,127, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,191,191,191,255,255,255,127,127, - 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,191,191, - 255,255,255,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,191,191,191,255,255,255, 0,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,255,255,255,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,255, - 255,255,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,255,255,255,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,255,255,255,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,255,255,255, - 0); + 127,127,127,127,127,127,127,127,127, 0, 0, 0, 0, 0, 0,127,127, + 127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, + 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255,255, 0, + 255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, 0,255, + 255, 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, + 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255,255, + 255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191, + 255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, + 191,191,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, + 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, + 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, + 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255,127,127, + 127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, + 127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255, + 127,127,127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,127,127, + 127,127,127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, + 0,255,127,127,127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127, + 127,127,127,127,127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0, + 255,255, 0,255,255, 0,255,127,127,127,127,127,127, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127, + 127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127, + 127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127, + 127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127, + 127,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, + 127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,127,127,127,127,127,127,127,127,127,127,127, + 127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127,127,127,127, + 127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127,127, + 127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127, + 127,127,127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127, + 127,127,127,127,127,127,127,127,127,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255); + +Const + stdimg_refresh_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,197,157,126,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,225,205,189,189,144,108,174,118, 73,166,105, 57,176, + 122, 79,196,156,124,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,164,101, 52,203,167,139,255, 0,255,225,204,188,172,113, + 68,184,134, 93,206,166,132,216,182,151,219,185,153,211,172,138,195, + 149,111,169,109, 63,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 165,104, 56,185,136, 96,180,129, 88,180,128, 86,227,202,180,236,218, + 201,231,209,188,227,201,176,222,190,160,210,171,136,206,165,130,211, + 174,142,169,110, 64,255, 0,255,255, 0,255,255, 0,255,167,105, 58, + 241,228,216,212,178,149,244,233,224,243,232,221,237,220,204,210,173, + 143,179,125, 83,166,104, 56,166,105, 57,166,106, 58,169,109, 61,176, + 120, 76,197,157,125,255, 0,255,255, 0,255,166,104, 57,246,238,230, + 245,236,227,245,237,228,230,210,193,179,126, 84,185,136, 97,255, 0, + 255,255, 0,255,217,191,171,175,117, 74,182,124, 79,167,107, 59,167, + 107, 59,255, 0,255,255, 0,255,165,104, 55,246,238,230,235,215,196, + 234,217,201,164,102, 53,217,191,171,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,173,115, 70,225,196,174,200,158,124,164,101, 52,255, + 0,255,255, 0,255,165,103, 54,245,237,229,246,237,229,245,236,228, + 215,184,157,177,122, 79,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,165,103, 54,255, 0,255,255, + 0,255,166,105, 57,164,102, 53,164,102, 53,165,102, 54,165,103, 54, + 165,103, 55,189,143,108,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,198,158,128,164,101, 52,175,120, 76,178,123, 82,178,123, + 82,178,124, 82,164,101, 52,255, 0,255,255, 0,255,165,103, 54,217, + 189,167,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,187,139,102,209,174,145,246,238,231,242,230,219,246,238, + 230,167,108, 61,255, 0,255,255, 0,255,164,102, 54,168,108, 61,221, + 187,162,174,118, 75,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 221,197,179,164,102, 53,233,215,199,235,216,198,245,236,227,168,109, + 62,255, 0,255,255, 0,255,170,111, 65,171,112, 65,169,109, 61,170, + 112, 66,213,184,162,255, 0,255,255, 0,255,183,134, 95,188,141,103, + 235,219,205,245,235,226,246,238,230,246,238,230,169,109, 62,255, 0, + 255,255, 0,255,202,164,135,192,145,106,197,152,114,168,107, 60,164, + 102, 53,168,108, 60,186,139,101,217,187,161,241,228,216,242,230,219, + 243,232,221,206,168,137,234,216,200,169,110, 63,255, 0,255,255, 0, + 255,255, 0,255,169,111, 65,211,173,140,220,189,157,221,190,161,229, + 203,180,233,211,191,238,221,204,240,226,213,231,210,191,178,124, 82, + 187,141,104,174,117, 73,165,104, 55,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,169,109, 63,193,146,107,211,176,143,223,194,168,222, + 193,168,212,177,147,188,140,102,170,112, 67,224,202,185,255, 0,255, + 219,194,174,164,101, 52,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,200,161,132,178,125, 83,168,108, 61,176,120, 77,190, + 145,110,225,205,189,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 212,182,159,255, 0,255); + +Const + stdimg_search_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,100,148,186, 34, + 103,157,129,168,198,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,111,156,194, 85,141,188,137,181,221, 24, + 95,151,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,123,164,202,100,151,197,157,193,228,102,153,199, 49,113,165,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,233,207,186, + 219,178,146,211,166,128,208,161,124,210,166,133,174,161,153,117,162, + 204,171,203,232,118,164,206, 64,123,175,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,232,202,176,232,201,174,245,225,205, + 247,229,211,247,229,209,243,221,200,223,186,156,199,168,145,134,174, + 213, 80,135,187,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,241,219,200,237,208,183,248,232,217,245,222,200,243,216,189, + 243,214,187,244,219,194,247,228,210,223,187,157,160,151,149,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,238, + 206,178,247,231,215,246,225,204,244,219,194,244,218,192,243,216,189, + 243,215,187,244,219,194,243,222,201,210,168,135,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,240,206,175,249, + 236,223,245,223,200,245,221,198,244,220,195,244,218,193,243,217,190, + 243,215,189,248,230,211,211,166,128,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,244,211,181,249,237,225,246, + 225,204,245,223,201,245,222,199,244,220,196,244,219,194,244,218,192, + 248,231,214,215,171,135,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,248,219,193,249,235,222,247,231,214,246, + 225,204,245,224,202,245,222,200,245,221,197,246,225,203,245,226,208, + 223,185,153,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,252,234,216,248,226,204,250,238,227,247,231,214,246, + 226,206,246,225,203,246,227,208,249,234,221,236,207,181,236,212,191, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,251,228,206,249,226,205,250,236,222,249,238,226,249, + 237,226,248,233,218,240,213,189,237,208,183,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,252,234,217,250,221,194,246,214,185,244,211,181,243, + 212,184,245,224,205,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); -- cgit v1.2.3-70-g09d2 From 67333e74574e11dded859fed169cbd27b1943c0b Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sat, 4 Sep 2010 17:09:20 +0200 Subject: New string utility function fpgTrimR() which trims text on right only. --- src/corelib/fpg_stringutils.pas | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_stringutils.pas b/src/corelib/fpg_stringutils.pas index f97f1b61..3e54e02b 100644 --- a/src/corelib/fpg_stringutils.pas +++ b/src/corelib/fpg_stringutils.pas @@ -48,6 +48,8 @@ procedure Insert8(const Source: string; var S: string; Index: integer); function fpgCharAt(const s: TfpgString; Index: integer): TfpgChar; function fpgAppendPathDelim(const Path: TfpgString): TfpgString; function fpgRemovePathDelim(const Path: TfpgString): TfpgString; +function fpgTrimR(const AString, ATrim: TfpgString; ACaseSensitive: boolean = false): TfpgString; + implementation @@ -335,5 +337,21 @@ begin Result := Path; end; +function fpgTrimR(const AString, ATrim: TfpgString; ACaseSensitive: boolean): TfpgString; +var + li: integer; +begin + if ACaseSensitive then + li := UTF8Pos(ATrim, AString) + else + li := UTF8Pos(UpperCase(ATrim), UpperCase(AString)); + + if li <> 0 then + Result := UTF8Copy(AString, 1, li - 1) + else + Result := AString; +end; + + end. -- cgit v1.2.3-70-g09d2 From 363c7a1b5559b1108460ac997589169feaa2689e Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sat, 4 Sep 2010 17:12:45 +0200 Subject: Speed up grid scrolling with mouse wheel x3 --- src/gui/fpg_basegrid.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_basegrid.pas b/src/gui/fpg_basegrid.pas index 9a29e004..051d1adb 100644 --- a/src/gui/fpg_basegrid.pas +++ b/src/gui/fpg_basegrid.pas @@ -931,10 +931,10 @@ begin lCol := FFirstCol; if delta > 0 then // scroll down - inc(FFirstRow, abs(delta)) + inc(FFirstRow, abs(delta)*3) else // scroll up if FFirstRow > 0 then - dec(FFirstRow, abs(delta)); + dec(FFirstRow, abs(delta)*3); // apply limits if FFirstRow > RowCount - VisibleLines then -- cgit v1.2.3-70-g09d2 From 81eaad1981cf3949aeaa551ec6e5df60b1dce68a Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sat, 4 Sep 2010 17:14:02 +0200 Subject: fpg_utils: Added two new RTL wrapper functions. --- src/corelib/fpg_utils.pas | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_utils.pas b/src/corelib/fpg_utils.pas index 7c7869b4..78848e40 100644 --- a/src/corelib/fpg_utils.pas +++ b/src/corelib/fpg_utils.pas @@ -62,6 +62,8 @@ function fpgExtractFileName(const FileName: TfpgString): TfpgString; function fpgExtractFileExt(const FileName: TfpgString): TfpgString; function fpgForceDirectories(const ADirectory: TfpgString): Boolean; function fpgChangeFileExt(const FileName, Extension: TfpgString): TfpgString; +function fpgGetAppConfigDir(const Global: Boolean): TfpgString; +function fpgGetAppConfigFile(const Global: Boolean; const SubDir: Boolean): TfpgString; implementation @@ -160,6 +162,16 @@ begin Result := ChangeFileExt(fpgToOSEncoding(Filename), Extension); end; +function fpgGetAppConfigDir(const Global: Boolean): TfpgString; +begin + Result := fpgFromOSEncoding(GetAppConfigDir(Global)); +end; + +function fpgGetAppConfigFile(const Global: Boolean; const SubDir: Boolean): TfpgString; +begin + Result := fpgFromOSEncoding(GetAppConfigFile(Global, SubDir)); +end; + function fpgAppendPathDelim(const Path: TfpgString): TfpgString; begin if (Path <> '') and (Path[length(Path)] <> PathDelim) then -- cgit v1.2.3-70-g09d2 From d2a915623045a7e61dee64af59f2548b74305502 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sat, 4 Sep 2010 17:15:21 +0200 Subject: fpg_utils: Added a new function that returns a config directory for fpGUI framework itself. This will be used by the File Dialog and Font Select dialog. --- src/corelib/fpg_utils.pas | 6 ++++++ src/corelib/gdi/fpg_utils_impl.inc | 2 +- src/corelib/x11/fpg_utils_impl.inc | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_utils.pas b/src/corelib/fpg_utils.pas index 78848e40..8e866922 100644 --- a/src/corelib/fpg_utils.pas +++ b/src/corelib/fpg_utils.pas @@ -41,6 +41,7 @@ function fpgAppendPathDelim(const Path: TfpgString): TfpgString; function fpgHasSubDirs(const Dir: TfpgString; AShowHidden: Boolean): Boolean; function fpgAllFilesMask: TfpgString; function fpgConvertLineEndings(const s: TfpgString): TfpgString; +function fpgGetToolkitConfigDir: TfpgString; { This is so that when we support LTR and RTL languages, the colon will be added at the correct place. } function fpgAddColon(const AText: TfpgString): TfpgString; @@ -249,6 +250,11 @@ begin Inc(i); end; +function fpgGetToolkitConfigDir: TfpgString; +begin + Result := fpgTrimR(fpgGetAppConfigDir(False), ApplicationName, True) + FPG_CONFIG_DIR; +end; + function fpgAddColon(const AText: TfpgString): TfpgString; begin { TODO : Check language direction and add colon at appropriate end. This is very crude! } diff --git a/src/corelib/gdi/fpg_utils_impl.inc b/src/corelib/gdi/fpg_utils_impl.inc index e5125312..ab4761ae 100644 --- a/src/corelib/gdi/fpg_utils_impl.inc +++ b/src/corelib/gdi/fpg_utils_impl.inc @@ -1,7 +1,7 @@ {%mainunit fpg_utils.pas} uses - Shellapi, Windows; + Shellapi, Windows, fpg_constants, fpg_stringutils; // GDI specific implementations of encoding functions diff --git a/src/corelib/x11/fpg_utils_impl.inc b/src/corelib/x11/fpg_utils_impl.inc index 908f411a..753b0ea1 100644 --- a/src/corelib/x11/fpg_utils_impl.inc +++ b/src/corelib/x11/fpg_utils_impl.inc @@ -1,7 +1,7 @@ {%mainunit fpg_utils.pas} uses - Unix, BaseUnix; + Unix, BaseUnix, fpg_constants, fpg_stringutils; // X11 specific filesystem implementations of encoding functions -- cgit v1.2.3-70-g09d2 From 8c06fbf0ea0000f232a89fc3363b0e1ab1aa26fa Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sat, 4 Sep 2010 18:24:44 +0200 Subject: file dialog: Added 'Home' and 'Bookmarks' support. --- src/gui/fpg_dialogs.pas | 130 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 122 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_dialogs.pas b/src/gui/fpg_dialogs.pas index f96d7a44..9e98afbc 100644 --- a/src/gui/fpg_dialogs.pas +++ b/src/gui/fpg_dialogs.pas @@ -50,7 +50,9 @@ uses fpg_tree, fpg_ColorWheel, fpg_spinedit, - fpg_tab; + fpg_tab, + fpg_menu, + fpg_iniutils; type TfpgMsgDlgType = (mtAbout, mtWarning, mtError, mtInformation, mtConfirmation, @@ -153,6 +155,8 @@ type btnUpDir: TfpgButton; btnDirNew: TfpgButton; btnShowHidden: TfpgButton; + btnGoHome: TfpgButton; + btnBookmark: TfpgButton; pnlFileInfo: TfpgPanel; edFilename: TfpgEdit; chlFilter: TfpgComboBox; @@ -162,6 +166,8 @@ type FFilterList: TStringList; FFilter: string; FInitialDir: string; + FBookmarkMenu: TfpgPopupMenu; + FIni: TfpgIniFile; procedure SetFilter(const Value: string); function GetFontDesc: string; function GetShowHidden: boolean; @@ -177,9 +183,13 @@ type procedure DirChange(Sender: TObject); procedure UpDirClick(Sender: TObject); procedure btnDirNewClicked(Sender: TObject); + procedure btnGoHomeClicked(Sender: TObject); + procedure btnBookmarkClicked(Sender: TObject); procedure edFilenameChanged(Sender: TObject); procedure UpdateButtonState; function HighlightFile(const AFilename: string): boolean; + function CreatePopupMenu: TfpgPopupMenu; + procedure BookmarkItemClicked(Sender: TObject); protected procedure HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); override; procedure btnOKClick(Sender: TObject); override; @@ -1018,7 +1028,7 @@ begin chlDir := TfpgComboBox.Create(self); with chlDir do begin - SetPosition(8, 12, 526, 22); + SetPosition(8, 12, 484, 24); Anchors := [anLeft, anRight, anTop]; FontDesc := '#List'; OnChange := @DirChange; @@ -1036,44 +1046,75 @@ begin btnUpDir := TfpgButton.Create(self); with btnUpDir do begin - SetPosition(540, 11, 26, 24); + SetPosition(500, 11, 24, 24); Anchors := [anRight, anTop]; Text := ''; FontDesc := '#Label1'; ImageName := 'stdimg.folderup'; // Do NOT localize - ModalResult := mrNone; Focusable := False; + ImageSpacing := 0; + ImageMargin := -1; OnClick := @UpDirClick; end; btnDirNew := TfpgButton.Create(self); with btnDirNew do begin - SetPosition(572, 11, 26, 24); + SetPosition(526, 11, 24, 24); Anchors := [anRight, anTop]; Text := ''; FontDesc := '#Label1'; ImageName := 'stdimg.foldernew'; // Do NOT localize - ModalResult := mrNone; Focusable := False; + ImageSpacing := 0; + ImageMargin := -1; OnClick := @btnDirNewClicked; end; btnShowHidden := TfpgButton.Create(self); with btnShowHidden do begin - SetPosition(604, 11, 26, 24); + SetPosition(552, 11, 24, 24); Anchors := [anRight, anTop]; Text := ''; FontDesc := '#Label1'; ImageName := 'stdimg.hidden'; // Do NOT localize - ModalResult := mrNone; Focusable := False; GroupIndex := 1; AllowAllUp := True; + ImageSpacing := 0; + ImageMargin := -1; OnClick := @DirChange; end; + btnGoHome := TfpgButton.Create(self); + with btnGoHome do + begin + SetPosition(578, 11, 24, 24); + Anchors := [anRight, anTop]; + Text := ''; + FontDesc := '#Label1'; + ImageName := 'stdimg.folderhome'; // Do NOT localize + Focusable := False; + ImageSpacing := 0; + ImageMargin := -1; + OnClick := @btnGoHomeClicked; + end; + + btnBookmark := TfpgButton.Create(self); + with btnBookmark do + begin + SetPosition(604, 11, 24, 24); + Anchors := [anRight, anTop]; + Text := ''; + FontDesc := '#Label1'; + ImageName := 'stdimg.bookmark'; // Do NOT localize + Focusable := False; + ImageSpacing := 0; + ImageMargin := -1; + OnClick := @btnBookmarkClicked; + end; + { Create lower Panel details } pnlFileInfo := TfpgPanel.Create(self); @@ -1212,6 +1253,8 @@ end; destructor TfpgFileDialog.Destroy; begin + FIni.Free; + FBookmarkMenu.Free; FFilterList.Free; inherited Destroy; end; @@ -1254,8 +1297,23 @@ begin end; end; +procedure TfpgFileDialog.btnGoHomeClicked(Sender: TObject); +begin + SetCurrentDirectory(GetUserDir); +end; + +procedure TfpgFileDialog.btnBookmarkClicked(Sender: TObject); +var + pm: TfpgPopupMenu; +begin + FBookmarkMenu.Free; + FBookmarkMenu := CreatePopupMenu; + FBookmarkMenu.ShowAt(self, btnBookmark.Left, btnBookmark.Bottom); +end; + procedure TfpgFileDialog.edFilenameChanged(Sender: TObject); begin + writeln('TfpgFileDialog.edFilenameChanged '); UpdateButtonState; end; @@ -1301,6 +1359,9 @@ begin grid.Update; grid.SetFocus; + + if FOpenMode then // when saving file, we want to keep file name + edFilename.Clear; end; function TfpgFileDialog.HighlightFile(const AFilename: string): boolean; @@ -1319,6 +1380,59 @@ begin Result := False; end; +function TfpgFileDialog.CreatePopupMenu: TfpgPopupMenu; +var + i: integer; + s: TfpgString; + lst: TStringList; + mi: TfpgMenuItem; +begin + Result := TfpgPopupMenu.Create(nil); + with Result do + begin + lst := TStringList.Create; + if not Assigned(FIni) then + FIni := TfpgINIFile.CreateExt(fpgGetToolkitConfigDir + FPG_BOOKMARKS_FILE); + FIni.ReadSection(FPG_BOOKMARK_SECTION, lst); + // add previous bookmarks to menu + for i := 0 to lst.Count-1 do + begin + mi := AddMenuItem(lst[i], '', @BookmarkItemClicked); + end; + // Now add static items + if lst.Count > 0 then + AddMenuItem('-', '', nil); + mi := AddMenuItem('Add current directory', '', @BookmarkItemClicked); + mi.Tag := 1; + mi := AddMenuItem('Configure...', '', @BookmarkItemClicked); + mi.Tag := 2; + end; +end; + +procedure TfpgFileDialog.BookmarkItemClicked(Sender: TObject); +var + mi: TfpgMenuItem; + s: TfpgString; +begin + if Sender is TfpgMenuItem then + mi := TfpgMenuItem(Sender); + if mi = nil then + Exit; + if mi.Tag = 1 then // Add current directory + begin + FIni.WriteString(FPG_BOOKMARK_SECTION, grid.FileList.DirectoryName, grid.FileList.DirectoryName); + end + else if mi.Tag = 2 then // configure bookmarks + begin + // + end + else + begin // bookmark has been clicked + s := FIni.ReadString(FPG_BOOKMARK_SECTION, mi.Text, '.'); + SetCurrentDirectory(s); + end; +end; + procedure TfpgFileDialog.ProcessFilterString; var p: integer; -- cgit v1.2.3-70-g09d2 From 38220cdf935f3a2714bd837727d6ed73f4e9071c Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sat, 4 Sep 2010 18:37:57 +0200 Subject: fixed minor memory leak in File Dialog. --- src/gui/fpg_dialogs.pas | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_dialogs.pas b/src/gui/fpg_dialogs.pas index 9e98afbc..1db58f60 100644 --- a/src/gui/fpg_dialogs.pas +++ b/src/gui/fpg_dialogs.pas @@ -1303,17 +1303,15 @@ begin end; procedure TfpgFileDialog.btnBookmarkClicked(Sender: TObject); -var - pm: TfpgPopupMenu; begin - FBookmarkMenu.Free; + if Assigned(FBookmarkMenu) then + FBookmarkMenu.Free; FBookmarkMenu := CreatePopupMenu; FBookmarkMenu.ShowAt(self, btnBookmark.Left, btnBookmark.Bottom); end; procedure TfpgFileDialog.edFilenameChanged(Sender: TObject); begin - writeln('TfpgFileDialog.edFilenameChanged '); UpdateButtonState; end; @@ -1391,17 +1389,21 @@ begin with Result do begin lst := TStringList.Create; - if not Assigned(FIni) then - FIni := TfpgINIFile.CreateExt(fpgGetToolkitConfigDir + FPG_BOOKMARKS_FILE); - FIni.ReadSection(FPG_BOOKMARK_SECTION, lst); - // add previous bookmarks to menu - for i := 0 to lst.Count-1 do - begin - mi := AddMenuItem(lst[i], '', @BookmarkItemClicked); + try + if not Assigned(FIni) then + FIni := TfpgINIFile.CreateExt(fpgGetToolkitConfigDir + FPG_BOOKMARKS_FILE); + FIni.ReadSection(FPG_BOOKMARK_SECTION, lst); + // add previous bookmarks to menu + for i := 0 to lst.Count-1 do + begin + mi := AddMenuItem(lst[i], '', @BookmarkItemClicked); + end; + // Now add static items + if lst.Count > 0 then + AddMenuItem('-', '', nil); + finally + lst.Free; end; - // Now add static items - if lst.Count > 0 then - AddMenuItem('-', '', nil); mi := AddMenuItem('Add current directory', '', @BookmarkItemClicked); mi.Tag := 1; mi := AddMenuItem('Configure...', '', @BookmarkItemClicked); -- cgit v1.2.3-70-g09d2 From 7081bd88786b67e3762503f624638ea19797d12b Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 5 Sep 2010 12:38:15 +0200 Subject: Message Dialog: reworked dialog to be maintained by Visual Forms Designer. --- src/gui/fpg_dialogs.pas | 80 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 52 insertions(+), 28 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_dialogs.pas b/src/gui/fpg_dialogs.pas index 1db58f60..1415ff01 100644 --- a/src/gui/fpg_dialogs.pas +++ b/src/gui/fpg_dialogs.pas @@ -81,20 +81,22 @@ type TfpgMessageBox = class(TfpgForm) private + {@VFD_HEAD_BEGIN: MessageBox} + FButton: TfpgButton; + {@VFD_HEAD_END: MessageBox} FLines: TStringList; FFont: TfpgFont; FTextY: integer; FLineHeight: integer; FMaxLineWidth: integer; - FButton: TfpgButton; FCentreText: Boolean; - protected - procedure HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); override; - procedure HandlePaint; override; - procedure HandleShow; override; + procedure FormPaint(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure FormKeyPressed(Sender: TObject; var KeyCode: word; var ShiftState: TShiftState; var Consumed: boolean); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; + procedure AfterCreate; override; procedure SetMessage(AMessage: string); property CentreText: Boolean read FCentreText write FCentreText default False; end; @@ -413,21 +415,11 @@ end; { TfpgMessageBox } -procedure TfpgMessageBox.HandleKeyPress(var keycode: word; - var shiftstate: TShiftState; var consumed: boolean); -begin - inherited HandleKeyPress(keycode, shiftstate, consumed); - if keycode = keyEscape then - Close; -end; - -procedure TfpgMessageBox.HandlePaint; +procedure TfpgMessageBox.FormPaint(Sender: TObject); var n, y: integer; tw: integer; begin - inherited HandlePaint; - Canvas.SetFont(FFont); y := FTextY; for n := 0 to FLines.Count-1 do @@ -441,30 +433,30 @@ begin end; end; -procedure TfpgMessageBox.HandleShow; +procedure TfpgMessageBox.FormShow(Sender: TObject); +begin + FButton.Text := cMsgDlgBtnText[mbOK] +end; + +procedure TfpgMessageBox.FormKeyPressed(Sender: TObject; var KeyCode: word; + var ShiftState: TShiftState; var Consumed: boolean); begin - inherited HandleShow; - FButton.SetFocus; + if KeyCode = keyEscape then + begin + Consumed := False; + Close; + end; end; constructor TfpgMessageBox.Create(AOwner: TComponent); begin inherited Create(AOwner); - WindowPosition := wpOneThirdDown; - Sizeable := False; - FLines := TStringList.Create; FFont := fpgGetFont('#Label1'); FTextY := 10; FLineHeight := FFont.Height + 4; - MinWidth := 200; FMaxLineWidth := 500; FCentreText := False; - - FButton := TfpgButton.Create(self); - FButton.Text := cMsgDlgBtnText[mbOK]; - FButton.Width := 75; - FButton.ModalResult := mrOK; end; destructor TfpgMessageBox.Destroy; @@ -474,6 +466,38 @@ begin inherited Destroy; end; +procedure TfpgMessageBox.AfterCreate; +begin + inherited AfterCreate; + {@VFD_BODY_BEGIN: MessageBox} + Name := 'MessageBox'; + SetPosition(330, 199, 419, 138); + WindowTitle := 'Message'; + Hint := ''; + WindowPosition := wpOneThirdDown; + MinWidth := 200; + Sizeable := False; + OnShow := @FormShow; + OnPaint := @FormPaint; + OnKeyPress := @FormKeyPressed; + + FButton := TfpgButton.Create(self); + with FButton do + begin + Name := 'FButton'; + SetPosition(8, 8, 75, 23); + Text := 'OK'; + FontDesc := '#Label1'; + Hint := ''; + ImageName := ''; + ModalResult := mrOK; + TabOrder := 1; + OnKeyPress := @FormKeyPressed; + end; + + {@VFD_BODY_END: MessageBox} +end; + procedure TfpgMessageBox.SetMessage(AMessage: string); var outw: integer; -- cgit v1.2.3-70-g09d2 From 9a12e8cfcea6a0f0c1456133f602a358911ae9db Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 5 Sep 2010 16:57:03 +0200 Subject: file dialog: adds a Configure Bookmarks dialog and updated resource strings. --- src/corelib/lang_af.inc | 12 +- src/corelib/lang_de.inc | 6 + src/corelib/lang_en.inc | 6 + src/corelib/lang_es.inc | 6 + src/corelib/lang_fr.inc | 10 +- src/corelib/lang_it.inc | 6 + src/corelib/lang_pt.inc | 6 + src/corelib/lang_ru.inc | 6 + src/gui/fpg_dialogs.pas | 22 +++- src/gui/managebookmarksdialog.inc | 225 ++++++++++++++++++++++++++++++++++++++ 10 files changed, 296 insertions(+), 9 deletions(-) create mode 100644 src/gui/managebookmarksdialog.inc (limited to 'src') diff --git a/src/corelib/lang_af.inc b/src/corelib/lang_af.inc index 70598111..6dad1634 100644 --- a/src/corelib/lang_af.inc +++ b/src/corelib/lang_af.inc @@ -7,6 +7,7 @@ rserrnotassigned = '<%s> is nie toegewys nie'; rsnewitemdetected = '''n Nuwe item is opgespoor.'; rsabort = 'Staak'; rsabout = 'Aangaande %s'; +rsaddcurrentdirectory = 'Add current directory'; rsall = 'Alles'; rsallfiles = 'Alle Lêers'; rscollectionallfonts = 'Alle Lettertipes'; @@ -20,9 +21,11 @@ rsbold = 'Vetdruk'; rscancel = 'Kanselleer'; rscannotcreatedir = 'Kan nie die lêergids skep nie'; rschange = 'Verander'; -rscharactermap = 'Character Map'; +rschangetitle = 'Change Title'; +rscharactermap = 'Karakter Kaart'; rsclose = 'Sluit'; rscollection = 'Versameling'; +rsconfigurebookmarks = 'Configure Bookmarks'; rsconfirm = 'Bevestig'; rsconfirmation = 'Bevestiging'; rscopy = 'Kopieer'; @@ -36,6 +39,7 @@ rsshortdec = 'Des'; rslongdec = 'Desember'; rsdelete = 'Skrap'; rsdirectories = 'Lêergidse'; +rsdirectory = 'Directory'; rsdrive = 'Dryf'; rsedit = 'Redigeer'; rslanguage = 'Afrikaans'; @@ -61,7 +65,7 @@ rshelp = 'Help'; rsignore = 'Ignoreer'; rsinformation = 'Informasie'; rsinsert = 'Invoeg'; -rsinsertfromcharactermap = 'Insert from Character Map'; +rsinsertfromcharactermap = 'Voeg in van Karakter Kaart'; rsitalic = 'Kursief'; rserritemofwrongtype = 'Die item is nie van <%s> tiepe nie!'; rsshortjan = 'Jan'; @@ -79,6 +83,8 @@ rsmessage = 'Boodskap'; rsfilemodifiedtime = 'Wysigings Tyd'; rsshortmon = 'Ma'; rslongmon = 'Maandag'; +rsmovedown = 'Move Down'; +rsmoveup = 'Move Up'; rsname = 'Naam'; rsno = 'Nee'; rsnotoall = 'Nee vir Alles'; @@ -113,7 +119,7 @@ rssize = 'Groote'; rsstyle = 'Steil'; rsshortsun = 'So'; rslongsun = 'Sondag'; -rstexttoinsert = 'Text to Insert'; +rstexttoinsert = 'Teks om in te voeg'; rsshortthu = 'Do'; rslongthu = 'Donderdag'; rstoday = 'Vandag'; diff --git a/src/corelib/lang_de.inc b/src/corelib/lang_de.inc index f3f45489..c47c4280 100644 --- a/src/corelib/lang_de.inc +++ b/src/corelib/lang_de.inc @@ -7,6 +7,7 @@ rserrnotassigned = '<%s> nicht zugewiesen'; rsnewitemdetected = 'Es wurde ein neuer Eintrag gefunden.'; rsabort = 'Abbrechen'; rsabout = 'Über %s'; +rsaddcurrentdirectory = 'Add current directory'; rsall = 'Alle'; rsallfiles = 'Alle Dateien'; rscollectionallfonts = 'Alle Schriften'; @@ -20,9 +21,11 @@ rsbold = 'Fett'; rscancel = 'Abbrechen'; rscannotcreatedir = 'Kann Verzeichnis nicht anlegen'; rschange = 'Ändern'; +rschangetitle = 'Change Title'; rscharactermap = 'Character Map'; rsclose = 'Schließen'; rscollection = 'Sammlung'; +rsconfigurebookmarks = 'Configure Bookmarks'; rsconfirm = 'Bestätigen'; rsconfirmation = 'Bestätigung'; rscopy = 'Kopieren'; @@ -36,6 +39,7 @@ rsshortdec = 'Dez'; rslongdec = 'Dezember'; rsdelete = 'Löschen'; rsdirectories = 'Verzeichnisse'; +rsdirectory = 'Directory'; rsdrive = 'Laufwerk'; rsedit = 'Bearbeiten'; rslanguage = 'Englisch'; @@ -79,6 +83,8 @@ rsmessage = 'Meldung'; rsfilemodifiedtime = 'Änderungszeit'; rsshortmon = 'Mon'; rslongmon = 'Montag'; +rsmovedown = 'Move Down'; +rsmoveup = 'Move Up'; rsname = 'Name'; rsno = 'Nein'; rsnotoall = 'Nein zu allem'; diff --git a/src/corelib/lang_en.inc b/src/corelib/lang_en.inc index a7db8859..881c23e5 100644 --- a/src/corelib/lang_en.inc +++ b/src/corelib/lang_en.inc @@ -7,6 +7,7 @@ rserrnotassigned = '<%s> not assigned'; rsnewitemdetected = 'A new item has been detected.'; rsabort = 'Abort'; rsabout = 'About %s'; +rsaddcurrentdirectory = 'Add current directory'; rsall = 'All'; rsallfiles = 'All Files'; rscollectionallfonts = 'All Fonts'; @@ -20,9 +21,11 @@ rsbold = 'Bold'; rscancel = 'Cancel'; rscannotcreatedir = 'Cannot create directory'; rschange = 'Change'; +rschangetitle = 'Change Title'; rscharactermap = 'Character Map'; rsclose = 'Close'; rscollection = 'Collection'; +rsconfigurebookmarks = 'Configure Bookmarks'; rsconfirm = 'Confirm'; rsconfirmation = 'Confirmation'; rscopy = 'Copy'; @@ -36,6 +39,7 @@ rsshortdec = 'Dec'; rslongdec = 'December'; rsdelete = 'Delete'; rsdirectories = 'Directories'; +rsdirectory = 'Directory'; rsdrive = 'Drive'; rsedit = 'Edit'; rslanguage = 'English'; @@ -79,6 +83,8 @@ rsmessage = 'Message'; rsfilemodifiedtime = 'Mod. Time'; rsshortmon = 'Mon'; rslongmon = 'Monday'; +rsmovedown = 'Move Down'; +rsmoveup = 'Move Up'; rsname = 'Name'; rsno = 'No'; rsnotoall = 'No to All'; diff --git a/src/corelib/lang_es.inc b/src/corelib/lang_es.inc index 099f1939..8e3979b0 100644 --- a/src/corelib/lang_es.inc +++ b/src/corelib/lang_es.inc @@ -7,6 +7,7 @@ rserrnotassigned = '<%s> no está asignado'; rsnewitemdetected = 'A new item has been detected.'; rsabort = 'Abortar'; rsabout = 'Acerca de %s'; +rsaddcurrentdirectory = 'Add current directory'; rsall = 'Todos'; rsallfiles = 'Todos los Archivos'; rscollectionallfonts = 'Todas las Fuentes'; @@ -20,9 +21,11 @@ rsbold = 'Negrita'; rscancel = 'Cancelar'; rscannotcreatedir = 'No se puede crear la carpeta'; rschange = 'Cambiar'; +rschangetitle = 'Change Title'; rscharactermap = 'Character Map'; rsclose = 'Cerrar'; rscollection = 'Colección'; +rsconfigurebookmarks = 'Configure Bookmarks'; rsconfirm = 'Confirmar'; rsconfirmation = 'Confirmación'; rscopy = 'Copiar'; @@ -36,6 +39,7 @@ rsshortdec = 'Dec'; rslongdec = 'December'; rsdelete = 'Borrar'; rsdirectories = 'Carpetas'; +rsdirectory = 'Directory'; rsdrive = 'Unidad'; rsedit = 'Editar'; rslanguage = 'Español'; @@ -79,6 +83,8 @@ rsmessage = 'Mensaje'; rsfilemodifiedtime = 'Hora de Modif.'; rsshortmon = 'Lun'; rslongmon = 'Lunes'; +rsmovedown = 'Move Down'; +rsmoveup = 'Move Up'; rsname = 'Nombre'; rsno = 'No'; rsnotoall = 'No a Todo'; diff --git a/src/corelib/lang_fr.inc b/src/corelib/lang_fr.inc index b75ee215..606e333b 100644 --- a/src/corelib/lang_fr.inc +++ b/src/corelib/lang_fr.inc @@ -7,6 +7,7 @@ rserrnotassigned = '<%s> n''''est pas assigné'; rsnewitemdetected = 'Un nouvel item a été détecté'; rsabort = 'Arrêter'; rsabout = 'A propos de %s'; +rsaddcurrentdirectory = 'Add current directory'; rsall = 'Tous'; rsallfiles = 'Tous les fichiers'; rscollectionallfonts = 'Toutes les polices'; @@ -20,9 +21,11 @@ rsbold = 'Gras'; rscancel = 'Annuler'; rscannotcreatedir = 'Impossible de créer le répertoire'; rschange = 'Modifier'; -rscharactermap = 'Character Map'; +rschangetitle = 'Change Title'; +rscharactermap = 'Table de caractères'; rsclose = 'Fermer'; rscollection = 'Collection'; +rsconfigurebookmarks = 'Configure Bookmarks'; rsconfirm = 'Confirmer'; rsconfirmation = 'Confirmation'; rscopy = 'Copier'; @@ -36,6 +39,7 @@ rsshortdec = 'Déc'; rslongdec = 'Décembre'; rsdelete = 'Supprimer'; rsdirectories = 'Répertoires'; +rsdirectory = 'Directory'; rsdrive = 'Disque'; rsedit = 'Editer'; rslanguage = 'Français'; @@ -79,6 +83,8 @@ rsmessage = 'Message'; rsfilemodifiedtime = 'Date modif.'; rsshortmon = 'Lun'; rslongmon = 'Lundi'; +rsmovedown = 'Move Down'; +rsmoveup = 'Move Up'; rsname = 'Nom'; rsno = 'Non'; rsnotoall = 'Non à tous'; @@ -113,7 +119,7 @@ rssize = 'Taille'; rsstyle = 'Style'; rsshortsun = 'Dim'; rslongsun = 'Dimanche'; -rstexttoinsert = 'Text to Insert'; +rstexttoinsert = 'Texte à insérer'; rsshortthu = 'Jeu'; rslongthu = 'Jeudi'; rstoday = 'Aujourd''''hui'; diff --git a/src/corelib/lang_it.inc b/src/corelib/lang_it.inc index ece9f08f..2d056311 100644 --- a/src/corelib/lang_it.inc +++ b/src/corelib/lang_it.inc @@ -7,6 +7,7 @@ rserrnotassigned = '<%s> non assegnato'; rsnewitemdetected = 'E'''' stato rilevato un nuovo elemento.'; rsabort = 'Interrompi'; rsabout = 'Informazioni %s'; +rsaddcurrentdirectory = 'Add current directory'; rsall = 'Tutto'; rsallfiles = 'Tutti i Files'; rscollectionallfonts = 'Tutti i Fonts'; @@ -20,9 +21,11 @@ rsbold = 'Grassetto'; rscancel = 'Annulla'; rscannotcreatedir = 'Non riesco a creare la cartella'; rschange = 'Cambia'; +rschangetitle = 'Change Title'; rscharactermap = 'Character Map'; rsclose = 'Chiudi'; rscollection = 'Collezione'; +rsconfigurebookmarks = 'Configure Bookmarks'; rsconfirm = 'Conferma'; rsconfirmation = 'Conferma'; rscopy = 'Copia'; @@ -36,6 +39,7 @@ rsshortdec = 'Dic'; rslongdec = 'Dicembre'; rsdelete = 'Cancella'; rsdirectories = 'Cartelle'; +rsdirectory = 'Directory'; rsdrive = 'Disco'; rsedit = 'Modifica'; rslanguage = 'Italiano'; @@ -79,6 +83,8 @@ rsmessage = 'Messaggio'; rsfilemodifiedtime = 'Tempo Mod.'; rsshortmon = 'Lun'; rslongmon = 'Lunedì'; +rsmovedown = 'Move Down'; +rsmoveup = 'Move Up'; rsname = 'Nome'; rsno = 'No'; rsnotoall = 'No a Tutto'; diff --git a/src/corelib/lang_pt.inc b/src/corelib/lang_pt.inc index b6a2d330..76b21500 100644 --- a/src/corelib/lang_pt.inc +++ b/src/corelib/lang_pt.inc @@ -7,6 +7,7 @@ rserrnotassigned = '<%s> not assigned'; rsnewitemdetected = 'A new item has been detected.'; rsabort = 'Abortar'; rsabout = 'About %s'; +rsaddcurrentdirectory = 'Add current directory'; rsall = 'Todos'; rsallfiles = 'Todos os arquivos'; rscollectionallfonts = 'All Fonts'; @@ -20,9 +21,11 @@ rsbold = 'Negrito'; rscancel = 'Cancelar'; rscannotcreatedir = 'Não foi possível criar diretório'; rschange = 'Editar'; +rschangetitle = 'Change Title'; rscharactermap = 'Character Map'; rsclose = 'Fechar'; rscollection = 'Coleção'; +rsconfigurebookmarks = 'Configure Bookmarks'; rsconfirm = 'Confirmar'; rsconfirmation = 'Confirmação'; rscopy = 'Copy'; @@ -36,6 +39,7 @@ rsshortdec = 'Dec'; rslongdec = 'December'; rsdelete = 'Deletar'; rsdirectories = 'Diretórios'; +rsdirectory = 'Directory'; rsdrive = 'Drive'; rsedit = 'Editar'; rslanguage = 'Português'; @@ -79,6 +83,8 @@ rsmessage = 'Mensagem'; rsfilemodifiedtime = 'Mod. Time'; rsshortmon = 'Mon'; rslongmon = 'Monday'; +rsmovedown = 'Move Down'; +rsmoveup = 'Move Up'; rsname = 'Nome'; rsno = 'Não'; rsnotoall = 'Não para todos'; diff --git a/src/corelib/lang_ru.inc b/src/corelib/lang_ru.inc index f1571f0b..e989d927 100644 --- a/src/corelib/lang_ru.inc +++ b/src/corelib/lang_ru.inc @@ -7,6 +7,7 @@ rserrnotassigned = 'Значение <%s> не определено'; rsnewitemdetected = 'Обнаружен новый элемент'; rsabort = 'Прервать'; rsabout = 'Информация о %s'; +rsaddcurrentdirectory = 'Add current directory'; rsall = 'Все'; rsallfiles = 'Все файлы'; rscollectionallfonts = 'Все шрифты'; @@ -20,9 +21,11 @@ rsbold = 'Жирный'; rscancel = 'Отмена'; rscannotcreatedir = 'Невозможно создать директорию'; rschange = 'Изменить'; +rschangetitle = 'Change Title'; rscharactermap = 'Character Map'; rsclose = 'Закрыть'; rscollection = 'Группа'; +rsconfigurebookmarks = 'Configure Bookmarks'; rsconfirm = 'Подтвердить'; rsconfirmation = 'Подтверждение'; rscopy = 'Копировать'; @@ -36,6 +39,7 @@ rsshortdec = 'Дек'; rslongdec = 'Декабрь'; rsdelete = 'Удалить'; rsdirectories = 'Директории'; +rsdirectory = 'Directory'; rsdrive = 'Диск'; rsedit = 'Редактировать'; rslanguage = 'Русский'; @@ -79,6 +83,8 @@ rsmessage = 'Сообщение'; rsfilemodifiedtime = 'Изменен'; rsshortmon = 'Пн'; rslongmon = 'Понедельник'; +rsmovedown = 'Move Down'; +rsmoveup = 'Move Up'; rsname = 'Название'; rsno = 'Нет'; rsnotoall = 'Нет для всех'; diff --git a/src/gui/fpg_dialogs.pas b/src/gui/fpg_dialogs.pas index 1415ff01..5d61b70a 100644 --- a/src/gui/fpg_dialogs.pas +++ b/src/gui/fpg_dialogs.pas @@ -192,6 +192,7 @@ type function HighlightFile(const AFilename: string): boolean; function CreatePopupMenu: TfpgPopupMenu; procedure BookmarkItemClicked(Sender: TObject); + procedure ShowConfigureBookmarks; protected procedure HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); override; procedure btnOKClick(Sender: TObject); override; @@ -207,7 +208,6 @@ type property InitialDir: string read FInitialDir write SetInitialDir; property ShowHidden: boolean read GetShowHidden write SetShowHidden; end; - { This lets us use a single include file for both the Interface and Implementation sections. } @@ -222,6 +222,7 @@ type {$I charmapdialog.inc} {$I colordialog.inc} {$I inputquerydialog.inc} +{$I managebookmarksdialog.inc} @@ -1428,9 +1429,9 @@ begin finally lst.Free; end; - mi := AddMenuItem('Add current directory', '', @BookmarkItemClicked); + mi := AddMenuItem(rsAddCurrentDirectory, '', @BookmarkItemClicked); mi.Tag := 1; - mi := AddMenuItem('Configure...', '', @BookmarkItemClicked); + mi := AddMenuItem(rsConfigureBookmarks + '...', '', @BookmarkItemClicked); mi.Tag := 2; end; end; @@ -1450,7 +1451,7 @@ begin end else if mi.Tag = 2 then // configure bookmarks begin - // + ShowConfigureBookmarks; end else begin // bookmark has been clicked @@ -1459,6 +1460,18 @@ begin end; end; +procedure TfpgFileDialog.ShowConfigureBookmarks; +var + frm: TConfigureBookmarksForm; +begin + frm := TConfigureBookmarksForm.Create(FIni); + try + frm.ShowModal; + finally + frm.Free; + end; +end; + procedure TfpgFileDialog.ProcessFilterString; var p: integer; @@ -1578,6 +1591,7 @@ end; {$I charmapdialog.inc} {$I colordialog.inc} {$I inputquerydialog.inc} +{$I managebookmarksdialog.inc} end. diff --git a/src/gui/managebookmarksdialog.inc b/src/gui/managebookmarksdialog.inc new file mode 100644 index 00000000..2a507443 --- /dev/null +++ b/src/gui/managebookmarksdialog.inc @@ -0,0 +1,225 @@ +{ + fpGUI - Free Pascal GUI Toolkit + + Copyright (C) 2006 - 2010 See the file AUTHORS.txt, included in this + distribution, for details of the copyright. + + See the file COPYING.modifiedLGPL, included in this distribution, + for details about redistributing fpGUI. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + Description: + This unit contains the dialog to manage bookmarks from the + File Open/Save dialog. +} + +{%mainunit fpg_dialogs.pas} + +{$IFDEF read_interface} + + TConfigureBookmarksForm = class(TfpgForm) + private + {@VFD_HEAD_BEGIN: ConfigureBookmarksForm} + grdBookmarks: TfpgStringGrid; + btnChangeTitle: TfpgButton; + btnDelete: TfpgButton; + btnClose: TfpgButton; + btnMoveUp: TfpgButton; + btnMoveDown: TfpgButton; + {@VFD_HEAD_END: ConfigureBookmarksForm} + FIni: TfpgIniFile; + procedure SetupCaptions; + procedure PopulateGrid; + procedure UpdateINIFile; + procedure btnChangeTitleClicked(Sender: TObject); + procedure btnDeleteClicked(Sender: TObject); + public + constructor Create(var AIniFile: TfpgIniFile); reintroduce; + destructor Destroy; override; + procedure AfterCreate; override; + end; + + +{$ENDIF read_interface} + +{$IFDEF read_implementation} + +procedure TConfigureBookmarksForm.SetupCaptions; +begin + WindowTitle := rsConfigureBookmarks; + btnClose.Text := rsClose; + btnMoveUp.Text := rsMoveUp; + btnMoveDown.Text := rsMoveDown; + btnChangeTitle.Text := rsChangeTitle; + btnDelete.Text := rsDelete; + grdBookmarks.ColumnTitle[0] := rsName; + grdBookmarks.ColumnTitle[1] := rsDirectory; +end; + +procedure TConfigureBookmarksForm.PopulateGrid; +var + i: integer; + lst: TStringList; +begin + lst := TStringList.Create; + FIni.ReadSection(FPG_BOOKMARK_SECTION, lst); + grdBookmarks.RowCount := lst.Count; + for i := 0 to lst.Count-1 do + begin + grdBookmarks.Cells[0, i] := lst[i]; + grdBookmarks.Cells[1, i] := FIni.ReadString(FPG_BOOKMARK_SECTION, lst[i], ''); + end; + lst.Free; +end; + +procedure TConfigureBookmarksForm.UpdateINIFile; +var + i: integer; +begin + FIni.EraseSection(FPG_BOOKMARK_SECTION); + for i := 0 to grdBookmarks.RowCount-1 do + begin + FIni.WriteString(FPG_BOOKMARK_SECTION, grdBookmarks.Cells[0, i], grdBookmarks.Cells[1, i]); + end; +end; + +procedure TConfigureBookmarksForm.btnChangeTitleClicked(Sender: TObject); +var + s: TfpgString; +begin + if (grdBookmarks.RowCount = 0) or (grdBookmarks.FocusRow = -1) then + Exit; + s := grdBookmarks.Cells[0, grdBookmarks.FocusRow]; + if fpgInputQuery('Bookmark', 'Enter new bookmark name', s) then + begin + s := StringReplace(s, '=', '-', [rfReplaceAll]); // don't allow '=' sign in name (ini file requirement) + grdBookmarks.Cells[0, grdBookmarks.FocusRow] := s; + end; +end; + +procedure TConfigureBookmarksForm.btnDeleteClicked(Sender: TObject); +begin + if (grdBookmarks.RowCount = 0) or (grdBookmarks.FocusRow = -1) then + Exit; + grdBookmarks.DeleteRow(grdBookmarks.FocusRow); +end; + +constructor TConfigureBookmarksForm.Create(var AIniFile: TfpgIniFile); +begin + inherited Create(nil); + FIni := AIniFile; +end; + +destructor TConfigureBookmarksForm.Destroy; +begin + UpdateINIFile; + inherited Destroy; +end; + +procedure TConfigureBookmarksForm.AfterCreate; +begin + {%region 'Auto-generated GUI code' -fold} + {@VFD_BODY_BEGIN: ConfigureBookmarksForm} + Name := 'ConfigureBookmarksForm'; + SetPosition(331, 184, 596, 237); + WindowTitle := 'Configure Bookmarks'; + Hint := ''; + ShowHint := True; + WindowPosition := wpOneThirdDown; + + grdBookmarks := TfpgStringGrid.Create(self); + with grdBookmarks do + begin + Name := 'grdBookmarks'; + SetPosition(8, 8, 473, 218); + Anchors := [anLeft,anRight,anTop,anBottom]; + AddColumn('Title', 150, taLeftJustify); + AddColumn('Directory', 300, taLeftJustify); + FontDesc := '#Grid'; + HeaderFontDesc := '#GridHeader'; + Hint := ''; + RowCount := 0; + RowSelect := True; + TabOrder := 1; + Options := [go_SmoothScroll, go_AlternativeColor] + end; + + btnChangeTitle := TfpgButton.Create(self); + with btnChangeTitle do + begin + Name := 'btnChangeTitle'; + SetPosition(489, 8, 100, 24); + Anchors := [anRight,anTop]; + Text := 'btnChangeTitle'; + FontDesc := '#Label1'; + Hint := ''; + ImageName := ''; + TabOrder := 2; + OnClick := @btnChangeTitleClicked; + end; + + btnDelete := TfpgButton.Create(self); + with btnDelete do + begin + Name := 'btnDelete'; + SetPosition(489, 36, 100, 24); + Anchors := [anRight,anTop]; + Text := 'btnDelete'; + FontDesc := '#Label1'; + Hint := ''; + ImageName := ''; + TabOrder := 3; + OnClick := @btnDeleteClicked; + end; + + btnMoveUp := TfpgButton.Create(self); + with btnMoveUp do + begin + Name := 'btnMoveUp'; + SetPosition(489, 80, 100, 24); + Anchors := [anRight,anTop]; + Text := 'btnMoveUp'; + FontDesc := '#Label1'; + Hint := ''; + ImageName := 'sys.sb.up'; + TabOrder := 4; + end; + + btnMoveDown := TfpgButton.Create(self); + with btnMoveDown do + begin + Name := 'btnMoveDown'; + SetPosition(489, 108, 100, 24); + Anchors := [anRight,anTop]; + Text := 'btnMoveDown'; + FontDesc := '#Label1'; + Hint := ''; + ImageName := 'sys.sb.down'; + TabOrder := 5; + end; + + btnClose := TfpgButton.Create(self); + with btnClose do + begin + Name := 'btnClose'; + SetPosition(489, 204, 100, 24); + Anchors := [anRight,anBottom]; + Text := 'btnClose'; + FontDesc := '#Label1'; + Hint := ''; + ImageName := 'stdimg.close'; + ModalResult := mrOK; + TabOrder := 6; + end; + + {@VFD_BODY_END: ConfigureBookmarksForm} + {%endregion} + + SetupCaptions; + PopulateGrid; +end; +{$ENDIF read_implementation} + -- cgit v1.2.3-70-g09d2 From 823bd4c35e69fc8fba8c563d729a2ca248c18744 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 5 Sep 2010 16:59:36 +0200 Subject: Input Query Dialog: let it respond to Enter keypress as if OK button was clicked. --- src/gui/inputquerydialog.inc | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/gui/inputquerydialog.inc b/src/gui/inputquerydialog.inc index 5b063233..e7769246 100644 --- a/src/gui/inputquerydialog.inc +++ b/src/gui/inputquerydialog.inc @@ -30,6 +30,7 @@ type btnCancel: TfpgButton; {@VFD_HEAD_END: fpgQueryDialog} procedure SetupCaptions; + procedure edtTextKeyPressed(Sender: TObject; var KeyCode: word; var ShiftState: TShiftState; var Consumed: boolean); public procedure AfterCreate; override; end; @@ -62,6 +63,12 @@ begin btnCancel.Text := rsCancel; end; +procedure TfpgQueryDialog.edtTextKeyPressed(Sender: TObject; var KeyCode: word; var ShiftState: TShiftState; var Consumed: boolean); +begin + if KeyCode = keyEnter then + btnOK.Click; +end; + procedure TfpgQueryDialog.AfterCreate; begin {%region 'Auto-generated GUI code' -fold} @@ -94,6 +101,7 @@ begin TabOrder := 2; Text := ''; FontDesc := '#Edit1'; + OnKeyPress := @edtTextKeyPressed; end; btnOK := TfpgButton.Create(self); -- cgit v1.2.3-70-g09d2 From 6de2b6ae099ab630e8ef5a9718540754e2c93531 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 5 Sep 2010 17:00:33 +0200 Subject: Input Query Dialog: minor bug fix - now only sets return Value if OK was clicked. --- src/gui/inputquerydialog.inc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/inputquerydialog.inc b/src/gui/inputquerydialog.inc index e7769246..094a58e2 100644 --- a/src/gui/inputquerydialog.inc +++ b/src/gui/inputquerydialog.inc @@ -48,8 +48,10 @@ begin try dlg.WindowTitle := ACaption; dlg.lblText.Text := APrompt; + dlg.edtText.Text := Value; Result := dlg.ShowModal = mrOK; - Value := dlg.edtText.Text; + if Result then + Value := dlg.edtText.Text; finally dlg.Free; end; -- cgit v1.2.3-70-g09d2 From 8b4f0cf4b21c3d922ec9ae794b1689cfba72fde4 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 5 Sep 2010 17:02:24 +0200 Subject: File Dialog: grid now shows alternative row colors and does smooth scrolling horizontally. * These type of options should actually be set in a global fpGUI Configure application - so it affects all fpGUI based apps, and more importantly, is user selectable. Added to my todo list. :-) --- src/gui/fpg_dialogs.pas | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/gui/fpg_dialogs.pas b/src/gui/fpg_dialogs.pas index 5d61b70a..ea124dae 100644 --- a/src/gui/fpg_dialogs.pas +++ b/src/gui/fpg_dialogs.pas @@ -1064,6 +1064,7 @@ begin begin SetPosition(8, 44, 622, 200); Anchors := [anLeft, anRight, anTop, anBottom]; + Options := [go_AlternativeColor, go_SmoothScroll]; OnRowChange := @ListChanged; OnDoubleClick := @GridDblClicked; end; -- cgit v1.2.3-70-g09d2 From 58a54c28ab948a447692d0e354e39e82bb5a04d5 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sat, 11 Sep 2010 13:22:46 +0200 Subject: Grid horizontal scrollbar thumb button size improvement. This patch improves the default scrollbar thumb button size calculation (SliderSize value). --- src/gui/fpg_basegrid.pas | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_basegrid.pas b/src/gui/fpg_basegrid.pas index 051d1adb..5b77423f 100644 --- a/src/gui/fpg_basegrid.pas +++ b/src/gui/fpg_basegrid.pas @@ -83,6 +83,7 @@ type FAlternativeBGColor: TfpgColor; function GetFontDesc: string; function GetHeaderFontDesc: string; + function GetTotalColumnWidth: integer; procedure HScrollBarMove(Sender: TObject; position: integer); procedure SetFontDesc(const AValue: string); procedure SetHeaderFontDesc(const AValue: string); @@ -147,6 +148,7 @@ type property ShowGrid: boolean read FShowGrid write SetShowGrid default True; property ScrollBarStyle: TfpgScrollStyle read FScrollBarStyle write SetScrollBarStyle default ssAutoBoth; property HeaderHeight: integer read FHeaderHeight; + property TotalColumnWidth: integer read GetTotalColumnWidth; // property ColResizing: boolean read FColResizing write FColResizing; property ColumnWidth[ACol: Integer]: integer read GetColumnWidth write SetColumnWidth; property ColumnBackgroundColor[ACol: Integer]: TfpgColor read GetColumnBackgroundColor write SetColumnBackgroundColor; @@ -207,6 +209,15 @@ begin Result := FHeaderFont.FontDesc; end; +function TfpgBaseGrid.GetTotalColumnWidth: integer; +var + i: integer; +begin + Result := 0; + for i := 0 to ColumnCount-1 do + Result := Result + ColumnWidth[i]; +end; + procedure TfpgBaseGrid.SetFontDesc(const AValue: string); begin FFont.Free; @@ -579,16 +590,17 @@ begin begin Dec(VHeight, FHScrollBar.Height); FHScrollBar.Min := 0; - FHScrollBar.SliderSize := 0.2; if go_SmoothScroll in FOptions then begin FHScrollBar.Max := cw - vw; FHScrollBar.Position := FXOffset; + FHScrollBar.SliderSize := TotalColumnWidth / Width; end else begin FHScrollBar.Max := ColumnCount-1; FHScrollBar.Position := FFirstCol; + FHScrollBar.SliderSize := 1 / ColumnCount; end; FHScrollBar.RepaintSlider; end; -- cgit v1.2.3-70-g09d2 From ee174a54a4229d9d0522bee72ba06319086bc9de Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sat, 11 Sep 2010 13:23:38 +0200 Subject: File Open/Save Bookmark dialog: minor grid speed improvement. --- src/gui/managebookmarksdialog.inc | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/gui/managebookmarksdialog.inc b/src/gui/managebookmarksdialog.inc index 2a507443..ceef4cba 100644 --- a/src/gui/managebookmarksdialog.inc +++ b/src/gui/managebookmarksdialog.inc @@ -67,11 +67,13 @@ begin lst := TStringList.Create; FIni.ReadSection(FPG_BOOKMARK_SECTION, lst); grdBookmarks.RowCount := lst.Count; + grdBookmarks.BeginUpdate; for i := 0 to lst.Count-1 do begin grdBookmarks.Cells[0, i] := lst[i]; grdBookmarks.Cells[1, i] := FIni.ReadString(FPG_BOOKMARK_SECTION, lst[i], ''); end; + grdBookmarks.EndUpdate; lst.Free; end; -- cgit v1.2.3-70-g09d2 From 1ddf10edb868df99bf2db3b36a6d9532896409f8 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 12 Sep 2010 00:48:02 +0200 Subject: Select Directory Dialog: now has images with the folder nodes in treeview --- src/gui/fpg_dialogs.pas | 3 ++- src/gui/selectdirdialog.inc | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_dialogs.pas b/src/gui/fpg_dialogs.pas index ea124dae..074f0a4c 100644 --- a/src/gui/fpg_dialogs.pas +++ b/src/gui/fpg_dialogs.pas @@ -52,7 +52,8 @@ uses fpg_spinedit, fpg_tab, fpg_menu, - fpg_iniutils; + fpg_iniutils, + fpg_imagelist; type TfpgMsgDlgType = (mtAbout, mtWarning, mtError, mtInformation, mtConfirmation, diff --git a/src/gui/selectdirdialog.inc b/src/gui/selectdirdialog.inc index d09f11c8..715f5569 100644 --- a/src/gui/selectdirdialog.inc +++ b/src/gui/selectdirdialog.inc @@ -7,6 +7,7 @@ tv: TfpgTreeView; FRootDir: TfpgString; FShowHidden: Boolean; + FImagelist: TfpgImageList; function GetAbsolutePath(Node: TfpgTreeNode): TfpgString; procedure InitializeTreeview; procedure SetRootDir(const AValue: TfpgString); @@ -19,6 +20,7 @@ {$ENDIF} public constructor Create(AOwner: TComponent); override; + destructor Destroy; override; procedure AfterCreate; override; { return the selected directory or set initial selected dir } property SelectedDir: TfpgString read GetSelectedDir write SetSelectedDir; @@ -158,6 +160,7 @@ begin for i := 0 to SortList.Count - 1 do begin NewNode := Node.AppendText(SortList[i]); + NewNode.ImageIndex := 0; // NewNode := TV.Items.AddChild(Node, SortList[i]); // if subdirectories then indicate so. { Todo: Fix this by adding HasChildren to Treeview } @@ -245,9 +248,20 @@ end; {$ENDIF} constructor TfpgSelectDirDialog.Create(AOwner: TComponent); +var + img: TfpgImage; begin inherited Create(AOwner); FShowHidden := False; + FImagelist := TfpgImageList.Create; + img := fpgImages.GetImage('stdimg.folder').ImageFromSource; + FImageList.AddImage(img); +end; + +destructor TfpgSelectDirDialog.Destroy; +begin + FImagelist.Free; + inherited Destroy; end; procedure TfpgSelectDirDialog.AfterCreate; @@ -263,7 +277,9 @@ begin begin Name := 'tv'; SetPosition(FSpacing, FSpacing, 288, 322); - OnExpand :=@NodeExpanded; + ImageList := FImageList; + ShowImages := True; + OnExpand := @NodeExpanded; end; // reposition buttons -- cgit v1.2.3-70-g09d2 From e8ed178e5af3ab1ca927073ea1a54ce33bf068bb Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 12 Sep 2010 00:48:44 +0200 Subject: Select Directory Dialog: bug fix - anchors for treeview was not set. --- src/gui/selectdirdialog.inc | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/gui/selectdirdialog.inc b/src/gui/selectdirdialog.inc index 715f5569..6a96d046 100644 --- a/src/gui/selectdirdialog.inc +++ b/src/gui/selectdirdialog.inc @@ -277,6 +277,7 @@ begin begin Name := 'tv'; SetPosition(FSpacing, FSpacing, 288, 322); + Anchors := [anTop, anLeft, anRight, anBottom]; ImageList := FImageList; ShowImages := True; OnExpand := @NodeExpanded; -- cgit v1.2.3-70-g09d2 From cda56fc88208ee0f7838d0e3679e5ac959ad923f Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 12 Sep 2010 00:49:45 +0200 Subject: treeview: up/down scrollbar buttons now scroll one line and not one pixel. --- src/gui/fpg_tree.pas | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index 00ab6c8e..30305b04 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -1232,6 +1232,7 @@ begin FVScrollbar.Min := 0; FVScrollbar.Max := (GetNodeHeightSum * GetNodeHeight) - VisibleHeight + FHScrollbar.Height; FVScrollbar.PageSize := (VisibleHeight div 4) * 3; // three quarters of the height + FVScrollbar.ScrollStep := GetNodeHeight; // up/down buttons move the height of the font FHScrollbar.Min := 0; FHScrollbar.Max := MaxNodeWidth - VisibleWidth + FVScrollbar.Width; FHScrollbar.PageSize := (VisibleWidth div 4) * 3; // three quarters of the height -- cgit v1.2.3-70-g09d2 From 57ec7dcca6de86a7b88a12fb4fcd7639445ed0f6 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 12 Sep 2010 00:51:01 +0200 Subject: treeview: Mouse wheel scroll, now scrolls 1/3 of height, and not 1 pixel --- src/gui/fpg_tree.pas | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index 30305b04..e3bc5646 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -1807,23 +1807,25 @@ procedure TfpgTreeview.HandleMouseScroll(x, y: integer; shiftstate: TShiftState; delta: smallint); var i: integer; + dy: integer; begin inherited HandleMouseScroll(x, y, shiftstate, delta); - if delta > 0 then + dy := (VisibleHeight div 3); // mouse scrolling is 1/3 of the height + if delta > 0 then // scrolling down begin - inc(FYOffset, FScrollWheelDelta); + inc(FYOffset, dy); //FScrollWheelDelta); i := (GetNodeHeightSum * GetNodeHeight) - VisibleHeight + FHScrollbar.Height; if FYOffset > i then FYOffset := i; - i := FVScrollbar.Position + FScrollWheelDelta; + i := FVScrollbar.Position + dy; FVScrollbar.Position := i; end else - begin - dec(FYOffset, FScrollWheelDelta); + begin // scrolling up + dec(FYOffset, dy); //FScrollWheelDelta); if FYOffset < 0 then FYOffset := 0; - i := FVScrollbar.Position - FScrollWheelDelta; + i := FVScrollbar.Position - dy; FVScrollbar.Position := i; end; UpdateScrollbars; -- cgit v1.2.3-70-g09d2 From 19eb36215fe16cae9cd40ca4684109c51d5bb0b6 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 12 Sep 2010 00:52:18 +0200 Subject: treeview: bug fix in node painting. * fixed offset that node image was painted * fixed offset that node text was painted * fixed offset that selected node rectangle was painted --- src/gui/fpg_tree.pas | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index e3bc5646..f092ef48 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -1538,25 +1538,26 @@ begin Canvas.SetColor(h.ParentInactSelColor); Canvas.SetTextColor(h.ParentInActSelTextColor); end; - Canvas.FillRectangle(w - FXOffset, YPos - FYOffset + col - GetNodeHeight + FFont.Ascent div 2 - 2, GetNodeWidth(h), GetNodeHeight); + // draw selection rectangle + Canvas.FillRectangle(w - FXOffset, ACenterPos - (GetNodeHeight div 2), GetNodeWidth(h), GetNodeHeight); if (ImageList <> nil) and ShowImages then begin AImageItem := ImageList.Item[h.ImageIndex]; if AImageItem <> nil then begin - Canvas.DrawImagePart(w - FXOffset + 1, ACenterPos - 4, AImageItem.Image, 0, 0, 16, 16); - Canvas.DrawString(w - FXOffset + 1 + AImageItem.Image.Width + 2, ACenterPos - FFont.Ascent div 2, h.text); + Canvas.DrawImagePart(w - FXOffset + 1, ACenterPos - 8, AImageItem.Image, 0, 0, 16, 16); + Canvas.DrawString(w - FXOffset + 1 + AImageItem.Image.Width + 2, ACenterPos - (GetNodeHeight div 2), h.text); end else begin if FIndentNodeWithNoImage then - Canvas.DrawString(w - FXOffset + 1 + FNoImageIndent + 2 {spacer}, ACenterPos - FFont.Ascent div 2, h.text) + Canvas.DrawString(w - FXOffset + 1 + FNoImageIndent + 2 {spacer}, ACenterPos - (GetNodeHeight div 2), h.text) else - Canvas.DrawString(w - FXOffset + 1, ACenterPos - FFont.Ascent div 2, h.text); + Canvas.DrawString(w - FXOffset + 1, ACenterPos - (GetNodeHeight div 2), h.text); end; end else - Canvas.DrawString(w - FXOffset + 1, ACenterPos - FFont.Ascent div 2, h.text); + Canvas.DrawString(w - FXOffset + 1, ACenterPos - (GetNodeHeight div 2), h.text); Canvas.SetTextColor(h.ParentTextColor); end else @@ -1566,19 +1567,19 @@ begin AImageItem := ImageList.Item[h.ImageIndex]; if AImageItem <> nil then begin - Canvas.DrawImagePart(w - FXOffset + 1, ACenterPos - 4, AImageItem.Image, 0, 0, 16, 16); - Canvas.DrawString(w - FXOffset + 1 + AImageItem.Image.Width + 2, ACenterPos - FFont.Ascent div 2, h.text); + Canvas.DrawImagePart(w - FXOffset + 1, ACenterPos - 8, AImageItem.Image, 0, 0, 16, 16); + Canvas.DrawString(w - FXOffset + 1 + AImageItem.Image.Width + 2, ACenterPos - (GetNodeHeight div 2), h.text); end else begin if FIndentNodeWithNoImage then - Canvas.DrawString(w - FXOffset + 1 + FNoImageIndent + 2 {spacer}, ACenterPos - FFont.Ascent div 2, h.text) + Canvas.DrawString(w - FXOffset + 1 + FNoImageIndent + 2 {spacer}, ACenterPos - (GetNodeHeight div 2), h.text) else - Canvas.DrawString(w - FXOffset + 1, ACenterPos - FFont.Ascent div 2, h.text); + Canvas.DrawString(w - FXOffset + 1, ACenterPos - (GetNodeHeight div 2), h.text); end end else - Canvas.DrawString(w - FXOffset + 1, ACenterPos - FFont.Ascent div 2, h.text); + Canvas.DrawString(w - FXOffset + 1, ACenterPos - (GetNodeHeight div 2), h.text); end; { if/else } Canvas.SetLineStyle(1, FTreeLineStyle); -- cgit v1.2.3-70-g09d2 From 744ee3be3db4965d850b2239c5f4bdf44a58a926 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 12 Sep 2010 01:00:28 +0200 Subject: treeview: Adds PgUp/PgDown key handling support --- src/gui/fpg_tree.pas | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index f092ef48..f4cccb8b 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -1789,7 +1789,16 @@ begin Selection := RootNode.FirstSubNode; end; end; - + + keyPageUp: + begin + FVScrollbar.PageUp; + end; + + keyPageDown: + begin + FVScrollbar.PageDown; + end; else Consumed := False; end; -- cgit v1.2.3-70-g09d2 From a3fe1942a542650d53d51f1a15c1a13696ea8718 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 20 Sep 2010 09:04:22 +0200 Subject: Set default property values for TfpgColorListBox This affected HotTrack, PopupFrame and ColorPalette properties. --- src/gui/fpg_listbox.pas | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_listbox.pas b/src/gui/fpg_listbox.pas index 4b6d162e..179e0e81 100644 --- a/src/gui/fpg_listbox.pas +++ b/src/gui/fpg_listbox.pas @@ -92,8 +92,8 @@ type property AutoHeight: boolean read FAutoHeight write SetAutoHeight default False; property FocusItem: integer read FFocusItem write SetFocusItem; property FontDesc: string read GetFontDesc write SetFontDesc; - property HotTrack: boolean read FHotTrack write FHotTrack; - property PopupFrame: boolean read FPopupFrame write SetPopupFrame; + property HotTrack: boolean read FHotTrack write FHotTrack default False; + property PopupFrame: boolean read FPopupFrame write SetPopupFrame default False; property DragToReorder: boolean read FDragToReorder write FDragToReorder default False; public constructor Create(AOwner: TComponent); override; @@ -181,7 +181,7 @@ type // procedure HandleKeyChar(var AText: TfpgChar; var shiftstate: TShiftState; var consumed: boolean); override; property Items: TList read FItems; property Color: TfpgColor read GetColor write SetColor; - property ColorPalette: TfpgColorPalette read FColorPalette write SetColorPalette; + property ColorPalette: TfpgColorPalette read FColorPalette write SetColorPalette default cpStandardColors; property ShowColorNames: Boolean read FShowColorNames write SetShowColorNames default True; public constructor Create(AOwner: TComponent); override; -- cgit v1.2.3-70-g09d2 From f819c8528a09b331876e5f62a5cad8aae522fa54 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 20 Sep 2010 09:10:07 +0200 Subject: Moved GetClientRect() and GetBoundsRect() out of TfpgWidget into TfpgBaseWindow Now these functions are accessible to platform specific code too. --- src/corelib/fpg_base.pas | 12 ++++++++++++ src/corelib/fpg_widget.pas | 12 ------------ 2 files changed, 12 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index 0ac42f04..63c3ea15 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -451,6 +451,8 @@ type procedure MoveWindow(const x: TfpgCoord; const y: TfpgCoord); function WindowToScreen(ASource: TfpgWindowBase; const AScreenPos: TPoint): TPoint; function HasParent: Boolean; override; + function GetClientRect: TfpgRect; virtual; + function GetBoundsRect: TfpgRect; virtual; procedure ActivateWindow; virtual; abstract; procedure CaptureMouse; virtual; abstract; procedure ReleaseMouse; virtual; abstract; @@ -1204,6 +1206,16 @@ begin Result := FParent <> nil; end; +function TfpgWindowBase.GetClientRect: TfpgRect; +begin + Result.SetRect(0, 0, Width, Height); +end; + +function TfpgWindowBase.GetBoundsRect: TfpgRect; +begin + Result.SetRect(Left, Top, Width+1, Height+1); +end; + procedure TfpgWindowBase.SetFullscreen(AValue: Boolean); begin if AValue then diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index 39bb4193..1d51a7ad 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -141,8 +141,6 @@ type constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure AfterConstruction; override; - function GetClientRect: TfpgRect; virtual; - function GetBoundsRect: TfpgRect; virtual; function InDesigner: boolean; procedure InvokeHelp; virtual; procedure Realign; @@ -341,16 +339,6 @@ begin end; end; -function TfpgWidget.GetClientRect: TfpgRect; -begin - Result.SetRect(0, 0, Width, Height); -end; - -function TfpgWidget.GetBoundsRect: TfpgRect; -begin - Result.SetRect(Left, Top, Width+1, Height+1); -end; - function TfpgWidget.InDesigner: boolean; begin Result := (FFormDesigner <> nil) -- cgit v1.2.3-70-g09d2 From 76adf3bc4158a3785980d5c1c66ec7a6702001f1 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 20 Sep 2010 09:12:39 +0200 Subject: Introduced code page conversion routines fpg_stringutils unit now has various code page conversion routines * CP437ToUTF8 * CP850ToUTF8 * IBMGraphToUTF8 - special encoding often used under OS/2 * IPFToUTF8 - special conversion for use with DocView and old OS/2 INF files. --- src/corelib/fpg_stringutils.pas | 1151 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 1151 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_stringutils.pas b/src/corelib/fpg_stringutils.pas index 3e54e02b..54bfd6b8 100644 --- a/src/corelib/fpg_stringutils.pas +++ b/src/corelib/fpg_stringutils.pas @@ -25,6 +25,9 @@ interface uses Classes, SysUtils, fpg_base; +type + TCharToUTF8Table = array[char] of PChar; + function UTF8CharacterLength(p: PChar): integer; function UTF8CharStart(UTF8Str: PChar; Len, Index: integer): PChar; @@ -51,6 +54,14 @@ function fpgRemovePathDelim(const Path: TfpgString): TfpgString; function fpgTrimR(const AString, ATrim: TfpgString; ACaseSensitive: boolean = false): TfpgString; +// Encoding conversions +function CP437ToUTF8(const s: string): TfpgString; // DOS central europe +function CP850ToUTF8(const s: string): TfpgString; // DOS western europe +function IBMGraphToUTF8(const s: string): TfpgString; // IBM PC / DOS http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/IBMGRAPH.TXT +function IPFToUTF8(const s: string): TfpgString; // minor replacements to improve DocView output +function SingleByteToUTF8(const s: string; const Table: TCharToUTF8Table): TfpgString; + + implementation @@ -352,6 +363,1146 @@ begin Result := AString; end; +const + ArrayCP437ToUTF8 : TCharToUTF8Table = ( + #0, // #0 + #1, // #1 + #2, // #2 + #3, // #3 + #4, // #4 + #5, // #5 + #6, // #6 + #$E2#$80#$A2, // #7 bullet + #8, // #8 + #9, // #9 + #10, // #10 + #11, // #11 + #12, // #12 + #13, // #13 + #14, // #14 + #15, // #15 + #16, // #16 + #17, // #17 + #18, // #18 + #19, // #19 + #20, // #20 + #21, // #21 + #22, // #22 + #23, // #23 + #$E2#$86#$91, // #24 up arrow + #$E2#$86#$93, // #25 down arrow + #$E2#$86#$92, // #26 right arrow + #$E2#$86#$90, // #27 left arrow + #28, // #28 + #29, // #29 + #30, // #30 + #31, // #31 + ' ', // ' ' + '!', // '!' + '"', // '"' + '#', // '#' + '$', // '$' + '%', // '%' + '&', // '&' + '''', // '''' + '(', // '(' + ')', // ')' + '*', // '*' + '+', // '+' + ',', // ',' + '-', // '-' + '.', // '.' + '/', // '/' + '0', // '0' + '1', // '1' + '2', // '2' + '3', // '3' + '4', // '4' + '5', // '5' + '6', // '6' + '7', // '7' + '8', // '8' + '9', // '9' + ':', // ':' + ';', // ';' + '<', // '<' + '=', // '=' + '>', // '>' + '?', // '?' + '@', // '@' + 'A', // 'A' + 'B', // 'B' + 'C', // 'C' + 'D', // 'D' + 'E', // 'E' + 'F', // 'F' + 'G', // 'G' + 'H', // 'H' + 'I', // 'I' + 'J', // 'J' + 'K', // 'K' + 'L', // 'L' + 'M', // 'M' + 'N', // 'N' + 'O', // 'O' + 'P', // 'P' + 'Q', // 'Q' + 'R', // 'R' + 'S', // 'S' + 'T', // 'T' + 'U', // 'U' + 'V', // 'V' + 'W', // 'W' + 'X', // 'X' + 'Y', // 'Y' + 'Z', // 'Z' + '[', // '[' + '\', // '\' + ']', // ']' + '^', // '^' + '_', // '_' + '`', // '`' + 'a', // 'a' + 'b', // 'b' + 'c', // 'c' + 'd', // 'd' + 'e', // 'e' + 'f', // 'f' + 'g', // 'g' + 'h', // 'h' + 'i', // 'i' + 'j', // 'j' + 'k', // 'k' + 'l', // 'l' + 'm', // 'm' + 'n', // 'n' + 'o', // 'o' + 'p', // 'p' + 'q', // 'q' + 'r', // 'r' + 's', // 's' + 't', // 't' + 'u', // 'u' + 'v', // 'v' + 'w', // 'w' + 'x', // 'x' + 'y', // 'y' + 'z', // 'z' + '{', // '{' + '|', // '|' + '}', // '}' + '~', // '~' + #127, // #127 + #195#135, // #128 + #195#188, // #129 + #195#169, // #130 + #195#162, // #131 + #195#164, // #132 + #195#160, // #133 + #195#165, // #134 + #195#167, // #135 + #195#170, // #136 + #195#171, // #137 + #195#168, // #138 + #195#175, // #139 + #195#174, // #140 + #195#172, // #141 + #195#132, // #142 + #195#133, // #143 + #195#137, // #144 + #195#166, // #145 + #195#134, // #146 + #195#180, // #147 + #195#182, // #148 + #195#178, // #149 + #195#187, // #150 + #195#185, // #151 + #195#191, // #152 + #195#150, // #153 + #195#156, // #154 + #194#162, // #155 + #194#163, // #156 + #194#165, // #157 + #226#130#167, // #158 + #198#146, // #159 + #195#161, // #160 + #195#173, // #161 + #195#179, // #162 + #195#186, // #163 + #195#177, // #164 + #195#145, // #165 + #194#170, // #166 + #194#186, // #167 + #194#191, // #168 + #226#140#144, // #169 + #194#172, // #170 + #194#189, // #171 + #194#188, // #172 + #194#161, // #173 + #194#171, // #174 + #194#187, // #175 + #226#150#145, // #176 + #226#150#146, // #177 + #226#150#147, // #178 + #226#148#130, // #179 + #226#148#164, // #180 + #226#149#161, // #181 + #226#149#162, // #182 + #226#149#150, // #183 + #226#149#149, // #184 + #226#149#163, // #185 + #226#149#145, // #186 + #226#149#151, // #187 + #226#149#157, // #188 + #226#149#156, // #189 + #226#149#155, // #190 + #226#148#144, // #191 + #226#148#148, // #192 + #226#148#180, // #193 + #226#148#172, // #194 + #226#148#156, // #195 + #226#148#128, // #196 + #226#148#188, // #197 + #226#149#158, // #198 + #226#149#159, // #199 + #226#149#154, // #200 + #226#149#148, // #201 + #226#149#169, // #202 + #226#149#166, // #203 + #226#149#160, // #204 + #226#149#144, // #205 + #226#149#172, // #206 + #226#149#167, // #207 + #226#149#168, // #208 + #226#149#164, // #209 + #226#149#165, // #210 + #226#149#153, // #211 + #226#149#152, // #212 + #226#149#146, // #213 + #226#149#147, // #214 + #226#149#171, // #215 + #226#149#170, // #216 + #226#148#152, // #217 + #226#148#140, // #218 + #226#150#136, // #219 + #226#150#132, // #220 + #226#150#140, // #221 + #226#150#144, // #222 + #226#150#128, // #223 + #206#177, // #224 + #195#159, // #225 + #206#147, // #226 + #207#128, // #227 + #206#163, // #228 + #207#131, // #229 + #194#181, // #230 + #207#132, // #231 + #206#166, // #232 + #206#152, // #233 + #206#169, // #234 + #206#180, // #235 + #226#136#158, // #236 + #207#134, // #237 + #206#181, // #238 + #226#136#169, // #239 + #226#137#161, // #240 + #194#177, // #241 + #226#137#165, // #242 + #226#137#164, // #243 + #226#140#160, // #244 + #226#140#161, // #245 + #195#183, // #246 + #226#137#136, // #247 + #194#176, // #248 + #226#136#153, // #249 + #194#183, // #250 + #226#136#154, // #251 + #226#129#191, // #252 + #194#178, // #253 + #226#150#160, // #254 + #194#160 // #255 + ); + + ArrayCP850ToUTF8 : TCharToUTF8Table = ( + #0, // #0 + #1, // #1 + #2, // #2 + #3, // #3 + #4, // #4 + #5, // #5 + #6, // #6 + #$E2#$80#$A2, // #7 bullet + #8, // #8 + #9, // #9 + #10, // #10 + #11, // #11 + #12, // #12 + #13, // #13 + #14, // #14 + #15, // #15 + #16, // #16 + #17, // #17 + #18, // #18 + #19, // #19 + #20, // #20 + #21, // #21 + #22, // #22 + #23, // #23 + #24, // #24 + #25, // #25 + #26, // #26 + #27, // #27 + #28, // #28 + #29, // #29 + #30, // #30 + #31, // #31 + ' ', // ' ' + '!', // '!' + '"', // '"' + '#', // '#' + '$', // '$' + '%', // '%' + '&', // '&' + '''', // '''' + '(', // '(' + ')', // ')' + '*', // '*' + '+', // '+' + ',', // ',' + '-', // '-' + '.', // '.' + '/', // '/' + '0', // '0' + '1', // '1' + '2', // '2' + '3', // '3' + '4', // '4' + '5', // '5' + '6', // '6' + '7', // '7' + '8', // '8' + '9', // '9' + ':', // ':' + ';', // ';' + '<', // '<' + '=', // '=' + '>', // '>' + '?', // '?' + '@', // '@' + 'A', // 'A' + 'B', // 'B' + 'C', // 'C' + 'D', // 'D' + 'E', // 'E' + 'F', // 'F' + 'G', // 'G' + 'H', // 'H' + 'I', // 'I' + 'J', // 'J' + 'K', // 'K' + 'L', // 'L' + 'M', // 'M' + 'N', // 'N' + 'O', // 'O' + 'P', // 'P' + 'Q', // 'Q' + 'R', // 'R' + 'S', // 'S' + 'T', // 'T' + 'U', // 'U' + 'V', // 'V' + 'W', // 'W' + 'X', // 'X' + 'Y', // 'Y' + 'Z', // 'Z' + '[', // '[' + '\', // '\' + ']', // ']' + '^', // '^' + '_', // '_' + '`', // '`' + 'a', // 'a' + 'b', // 'b' + 'c', // 'c' + 'd', // 'd' + 'e', // 'e' + 'f', // 'f' + 'g', // 'g' + 'h', // 'h' + 'i', // 'i' + 'j', // 'j' + 'k', // 'k' + 'l', // 'l' + 'm', // 'm' + 'n', // 'n' + 'o', // 'o' + 'p', // 'p' + 'q', // 'q' + 'r', // 'r' + 's', // 's' + 't', // 't' + 'u', // 'u' + 'v', // 'v' + 'w', // 'w' + 'x', // 'x' + 'y', // 'y' + 'z', // 'z' + '{', // '{' + '|', // '|' + '}', // '}' + '~', // '~' + #127, // #127 + #195#135, // #128 + #195#188, // #129 + #195#169, // #130 + #195#162, // #131 + #195#164, // #132 + #195#160, // #133 + #195#165, // #134 + #195#167, // #135 + #195#170, // #136 + #195#171, // #137 + #195#168, // #138 + #195#175, // #139 + #195#174, // #140 + #195#172, // #141 + #195#132, // #142 + #195#133, // #143 + #195#137, // #144 + #195#166, // #145 + #195#134, // #146 + #195#180, // #147 + #195#182, // #148 + #195#178, // #149 + #195#187, // #150 + #195#185, // #151 + #195#191, // #152 + #195#150, // #153 + #195#156, // #154 + #195#184, // #155 + #194#163, // #156 + #195#152, // #157 + #195#151, // #158 + #198#146, // #159 + #195#161, // #160 + #195#173, // #161 + #195#179, // #162 + #195#186, // #163 + #195#177, // #164 + #195#145, // #165 + #194#170, // #166 + #194#186, // #167 + #194#191, // #168 + #194#174, // #169 + #194#172, // #170 + #194#189, // #171 + #194#188, // #172 + #194#161, // #173 + #194#171, // #174 + #194#187, // #175 + #226#150#145, // #176 + #226#150#146, // #177 + #226#150#147, // #178 + #226#148#130, // #179 + #226#148#164, // #180 + #195#129, // #181 + #195#130, // #182 + #195#128, // #183 + #194#169, // #184 + #226#149#163, // #185 + #226#149#145, // #186 + #226#149#151, // #187 + #226#149#157, // #188 + #194#162, // #189 + #194#165, // #190 + #226#148#144, // #191 + #226#148#148, // #192 + #226#148#180, // #193 + #226#148#172, // #194 + #226#148#156, // #195 + #226#148#128, // #196 + #226#148#188, // #197 + #195#163, // #198 + #195#131, // #199 + #226#149#154, // #200 + #226#149#148, // #201 + #226#149#169, // #202 + #226#149#166, // #203 + #226#149#160, // #204 + #226#149#144, // #205 + #226#149#172, // #206 + #194#164, // #207 + #195#176, // #208 + #195#144, // #209 + #195#138, // #210 + #195#139, // #211 + #195#136, // #212 + #196#177, // #213 + #195#141, // #214 + #195#142, // #215 + #195#143, // #216 + #226#148#152, // #217 + #226#148#140, // #218 + #226#150#136, // #219 + #226#150#132, // #220 + #194#166, // #221 + #195#140, // #222 + #226#150#128, // #223 + #195#147, // #224 + #195#159, // #225 + #195#148, // #226 + #195#146, // #227 + #195#181, // #228 + #195#149, // #229 + #194#181, // #230 + #195#190, // #231 + #195#158, // #232 + #195#154, // #233 + #195#155, // #234 + #195#153, // #235 + #195#189, // #236 + #195#157, // #237 + #194#175, // #238 + #194#180, // #239 + #194#173, // #240 + #194#177, // #241 + #226#128#151, // #242 + #194#190, // #243 + #194#182, // #244 + #194#167, // #245 + #195#183, // #246 + #194#184, // #247 + #194#176, // #248 + #194#168, // #249 + #194#183, // #250 + #194#185, // #251 + #194#179, // #252 + #194#178, // #253 + #226#150#160, // #254 + #194#160 // #255 + ); + + + + ArrayIBMGraphToUTF8: TCharToUTF8Table = ( + #0, // #0 + #1, // #1 + #2, // #2 + #3, // #3 + #4, // #4 + #5, // #5 + #6, // #6 + #$E2#$80#$A2, // #7 bullet + #8, // #8 + #9, // #9 + #10, // #10 + #11, // #11 + #12, // #12 + #13, // #13 + #14, // #14 + #15, // #15 + #16, // #16 + #$E2#$86#$90, // #17 + #18, // #18 + #19, // #19 + #20, // #20 + #21, // #21 + #22, // #22 + #23, // #23 + #$E2#$86#$91, // #24 up arrow + #$E2#$86#$93, // #25 down arrow + #$E2#$86#$92, // #26 right arrow + #$E2#$86#$90, // #27 left arrow + #28, // #28 + #29, // #29 left arrow + #30, // #30 + #31, // #31 + ' ', // ' ' + '!', // '!' + '"', // '"' + '#', // '#' + '$', // '$' + '%', // '%' + '&', // '&' + '''', // '''' + '(', // '(' + ')', // ')' + '*', // '*' + '+', // '+' + ',', // ',' + '-', // '-' + '.', // '.' + '/', // '/' + '0', // '0' + '1', // '1' + '2', // '2' + '3', // '3' + '4', // '4' + '5', // '5' + '6', // '6' + '7', // '7' + '8', // '8' + '9', // '9' + ':', // ':' + ';', // ';' + '<', // '<' + '=', // '=' + '>', // '>' + '?', // '?' + '@', // '@' + 'A', // 'A' + 'B', // 'B' + 'C', // 'C' + 'D', // 'D' + 'E', // 'E' + 'F', // 'F' + 'G', // 'G' + 'H', // 'H' + 'I', // 'I' + 'J', // 'J' + 'K', // 'K' + 'L', // 'L' + 'M', // 'M' + 'N', // 'N' + 'O', // 'O' + 'P', // 'P' + 'Q', // 'Q' + 'R', // 'R' + 'S', // 'S' + 'T', // 'T' + 'U', // 'U' + 'V', // 'V' + 'W', // 'W' + 'X', // 'X' + 'Y', // 'Y' + 'Z', // 'Z' + '[', // '[' + '\', // '\' + ']', // ']' + '^', // '^' + '_', // '_' + '`', // '`' + 'a', // 'a' + 'b', // 'b' + 'c', // 'c' + 'd', // 'd' + 'e', // 'e' + 'f', // 'f' + 'g', // 'g' + 'h', // 'h' + 'i', // 'i' + 'j', // 'j' + 'k', // 'k' + 'l', // 'l' + 'm', // 'm' + 'n', // 'n' + 'o', // 'o' + 'p', // 'p' + 'q', // 'q' + 'r', // 'r' + 's', // 's' + 't', // 't' + 'u', // 'u' + 'v', // 'v' + 'w', // 'w' + 'x', // 'x' + 'y', // 'y' + 'z', // 'z' + '{', // '{' + '|', // '|' + '}', // '}' + '~', // '~' + #127, // #127 + #195#135, // #128 + #195#188, // #129 + #195#169, // #130 + #195#162, // #131 + #195#164, // #132 + #195#160, // #133 + #195#165, // #134 + #195#167, // #135 + #195#170, // #136 + #195#171, // #137 + #195#168, // #138 + #195#175, // #139 + #195#174, // #140 + #195#172, // #141 + #195#132, // #142 + #195#133, // #143 + #195#137, // #144 + #195#166, // #145 + #195#134, // #146 + #195#180, // #147 + #195#182, // #148 + #195#178, // #149 + #195#187, // #150 + #195#185, // #151 + #195#191, // #152 + #195#150, // #153 + #195#156, // #154 + #194#162, // #155 + #194#163, // #156 + #194#165, // #157 + #226#130#167, // #158 + #198#146, // #159 + #195#161, // #160 + #195#173, // #161 + #195#179, // #162 + #195#186, // #163 + #195#177, // #164 + #195#145, // #165 + #194#170, // #166 + #194#186, // #167 + #194#191, // #168 + #226#140#144, // #169 + #194#172, // #170 + #194#189, // #171 + #194#188, // #172 + #194#161, // #173 + #194#171, // #174 + #194#187, // #175 + #226#150#145, // #176 + #226#150#146, // #177 + #226#150#147, // #178 + #226#148#130, // #179 + #226#148#164, // #180 + #226#149#161, // #181 + #226#149#162, // #182 + #226#149#150, // #183 + #226#149#149, // #184 + #226#149#163, // #185 + #226#149#145, // #186 + #226#149#151, // #187 + #226#149#157, // #188 + #226#149#156, // #189 + #226#149#155, // #190 + #226#148#144, // #191 + #226#148#148, // #192 + #226#148#180, // #193 + #226#148#172, // #194 + #226#148#156, // #195 + #226#148#128, // #196 + #226#148#188, // #197 + #226#149#158, // #198 + #226#149#159, // #199 + #226#149#154, // #200 + #226#149#148, // #201 + #226#149#169, // #202 + #226#149#166, // #203 + #226#149#160, // #204 + #226#149#144, // #205 + #226#149#172, // #206 + #226#149#167, // #207 + #226#149#168, // #208 + #226#149#164, // #209 + #226#149#165, // #210 + #226#149#153, // #211 + #226#149#152, // #212 + #226#149#146, // #213 + #226#149#147, // #214 + #226#149#171, // #215 + #226#149#170, // #216 + #226#148#152, // #217 + #226#148#140, // #218 + #226#150#136, // #219 + #226#150#132, // #220 + #226#150#140, // #221 + #226#150#144, // #222 + #226#150#128, // #223 + #206#177, // #224 + #195#159, // #225 + #206#147, // #226 + #207#128, // #227 + #206#163, // #228 + #207#131, // #229 + #194#181, // #230 + #207#132, // #231 + #206#166, // #232 + #206#152, // #233 + #206#169, // #234 + #206#180, // #235 + #226#136#158, // #236 + #207#134, // #237 + #206#181, // #238 + #226#136#169, // #239 + #226#137#161, // #240 + #194#177, // #241 + #226#137#165, // #242 + #226#137#164, // #243 + #226#140#160, // #244 + #226#140#161, // #245 + #195#183, // #246 + #226#137#136, // #247 + #194#176, // #248 + #226#136#153, // #249 + #194#183, // #250 + #226#136#154, // #251 + #226#129#191, // #252 + #194#178, // #253 + #226#150#160, // #254 + #194#160 // #255 + ); + + ArrayIPFToUTF8 : TCharToUTF8Table = ( + #0, // #0 + #1, // #1 + #2, // #2 + #3, // #3 + #4, // #4 + #5, // #5 + #6, // #6 + #$E2#$80#$A2, // #7 bullet (hard-coded in IPF Compiler) + #8, // #8 + #9, // #9 + #10, // #10 + #$E2#$97#$84, // #11 + #12, // #12 + #13, // #13 + #14, // #14 + #15, // #15 + '>', // #16 + '<', // #17 + #18, // #18 + #19, // #19 + #20, // #20 + #21, // #21 + #22, // #22 + #23, // #23 + #24, // #24 up arrow + #25, // #25 down arrow + #26, // #26 right arrow + #27, // #27 left arrow + #28, // #28 + #29, // #29 + #30, // #30 + #31, // #31 + ' ', // ' ' + '!', // '!' + '"', // '"' + '#', // '#' + '$', // '$' + '%', // '%' + '&', // '&' + '''', // '''' + '(', // '(' + ')', // ')' + '*', // '*' + '+', // '+' + ',', // ',' + '-', // '-' + '.', // '.' + '/', // '/' + '0', // '0' + '1', // '1' + '2', // '2' + '3', // '3' + '4', // '4' + '5', // '5' + '6', // '6' + '7', // '7' + '8', // '8' + '9', // '9' + ':', // ':' + ';', // ';' + '<', // '<' + '=', // '=' + '>', // '>' + '?', // '?' + '@', // '@' + 'A', // 'A' + 'B', // 'B' + 'C', // 'C' + 'D', // 'D' + 'E', // 'E' + 'F', // 'F' + 'G', // 'G' + 'H', // 'H' + 'I', // 'I' + 'J', // 'J' + 'K', // 'K' + 'L', // 'L' + 'M', // 'M' + 'N', // 'N' + 'O', // 'O' + 'P', // 'P' + 'Q', // 'Q' + 'R', // 'R' + 'S', // 'S' + 'T', // 'T' + 'U', // 'U' + 'V', // 'V' + 'W', // 'W' + 'X', // 'X' + 'Y', // 'Y' + 'Z', // 'Z' + '[', // '[' + '\', // '\' + ']', // ']' + '^', // '^' + '_', // '_' + '`', // '`' + 'a', // 'a' + 'b', // 'b' + 'c', // 'c' + 'd', // 'd' + 'e', // 'e' + 'f', // 'f' + 'g', // 'g' + 'h', // 'h' + 'i', // 'i' + 'j', // 'j' + 'k', // 'k' + 'l', // 'l' + 'm', // 'm' + 'n', // 'n' + 'o', // 'o' + 'p', // 'p' + 'q', // 'q' + 'r', // 'r' + 's', // 's' + 't', // 't' + 'u', // 'u' + 'v', // 'v' + 'w', // 'w' + 'x', // 'x' + 'y', // 'y' + 'z', // 'z' + '{', // '{' + '|', // '|' + '}', // '}' + '~', // '~' + #$E2#$8C#$82, // #127 house + #128, // #195#135 + #129, // #195#188 + #130, // #195#169 + #131, // #195#162 + #132, // #195#164 + #133, // #195#160 + #134, // #195#165 + #135, // #195#167 + #136, // #195#170 + #137, // #195#171 + #138, // #195#168 + #139, // #195#175 + #140, // #195#174 + #141, // #195#172 + #142, // #195#132 + #143, // #195#133 + #144, // #195#137 + #145, // #195#166 + #146, // #195#134 + #147, // #195#180 + #148, // #195#182 + #149, // #195#178 + #150, // #195#187 + #151, // #195#185 + #152, // #195#191 + #153, // #195#150 + #154, // #195#156 + #155, // #194#162 + #156, // #194#163 + #157, // #194#165 + #158, // #226#130#167 + #159, // #198#146 + #160, // #195#161 + #161, // #195#173 + #162, // #195#179 + #163, // #195#186 + #164, // #195#177 + #165, // #195#145 + #166, // #194#170 + #167, // #194#186 + #168, // #194#191 + #169, // #226#140#144 + #170, // #194#172 + #171, // #194#189 + #172, // #194#188 + #173, // #194#161 + #174, // #194#171 + #175, // #194#187 + #176, // #226#150#145 + #177, // #226#150#146 + #178, // #226#150#147 + #179, // #226#148#130 + #180, // #226#148#164 + #181, // #226#149#161 + #182, // #226#149#162 + #183, // #226#149#150 + #184, // #226#149#149 + #185, // #226#149#163 + #186, // #226#149#145 + #187, // #226#149#151 + #188, // #226#149#157 + #189, // #226#149#156 + #190, // #226#149#155 + #191, // #226#148#144 + #192, // #226#148#148 + #193, // #226#148#180 + #$E2#$94#$AC, // #226#148#172 + #195, // #226#148#156 + #$E2#$94#$80, // #196 + #197, // #226#148#188 + #198, // #226#149#158 + #199, // #226#149#159 + #200, // #226#149#154 + #201, // #226#149#148 + #202, // #226#149#169 + #203, // #226#149#166 + #204, // #226#149#160 + #205, // #226#149#144 + #206, // #226#149#172 + #207, // #226#149#167 + #208, // #226#149#168 + #209, // #226#149#164 + #210, // #226#149#165 + #211, // #226#149#153 + #212, // #226#149#152 + #213, // #226#149#146 + #214, // #226#149#147 + #215, // #226#149#171 + #216, // #226#149#170 + #217, // #226#148#152 + #218, // #226#148#140 + #219, // #226#150#136 + #220, // #226#150#132 + #221, // #226#150#140 + #222, // #226#150#144 + #223, // #226#150#128 + #224, // #206#177 + #225, // #195#159 + #226, // #206#147 + #227, // #207#128 + #228, // #206#163 + #229, // #207#131 + #230, // #194#181 + #231, // #207#132 + #232, // #206#166 + #233, // #206#152 + #234, // #206#169 + #235, // #206#180 + #236, // #226#136#158 + #237, // #207#134 + #238, // #206#181 + #239, // #226#136#169 + #240, // #226#137#161 + #241, // #194#177 + #242, // #226#137#165 + #243, // #226#137#164 + #244, // #226#140#160 + #245, // #226#140#161 + #246, // #195#183 + #247, // #226#137#136 + #248, // #194#176 + #249, // #226#136#153 + #250, // #194#183 + #251, // #226#136#154 + #252, // #226#129#191 + #253, // #194#178 + #254, // #226#150#160 + #255 // #194#160 + ); + + +function CP437ToUTF8(const s: string): TfpgString; +begin + Result := SingleByteToUTF8(s, ArrayCP437ToUTF8); +end; + +function CP850ToUTF8(const s: string): TfpgString; +begin + Result := SingleByteToUTF8(s, ArrayCP850ToUTF8); +end; + +function IBMGraphToUTF8(const s: string): TfpgString; +begin + Result := SingleByteToUTF8(s, ArrayIBMGraphToUTF8); +end; + +function IPFToUTF8(const s: string): TfpgString; + // Seaches and replaces with . Case sensitive. + function tiStrTran(AValue, ADel, AIns : string): string; + var + i : integer; + sToChange : string; + begin + result := ''; + sToChange := AValue; + i := UTF8Pos(ADel, sToChange); + while i <> 0 do + begin + result := result + UTF8Copy(sToChange, 1, i-1) + AIns; + UTF8Delete(sToChange, 1, i+UTF8length(ADel)-1); + i := UTF8Pos(ADel, sToChange); + end; + result := result + sToChange; + end; + +begin + // IBM Graph CodePage 437 (kind-of) to Unicode mapping. + // Below is what we had before this function + Result := SingleByteToUTF8(s, ArrayIPFToUTF8); + //Result := s; + //Result := StringReplace(Result, Chr($07), #$E2#$80#$A2, [rfReplaceAll, rfIgnoreCase]); // u+2022 small bullet + //Result := tiStrTran(Result, Char(16), '>' ); + //Result := tiStrTran(Result, Char(17), '<' ); + //Result := tiStrTran(Result, Char($1f), '▼' ); + //Result := tiStrTran(Result, Char(179), '│' ); + //Result := tiStrTran(Result, Char(180), '┤' ); + //Result := tiStrTran(Result, Char(191), '┐' ); + //Result := tiStrTran(Result, Char(192), '└' ); + //Result := tiStrTran(Result, Char(193), '┴' ); + //Result := tiStrTran(Result, Char(194), '┬' ); + //Result := tiStrTran(Result, Char(195), '├' ); + //Result := tiStrTran(Result, Char(196), '─' ); + //Result := tiStrTran(Result, Char(197), '┼' ); + //Result := tiStrTran(Result, Char(217), '┘' ); + //Result := tiStrTran(Result, Char(218), '┌' ); +end; + +function SingleByteToUTF8(const s: string; const Table: TCharToUTF8Table): TfpgString; +var + len: Integer; + i: Integer; + Src: PChar; + Dest: PChar; + p: PChar; + c: Char; +begin + if s='' then + begin + Result := s; + exit; + end; + len := length(s); + SetLength(Result, len*4); // UTF-8 is at most 4 bytes + Src := PChar(s); + Dest := PChar(Result); + for i := 1 to len do + begin + c := Src^; + inc(Src); + //if ord(c) < 128 then + //begin + // Dest^ := c; + // inc(Dest); + //end + //else + begin + p := Table[c]; + if p <> nil then + begin + while p^ <> #0 do + begin + Dest^ := p^; + inc(p); + inc(Dest); + end; + end; + end; + end; + SetLength(Result, PtrUInt(Dest)-PtrUInt(Result)); +end; + end. -- cgit v1.2.3-70-g09d2 From 7fdb64b3d30f2efa05b69f860802a24c947b3d0d Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 20 Sep 2010 11:07:00 +0200 Subject: TfpgMessageBox now supports font selection * we can now adjust the font used via the FontDesc property. This is handy when using fixed width fonts and displaying quick keyboard shortcut help. --- src/gui/fpg_dialogs.pas | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_dialogs.pas b/src/gui/fpg_dialogs.pas index 074f0a4c..0b5fd01c 100644 --- a/src/gui/fpg_dialogs.pas +++ b/src/gui/fpg_dialogs.pas @@ -94,12 +94,15 @@ type procedure FormPaint(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormKeyPressed(Sender: TObject; var KeyCode: word; var ShiftState: TShiftState; var Consumed: boolean); + function GetFontDesc: string; + procedure SetFontDesc(const AValue: string); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure AfterCreate; override; procedure SetMessage(AMessage: string); property CentreText: Boolean read FCentreText write FCentreText default False; + property FontDesc: string read GetFontDesc write SetFontDesc; end; @@ -450,6 +453,18 @@ begin end; end; +function TfpgMessageBox.GetFontDesc: string; +begin + Result := FFont.FontDesc; +end; + +procedure TfpgMessageBox.SetFontDesc(const AValue: string); +begin + FFont.Free; + FFont := fpgGetFont(AValue); + RePaint; +end; + constructor TfpgMessageBox.Create(AOwner: TComponent); begin inherited Create(AOwner); -- cgit v1.2.3-70-g09d2 From 51d6e695e7c311afc3cbe9bc4ac17ba405388d09 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 20 Sep 2010 13:03:22 +0200 Subject: KeyPress events is now distributed to Widgets, then Form, then fpgApplication * KeyPress is first offered to the focused widget * If not consumed, then to parent, then parent.parent etc.. * if still not consumed, then to top level form * if still not consumed, then to fpgApplication If anywhere in the sequence Consumed = True, then distribution of that event is stopped. This is the basic foundation required for various keyboard shortcut handling, actions shortcut handling, and especially in menus. The latter still needs some work though. --- src/corelib/fpg_main.pas | 2 ++ src/corelib/fpg_widget.pas | 18 +++++++++++++++++- src/gui/fpg_form.pas | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index 0e2f5384..a83c5590 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -229,6 +229,7 @@ type FHintTimer: TfpgTimer; FHintWidget: TfpgWindow; FHintPos: TPoint; + FOnKeyPress: TKeyPressEvent; procedure SetHintPause(const AValue: Integer); procedure SetupLocalizationStrings; procedure InternalMsgFreeMe(var msg: TfpgMessageRec); message FPGM_FREEME; @@ -270,6 +271,7 @@ type property ShowHint: boolean read FShowHint write SetShowHint default True; property StopOnException: Boolean read FStopOnException write FStopOnException; property OnException: TExceptionEvent read FOnException write FOnException; + property OnKeyPress: TKeyPressEvent read FOnKeyPress write FOnKeyPress; end; diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index 1d51a7ad..4e48aa75 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -179,7 +179,8 @@ implementation uses fpg_constants, - fpg_menu; + fpg_menu, + fpg_form; { for OnKeyPress handling } var @@ -475,6 +476,7 @@ var ss: TShiftState; consumed: boolean; wg: TfpgWidget; + wlast: TfpgWidget; begin if InDesigner then begin @@ -490,13 +492,27 @@ begin HandleKeyPress(key, ss, consumed); if not consumed then begin + { work it's way to one before top level form - forms are not focusable remember } wg := Parent; + wlast := wg; while (not consumed) and (wg <> nil) do begin wg.HandleKeyPress(key, ss, consumed); + wlast := wg; wg := wg.Parent; end; end; + { we should now be at the top level form } + if (not consumed) and (wlast <> nil) then + begin + if (wlast is TfpgForm) and Assigned(wlast.OnKeyPress) then + wlast.OnKeyPress(self, key, ss, consumed); + end; + { now finaly, lets give fpgApplication a chance } + if (not consumed) and Assigned(fpgApplication.OnKeyPress) then + begin + fpgApplication.OnKeyPress(self, key, ss, consumed); + end; end; procedure TfpgWidget.MsgKeyRelease(var msg: TfpgMessageRec); diff --git a/src/gui/fpg_form.pas b/src/gui/fpg_form.pas index 19f8c3e6..0322050a 100644 --- a/src/gui/fpg_form.pas +++ b/src/gui/fpg_form.pas @@ -133,6 +133,7 @@ type property OnEnter; property OnExit; property OnHide; + property OnKeyPress; property OnMouseDown; property OnMouseEnter; property OnMouseExit; -- cgit v1.2.3-70-g09d2 From aa2cc53f0dc07a7f43d3dbc6e5c607fc9401c1b9 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 20 Sep 2010 13:03:49 +0200 Subject: Add some programmer comments in X11 backend code. --- src/corelib/x11/fpg_x11.pas | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 2b4c0418..b6fbd3a6 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -335,6 +335,8 @@ function XdbeDeallocateBackBufferName(ADisplay: PXDisplay; ABuffer: TfpgWinHandl function XOpenIM(para1: PDisplay; para2: PXrmHashBucketRec; para3: Pchar; para4: Pchar): PXIM; cdecl; external; function XCreateIC(para1: PXIM; para2: array of const): PXIC; cdecl; external; +const + AltGrMask = 1 shl 13; // missing from X unit function ConvertTo565Pixel(rgb: longword): word; begin @@ -592,11 +594,12 @@ begin Include(Result, ssAlt); if (AState and Mod2Mask) <> 0 then Include(Result, ssNum); - if (AState and Mod4Mask) <> 0 then + { NOTE: Mod3Mask is normally unused for some reason } + if (AState and Mod4Mask) <> 0 then { aka "Windows key" } Include(Result, ssSuper); if (AState and Mod5Mask) <> 0 then Include(Result, ssScroll); - if (AState and (1 shl 13)) <> 0 then + if (AState and AltGrMask) <> 0 then Include(Result, ssAltGr); end; @@ -627,7 +630,7 @@ begin 0..Ord('a')-1, Ord('z')+1..$bf, $f7: Result := KeySym; Ord('a')..Ord('z'), $c0..$f6, $f8..$ff: - Result := KeySym - 32; + Result := KeySym - 32; // ignore case: convert lowercase a-z to A-Z keysyms; $20a0..$20ac: Result := Table_20aX[KeySym]; $fe20: Result := keyTab; $fe50..$fe60: Result := Table_feXX[KeySym]; -- cgit v1.2.3-70-g09d2 From b1d8c09916ae753b9df0954d9a995d16fd4b2232 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 11:09:06 +0200 Subject: Button: Flat=True (toolbar) buttons are now painted as such in the uidesigner This makes them easily distinguishable between normal buttons. --- src/gui/fpg_button.pas | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_button.pas b/src/gui/fpg_button.pas index 19b31049..032fcf47 100644 --- a/src/gui/fpg_button.pas +++ b/src/gui/fpg_button.pas @@ -532,6 +532,12 @@ begin Include(lBtnFlags, btfHover) else if FFlat then Include(lBtnFlags, btfFlat); + end + else + begin + { while in the designer we want hover effect all the time } + if FFlat then + Include(lBtnFlags, btfHover); end; if not FFlat and FDefault then -- cgit v1.2.3-70-g09d2 From 8c653c16e4d86cbd7fab92d4688226db1646ed78 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 11:10:09 +0200 Subject: panel/bevel: corrected the shadow color used in box/panel style --- src/gui/fpg_panel.pas | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_panel.pas b/src/gui/fpg_panel.pas index b58b516d..1446283f 100644 --- a/src/gui/fpg_panel.pas +++ b/src/gui/fpg_panel.pas @@ -333,21 +333,24 @@ begin else Canvas.SetLineStyle(2, lsSolid); + { top } if FPanelBorder = bsSingle then Canvas.DrawLine(0, 0, Width - 1, 0) else Canvas.DrawLine(0, 1, Width - 1, 1); + { left } if FPanelBorder = bsSingle then Canvas.DrawLine(0, 1, 0, Height - 1) else Canvas.DrawLine(1, 1, 1, Height - 1); if Style = bsRaised then - Canvas.SetColor(clShadow2) + Canvas.SetColor(clShadow1) else Canvas.SetColor(clHilite2); + { right, then bottom } Canvas.DrawLine(Width - 1, 0, Width - 1, Height - 1); Canvas.DrawLine(0, Height - 1, Width, Height - 1); end; @@ -597,7 +600,7 @@ begin if Style = bsRaised then Canvas.SetColor(clHilite2) else - Canvas.SetColor(clShadow2); + Canvas.SetColor(clShadow1); if FPanelBorder = bsSingle then begin @@ -611,7 +614,7 @@ begin end; if Style = bsRaised then - Canvas.SetColor(clShadow2) + Canvas.SetColor(clShadow1) else Canvas.SetColor(clHilite2); -- cgit v1.2.3-70-g09d2 From 85f360e93353b2687c49891d5fecf3700bcd7748 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 11:11:57 +0200 Subject: DrawButtonFace(): Improved the look of Flat=True buttons Flat=True (toolbar) style buttons now have a thinner border when the mouse hovers over them. They also have an improved look in Down=True state. --- src/corelib/fpg_main.pas | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index a83c5590..5505359a 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -1759,7 +1759,12 @@ begin if (btfIsEmbedded in AFlags) then ACanvas.SetColor(clHilite2) else - ACanvas.SetColor(clShadow2); + begin + if (btfFlat in AFlags) or (btfHover in AFlags) then + ACanvas.SetColor(clShadow1) { light shadow } + else + ACanvas.SetColor(clShadow2); { dark shadow } + end; end else ACanvas.SetColor(clHilite2); @@ -1781,14 +1786,27 @@ begin if (btfIsEmbedded in AFlags) then ACanvas.SetColor(clHilite1) else - ACanvas.SetColor(clShadow2); + begin + if (btfFlat in AFlags) or (btfHover in AFlags) then + ACanvas.SetColor(clHilite2) { light shadow } + else + ACanvas.SetColor(clShadow2); { dark shadow } + end; end else - ACanvas.SetColor(clShadow2); - + begin + if btfHover in AFlags then + ACanvas.SetColor(clShadow1) { light shadow } + else + ACanvas.SetColor(clShadow2); { dark shadow } + end; + ACanvas.DrawLine(r.Right, r.Top, r.Right, r.Bottom); // right ACanvas.DrawLine(r.Right, r.Bottom, r.Left-1, r.Bottom); // bottom + if (btfFlat in AFlags) or (btfHover in AFlags) then + exit; { "toolbar" style buttons need a nice thing/flat border } + // Right and Bottom (inner) if btfIsPressed in AFlags then begin -- cgit v1.2.3-70-g09d2 From 63c84c9ee4ed66b2839ac89e1476fc3224f98300 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 22:58:33 +0200 Subject: Removed compiler warnings. --- src/corelib/fpg_base.pas | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index 63c3ea15..3bdfde47 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -2266,6 +2266,7 @@ function TfpgApplicationBase.ContextHelp(const AHelpContext: THelpContext): Bool var p: TProcess; begin + Result := False; p := TProcess.Create(nil); try if fpgFileExists(HelpFile) then @@ -2278,6 +2279,7 @@ begin end else p.CommandLine := GetHelpViewer; + Result := True; p.Execute; finally p.Free; @@ -2288,6 +2290,7 @@ function TfpgApplicationBase.KeywordHelp(const AHelpKeyword: string): Boolean; var p: TProcess; begin + Result := False; p := TProcess.Create(nil); try if fpgFileExists(HelpFile) then @@ -2297,6 +2300,7 @@ begin end else p.CommandLine := GetHelpViewer; + Result := True; p.Execute; finally p.Free; -- cgit v1.2.3-70-g09d2 From c598ee9ebdc14537d8a6b094e407e01c62dcfcc9 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 11:47:55 +0200 Subject: Two new types introduced: TfpgPoint and TfpgSize The are of type "object" for static allocation, and includes easy initialization methods, and TfpgPoint introduces ManhattanLength (easy and quick way to determine distance between two points). See the class documentation for more information on ManhattanLength. --- src/corelib/fpg_base.pas | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index 3bdfde47..7ae4bb8b 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -107,7 +107,6 @@ var const UserNamedColorStart = 128; - {$I predefinedcolors.inc} type @@ -124,6 +123,22 @@ type end; + TfpgPoint = object // not class for static allocations + X: integer; + Y: integer; + procedure SetPoint(AX, AY: integer); + function ManhattanLength: integer; { See URL for explanation http://en.wikipedia.org/wiki/Taxicab_geometry } + function ManhattanLength(const PointB: TfpgPoint): integer; + end; + + + TfpgSize = object // not class for static allocations + W: integer; + H: integer; + procedure SetSize(AWidth, AHeight: integer); + end; + + TfpgMsgParmMouse = record x: TfpgCoord; y: TfpgCoord; @@ -628,6 +643,8 @@ procedure SortRect(var ARect: TRect); procedure SortRect(var ARect: TfpgRect); procedure SortRect(var left, top, right, bottom: integer); + + implementation uses @@ -1003,6 +1020,35 @@ begin Width := Value - Left + 1; end; + +{ TfpgPoint } + +procedure TfpgPoint.SetPoint(AX, AY: integer); +begin + X := AX; + Y := AY; +end; + +function TfpgPoint.ManhattanLength: integer; +begin + Result := Abs(X) + Abs(Y); +end; + +function TfpgPoint.ManhattanLength(const PointB: TfpgPoint): integer; +begin + Result := Abs(PointB.X-X) + Abs(PointB.Y-Y); +end; + + +{ TfpgSize } + +procedure TfpgSize.SetSize(AWidth, AHeight: integer); +begin + W := AWidth; + H := AHeight; +end; + + { TfpgWindowBase } procedure TfpgWindowBase.SetMouseCursor(const AValue: TMouseCursor); -- cgit v1.2.3-70-g09d2 From d440ddcbb905bd4a7b7260c4e2cbb47a68d6f4e6 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 13:21:39 +0200 Subject: cl_BaseNamedColor should be a index number, not really a TfpgColor type. --- src/corelib/predefinedcolors.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/predefinedcolors.inc b/src/corelib/predefinedcolors.inc index 1e6c4b54..ae14ff4a 100644 --- a/src/corelib/predefinedcolors.inc +++ b/src/corelib/predefinedcolors.inc @@ -34,7 +34,7 @@ // System named color identifiers. DON'T CHANGE THE ORDER! - cl_BaseNamedColor = TfpgColor($80000000); + cl_BaseNamedColor = $80000000; clWindowBackground = TfpgColor(cl_BaseNamedColor + 1); clBoxColor = TfpgColor(cl_BaseNamedColor + 2); -- cgit v1.2.3-70-g09d2 From 3736df3628bfd92753b72dc6aad30ec67160dbd5 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 13:43:24 +0200 Subject: Two new helper routines [fpgPoint() and fpgSize()] and lots of operator overloading --- src/corelib/fpg_main.pas | 149 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 148 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index 5505359a..afba9d89 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -366,7 +366,7 @@ procedure fpgCheckTimers; function fpgClosestTimer(ctime: TDateTime; amaxtime: integer): integer; function fpgGetTickCount: DWord; -// Rectangle routines +// Rectangle, Point & Size routines function InflateRect(var Rect: TRect; dx: Integer; dy: Integer): Boolean; function InflateRect(var Rect: TfpgRect; dx: Integer; dy: Integer): Boolean; function OffsetRect(var Rect: TRect; dx: Integer; dy: Integer): Boolean; @@ -375,6 +375,8 @@ function CenterPoint(const Rect: TRect): TPoint; function CenterPoint(const Rect: TfpgRect): TPoint; function fpgRect(ALeft, ATop, AWidth, AHeight: integer): TfpgRect; function fpgRectToRect(const ARect: TfpgRect): TRect; +function fpgPoint(const AX, AY: integer): TfpgPoint; +function fpgSize(const AWidth, AHeight: integer): TfpgSize; // Debug rountines procedure PrintRect(const Rect: TRect); @@ -393,6 +395,26 @@ procedure DebugLn(const s1, s2, s3, s4: TfpgString); // operator overloading of some useful structures operator = (a: TRect; b: TRect): boolean; +operator = (const ASize1, ASize2: TfpgSize) b: Boolean; +operator + (const APoint1, APoint2: TPoint) p: TPoint; +operator + (const APoint1, APoint2: TfpgPoint) p: TfpgPoint; +operator + (const APoint: TPoint; ASize: TfpgSize) p: TPoint; +operator + (const APoint: TfpgPoint; ASize: TfpgSize) p: TfpgPoint; +operator + (const ASize: TfpgSize; APoint: TPoint) s: TfpgSize; +operator + (const ASize: TfpgSize; APoint: TfpgPoint) s: TfpgSize; +operator + (const ASize1, ASize2: TfpgSize) s: TfpgSize; +operator + (const APoint: TPoint; i: Integer) p: TPoint; +operator + (const APoint: TfpgPoint; i: Integer) p: TfpgPoint; +operator + (const ASize: TfpgSize; i: Integer) s: TfpgSize; +operator - (const APoint1, APoint2: TPoint) p: TPoint; +operator - (const APoint1, APoint2: TfpgPoint) p: TfpgPoint; +operator - (const APoint: TPoint; i: Integer) p: TPoint; +operator - (const APoint: TfpgPoint; i: Integer) p: TfpgPoint; +operator - (const ASize: TfpgSize; const APoint: TPoint) s: TfpgSize; +operator - (const ASize: TfpgSize; const APoint: TfpgPoint) s: TfpgSize; +operator - (const ASize: TfpgSize; i: Integer) s: TfpgSize; +operator = (const AColor1, AColor2: TFPColor) b: Boolean; + implementation @@ -590,6 +612,16 @@ begin Result.Bottom := ARect.Bottom; end; +function fpgPoint(const AX, AY: integer): TfpgPoint; +begin + Result.SetPoint(AX, AY); +end; + +function fpgSize(const AWidth, AHeight: integer): TfpgSize; +begin + Result.SetSize(AWidth, AHeight); +end; + procedure InitializeDebugOutput; var DebugFileName: string; @@ -796,6 +828,121 @@ begin Result := False; end; +operator = (const ASize1, ASize2: TfpgSize) b: Boolean; +begin + b := (ASize1.w = ASize2.w) and (ASize1.h = ASize2.h); +end; + +operator + (const APoint1, APoint2: TPoint) p: TPoint; +begin + p.x := APoint1.x + APoint2.x; + p.y := APoint1.y + APoint2.y; +end; + +operator + (const APoint1, APoint2: TfpgPoint) p: TfpgPoint; +begin + p.x := APoint1.x + APoint2.x; + p.y := APoint1.y + APoint2.y; +end; + +operator + (const APoint: TPoint; ASize: TfpgSize) p: TPoint; +begin + p.x := APoint.x + ASize.w; + p.y := APoint.y + ASize.h; +end; + +operator + (const APoint: TfpgPoint; ASize: TfpgSize) p: TfpgPoint; +begin + p.x := APoint.x + ASize.w; + p.y := APoint.y + ASize.h; +end; + +operator + (const ASize: TfpgSize; APoint: TPoint) s: TfpgSize; +begin + s.w := ASize.w + APoint.x; + s.h := ASize.h + APoint.y; +end; + +operator + (const ASize: TfpgSize; APoint: TfpgPoint) s: TfpgSize; +begin + s.w := ASize.w + APoint.x; + s.h := ASize.h + APoint.y; +end; + +operator + (const ASize1, ASize2: TfpgSize) s: TfpgSize; +begin + s.w := ASize1.w + ASize2.w; + s.h := ASize1.h + ASize2.h; +end; + +operator + (const APoint: TPoint; i: Integer) p: TPoint; +begin + p.x := APoint.x + i; + p.y := APoint.y + i; +end; + +operator + (const APoint: TfpgPoint; i: Integer) p: TfpgPoint; +begin + p.x := APoint.x + i; + p.y := APoint.y + i; +end; + +operator + (const ASize: TfpgSize; i: Integer) s: TfpgSize; +begin + s.w := ASize.w + i; + s.h := ASize.h + i; +end; + +operator - (const APoint1, APoint2: TPoint) p: TPoint; +begin + p.x := APoint1.x - APoint2.x; + p.y := APoint1.y - APoint2.y; +end; + +operator - (const APoint1, APoint2: TfpgPoint) p: TfpgPoint; +begin + p.x := APoint1.x - APoint2.x; + p.y := APoint1.y - APoint2.y; +end; + +operator - (const APoint: TPoint; i: Integer) p: TPoint; +begin + p.x := APoint.x - i; + p.y := APoint.y - i; +end; + +operator - (const APoint: TfpgPoint; i: Integer) p: TfpgPoint; +begin + p.x := APoint.x - i; + p.y := APoint.y - i; +end; + +operator - (const ASize: TfpgSize; const APoint: TPoint) s: TfpgSize; +begin + s.w := ASize.w - APoint.x; + s.h := ASize.h - APoint.y; +end; + +operator - (const ASize: TfpgSize; const APoint: TfpgPoint) s: TfpgSize; +begin + s.w := ASize.w - APoint.x; + s.h := ASize.h - APoint.y; +end; + +operator - (const ASize: TfpgSize; i: Integer) s: TfpgSize; +begin + s.w := ASize.w - i; + s.h := ASize.h - i; +end; + +operator = (const AColor1, AColor2: TFPColor) b: Boolean; +begin + b := (AColor1.Red = AColor2.Red) + and (AColor1.Green = AColor2.Green) + and (AColor1.Blue = AColor2.Blue) + and (AColor1.Alpha = AColor2.Alpha); +end; + { TfpgTimer } procedure TfpgTimer.SetEnabled(const AValue: boolean); -- cgit v1.2.3-70-g09d2 From f4c7cd3cf21a008f18bebc65f9ff3433713413e4 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 22 Sep 2010 16:50:16 +0200 Subject: memo: implemented clipboard support with default popup menu support. --- src/gui/fpg_edit.pas | 2 +- src/gui/fpg_memo.pas | 323 +++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 274 insertions(+), 51 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_edit.pas b/src/gui/fpg_edit.pas index 5dd25fb0..ea6fe1b2 100644 --- a/src/gui/fpg_edit.pas +++ b/src/gui/fpg_edit.pas @@ -1178,7 +1178,7 @@ procedure TfpgBaseEdit.DefaultPopupPaste(Sender: TObject); begin if ReadOnly then Exit; - PasteFromClipboard + PasteFromClipboard; end; procedure TfpgBaseEdit.DefaultPopupClearAll(Sender: TObject); diff --git a/src/gui/fpg_memo.pas b/src/gui/fpg_memo.pas index 37f21a42..b3c34513 100644 --- a/src/gui/fpg_memo.pas +++ b/src/gui/fpg_memo.pas @@ -60,12 +60,14 @@ type FWrapping: boolean; FLongestLineWidth: TfpgCoord; FPopupMenu: TfpgPopupMenu; + FDefaultPopupMenu: TfpgPopupMenu; + FReadOnly: Boolean; function GetFontDesc: string; procedure SetFontDesc(const AValue: string); procedure RecalcLongestLine; procedure DeleteSelection; procedure DoCopy; - procedure DoPaste; + procedure DoPaste(const AText: TfpgString); procedure AdjustCursor; function LineCount: integer; function GetLineText(linenum: integer): string; @@ -81,10 +83,20 @@ type function GetText: TfpgString; procedure SetCursorLine(aValue: integer); procedure UpdateScrollBarCoords; + procedure DefaultPopupCut(Sender: TObject); + procedure DefaultPopupCopy(Sender: TObject); + procedure DefaultPopupPaste(Sender: TObject); + procedure DefaultPopupClearAll(Sender: TObject); + procedure DefaultPopupInsertFromCharmap(Sender: TObject); + procedure SetDefaultPopupMenuItemsState; + procedure ShowDefaultPopupMenu(const x, y: integer; const shiftstate: TShiftState); virtual; + procedure SetReadOnly(const AValue: Boolean); + procedure ResetSelectionVariables; protected procedure HandleKeyChar(var AText: TfpgChar; var shiftstate: TShiftState; var consumed: boolean); override; procedure HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); override; procedure HandleLMouseDown(x, y: integer; shiftstate: TShiftState); override; + procedure HandleRMouseDown(x, y: integer; shiftstate: TShiftState); override; procedure HandleRMouseUp(x, y: integer; shiftstate: TShiftState); override; procedure HandleMouseMove(x, y: integer; btnstate: word; shiftstate: TShiftState); override; procedure HandleResize(dwidth, dheight: integer); override; @@ -99,6 +111,10 @@ type destructor Destroy; override; procedure UpdateScrollBars; function SelectionText: string; + procedure CopyToClipboard; + procedure CutToClipboard; + procedure PasteFromClipboard; + procedure Clear; property CursorLine: integer read FCursorLine write SetCursorLine; property Font: TfpgFont read FFont; property LineHeight: integer read FLineHeight; @@ -113,6 +129,7 @@ type property Hint; property Lines: TStringList read FLines; property ParentShowHint; + property ReadOnly: Boolean read FReadOnly write SetReadOnly default False; property ShowHint; property TabOrder; property TextColor; @@ -130,7 +147,19 @@ function CreateMemo(AOwner: TComponent; x, y, w, h: TfpgCoord): TfpgMemo; implementation uses - fpg_stringutils; + fpg_stringutils + ,fpg_constants + ,fpg_dialogs + ; + +const + // internal popupmenu item names + ipmCut = 'miDefaultCut'; + ipmCopy = 'miDefaultCopy'; + ipmPaste = 'miDefaultPaste'; + ipmClearAll = 'miDefaultClearAll'; + ipmCharmap = 'miDefaultCharmap'; + type // custom stringlist that will notify the memo of item changes @@ -280,6 +309,128 @@ begin FHScrollBar.UpdateWindowPosition; end; +procedure TfpgMemo.DefaultPopupCut(Sender: TObject); +begin + if ReadOnly then + Exit; + CutToClipboard; +end; + +procedure TfpgMemo.DefaultPopupCopy(Sender: TObject); +begin + if ReadOnly then + Exit; + CopyToClipboard; +end; + +procedure TfpgMemo.DefaultPopupPaste(Sender: TObject); +begin + if ReadOnly then + Exit; + PasteFromClipboard; +end; + +procedure TfpgMemo.DefaultPopupClearAll(Sender: TObject); +begin + if ReadOnly then + Exit; + Clear; +end; + +procedure TfpgMemo.DefaultPopupInsertFromCharmap(Sender: TObject); +var + s: TfpgString; +begin + if ReadOnly then + Exit; + s := fpgShowCharMap; + if s <> '' then + DoPaste(s); +end; + +procedure TfpgMemo.SetDefaultPopupMenuItemsState; +var + i: integer; + itm: TfpgMenuItem; + + function SomethingSelected: boolean; + var + selsl: integer; + selsp: integer; + selel: integer; + selep: integer; + begin + Result := FSelecting; + //Result := (FSelStartPos <> FCursorPos) + // and (FSelEndPos <> 0) + // and (FSelStartLine <> -1) + // and (FSelEndLine <> -1); + end; + +begin + for i := 0 to FDefaultPopupMenu.ComponentCount-1 do + begin + if FDefaultPopupMenu.Components[i] is TfpgMenuItem then + begin + itm := TfpgMenuItem(FDefaultPopupMenu.Components[i]); + // enabled/disable menu items + if itm.Name = ipmCut then + itm.Enabled := (not ReadOnly) and SomethingSelected + else if itm.Name = ipmCopy then + itm.Enabled := SomethingSelected + else if itm.Name = ipmPaste then + itm.Enabled := (not ReadOnly) and (fpgClipboard.Text <> '') + else if itm.Name = ipmClearAll then + itm.Enabled := (not ReadOnly) and (Text <> '') + else if itm.Name = ipmCharmap then + itm.Enabled := (not ReadOnly); + end; + end; +end; + +procedure TfpgMemo.ShowDefaultPopupMenu(const x, y: integer; + const shiftstate: TShiftState); +var + itm: TfpgMenuItem; +begin + if not Assigned(FDefaultPopupMenu) then + begin + FDefaultPopupMenu := TfpgPopupMenu.Create(nil); + itm := FDefaultPopupMenu.AddMenuItem(rsCut, '', @DefaultPopupCut); + itm.Name := ipmCut; + itm := FDefaultPopupMenu.AddMenuItem(rsCopy, '', @DefaultPopupCopy); + itm.Name := ipmCopy; + itm := FDefaultPopupMenu.AddMenuItem(rsPaste, '', @DefaultPopupPaste); + itm.Name := ipmPaste; + itm := FDefaultPopupMenu.AddMenuItem(rsDelete, '', @DefaultPopupClearAll); + itm.Name := ipmClearAll; + itm := FDefaultPopupMenu.AddMenuItem('-', '', nil); + itm.Name := 'N1'; + itm := FDefaultPopupMenu.AddMenuItem(rsInsertFromCharacterMap, '', @DefaultPopupInsertFromCharmap); + itm.Name := ipmCharmap; + end; + + SetDefaultPopupMenuItemsState; + FDefaultPopupMenu.ShowAt(self, x, y); +end; + +procedure TfpgMemo.SetReadOnly(const AValue: Boolean); +begin + if FReadOnly = AValue then exit; + FReadOnly := AValue; + RePaint; +end; + +procedure TfpgMemo.ResetSelectionVariables; +begin + FSelecting := False; + FSelStartPos := FCursorPos; + FSelEndPos := 0; + FSelStartLine := -1; + FSelEndLine := -1; + FMouseDragging := False; +end; + constructor TfpgMemo.Create(AOwner: TComponent); begin inherited Create(AOwner); @@ -288,7 +439,6 @@ begin FHeight := FFont.Height * 3 + 4; FWidth := 120; FLineHeight := FFont.Height + 2; - FSelecting := False; FSideMargin := 3; FMaxLength := 0; FWrapping := False; @@ -299,19 +449,17 @@ begin FTabWidth := 4; FMinWidth := 20; FMinHeight := 30; + FPopupMenu := nil; + FDefaultPopupMenu := nil; + FReadOnly := False; FLines := TfpgMemoStrings.Create(self); FFirstLine := 0; FCursorLine := 0; - FCursorPos := 0; - FSelStartPos := FCursorPos; - FSelEndPos := 0; - FSelStartLine := -1; - FSelEndLine := -1; + ResetSelectionVariables; FDrawOffset := 0; - FMouseDragging := False; FVScrollBar := TfpgScrollBar.Create(self); FVScrollBar.Orientation := orVertical; @@ -327,6 +475,8 @@ end; destructor TfpgMemo.Destroy; begin + if Assigned(FDefaultPopupMenu) then + FDefaultPopupMenu.Free; TfpgMemoStrings(FLines).Free; FFont.Free; inherited Destroy; @@ -362,6 +512,8 @@ var len: integer; st: integer; begin + if ReadOnly then + Exit; if FSelEndLine < 0 then Exit; @@ -410,6 +562,9 @@ begin FCursorPos := selsp; FCursorLine := selsl; + FSelStartPos := FCursorPos; + FSelEndPos := FCursorPos; + FSelStartLine := selsl; FSelEndLine := -1; end; @@ -465,29 +620,31 @@ begin s := s + UTF8Copy(ls, st + 1, len); end; - //SetClipboardText(s); + fpgClipboard.Text := s; end; -procedure TfpgMemo.DoPaste; -{ +procedure TfpgMemo.DoPaste(const AText: TfpgString); var - s: string; - si: string; - si8: string; - lineend: string; + s: TfpgString; + si: TfpgString; { beginning of line to cursor } + si8: TfpgString; + lineend: TfpgString; { from cursor to end of line } n: integer; l: integer; lcnt: integer; -} begin - Exit; - (* + if ReadOnly then + Exit; DeleteSelection; - s := GetClipboardText; + s := AText; si := UTF8Copy(CurrentLine,1,FCursorPos); lineend := UTF8Copy(CurrentLine,FCursorPos+1, UTF8Length(CurrentLine)); - l := FCursorLine; + if FCursorLine = -1 then { first time in, FLines has no data yet } + l := 0 + else + l := FCursorLine; + n := 1; lcnt := 0; si8 := ''; @@ -495,8 +652,10 @@ begin begin if (s[n] = #13) or (s[n] = #10) then begin - if lcnt = 0 then SetLineText(l, si + si8) - else FLines.Insert(l-1, si + si8); + if lcnt = 0 then + SetLineText(l, si + si8) + else + FLines.Insert(l-1, si + si8); si := ''; si8 := ''; @@ -516,6 +675,8 @@ begin si := si + si8; FCursorPos := UTF8Length(si); + FSelStartPos := FCursorPos; + FSelEndPos := FCursorPos; si := si + lineend; if lcnt = 0 then @@ -524,13 +685,16 @@ begin end else begin - FLines.Insert(l-1, si); + FLines.Insert(l, si); FCursorLine := l; end; + FSelStartLine := FCursorLine; + FSelEndLine := -1; + AdjustCursor; Repaint; -*) + FSelecting := False; end; procedure TfpgMemo.AdjustCursor; @@ -783,7 +947,7 @@ begin InflateRect(r, -2, -2); Canvas.SetClipRect(r); - if Enabled then + if Enabled and not ReadOnly then Canvas.SetColor(FBackgroundColor) else Canvas.SetColor(clWindowBackground); @@ -895,31 +1059,35 @@ begin prevval := Text; s := AText; - // Printable characters only - // Note: This is now UTF-8 compliant! - if (Ord(AText[1]) > 31) and (Ord(AText[1]) < 127) or (Length(AText) > 1) then + if (not consumed) and (not ReadOnly) then begin - if (FMaxLength <= 0) or (UTF8Length(FLines.Text) < FMaxLength) then + // Printable characters only + // Note: This is now UTF-8 compliant! + if (Ord(AText[1]) > 31) and (Ord(AText[1]) < 127) or (Length(AText) > 1) then begin - if FCursorLine < 0 then - FCursorLine := 0; - DeleteSelection; - ls := GetLineText(FCursorLine); - UTF8Insert(s, ls, FCursorPos + 1); - SetLineText(FCursorLine, ls); - Inc(FCursorPos); - FSelStartPos := FCursorPos; - FSelStartLine := FCursorLine; - FSelEndLine := -1; - AdjustCursor; + if (FMaxLength <= 0) or (UTF8Length(FLines.Text) < FMaxLength) then + begin + if FCursorLine < 0 then + FCursorLine := 0; + DeleteSelection; + ls := GetLineText(FCursorLine); + UTF8Insert(s, ls, FCursorPos + 1); + SetLineText(FCursorLine, ls); + Inc(FCursorPos); + FSelStartPos := FCursorPos; + FSelStartLine := FCursorLine; + FSelEndLine := -1; + AdjustCursor; + end; + + consumed := True; end; - consumed := True; + if prevval <> Text then + if Assigned(FOnChange) then + FOnChange(self); end; - if prevval <> Text then - if Assigned(FOnChange) then - FOnChange(self); if consumed then RePaint; @@ -941,6 +1109,7 @@ var end; begin + fpgApplication.HideHint; Consumed := True; hasChanged := False; case CheckClipBoardKey(keycode, shiftstate) of @@ -950,14 +1119,19 @@ begin end; ckPaste: begin - DoPaste; - hasChanged := True; + DoPaste(fpgClipboard.Text); + if not ReadOnly then + hasChanged := True; end; ckCut: begin DoCopy; DeleteSelection; - hasChanged := True; + if not ReadOnly then + begin + AdjustCursor; + hasChanged := True; + end; end; else Consumed := False; @@ -1078,7 +1252,7 @@ begin end; end; - if not Consumed then + if (not Consumed) and (not ReadOnly) then begin consumed := True; @@ -1190,6 +1364,7 @@ var ls: string; begin inherited HandleLMouseDown(x, y, shiftstate); + ResetSelectionVariables; // searching the appropriate character position lnum := FFirstLine + (y - FSideMargin) div LineHeight; @@ -1219,9 +1394,11 @@ begin begin FSelEndLine := lnum; FSelEndpos := cp; + FSelecting := True; end else begin + FSelecting := False; FSelStartLine := lnum; FSelStartPos := cp; FSelEndLine := -1; @@ -1229,11 +1406,22 @@ begin Repaint; end; +procedure TfpgMemo.HandleRMouseDown(x, y: integer; shiftstate: TShiftState); +begin + // keyMenu was pressed + if shiftstate = [ssExtra1] then + HandleRMouseUp(x, y, []) + else + inherited HandleRMouseDown(x, y, shiftstate); +end; + procedure TfpgMemo.HandleRMouseUp(x, y: integer; shiftstate: TShiftState); begin inherited HandleRMouseUp(x, y, shiftstate); if Assigned(PopupMenu) then - PopupMenu.ShowAt(self, x, y); + PopupMenu.ShowAt(self, x, y) + else + ShowDefaultPopupMenu(x, y, ShiftState); end; procedure TfpgMemo.HandleMouseMove(x, y: integer; btnstate: word; shiftstate: TShiftState); @@ -1276,6 +1464,7 @@ begin FSelEndLine := lnum; FSelEndPos := cp; FCursorPos := cp; + FSelecting := True; Repaint; end; @@ -1415,6 +1604,40 @@ begin Result := ''; end; +procedure TfpgMemo.CopyToClipboard; +begin + DoCopy; +end; + +procedure TfpgMemo.CutToClipboard; +begin + DoCopy; + DeleteSelection; + AdjustCursor; + RePaint; +end; + +procedure TfpgMemo.PasteFromClipboard; +begin + DoPaste(fpgClipboard.Text); +end; + +procedure TfpgMemo.Clear; +begin + FLines.Clear; + { not sure if all of these are required } + FFirstLine := 0; + FCursorLine := 0; + FCursorPos := 0; + FSelStartPos := FCursorPos; + FSelEndPos := 0; + FSelStartLine := -1; + FSelEndLine := -1; + FDrawOffset := 0; + + Repaint; +end; + function TfpgMemo.GetText: TfpgString; var n: integer; -- cgit v1.2.3-70-g09d2 From 3a6ee1212cc7a5119eeb9687ad295a50fffaebdd Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 23 Sep 2010 10:21:56 +0200 Subject: memo: Implemented SelectionText() function. Also improved DoCopy to rather use SelectionText instead of duplicating code. --- src/gui/fpg_memo.pas | 109 ++++++++++++++++++++++----------------------------- 1 file changed, 47 insertions(+), 62 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_memo.pas b/src/gui/fpg_memo.pas index b3c34513..994959e7 100644 --- a/src/gui/fpg_memo.pas +++ b/src/gui/fpg_memo.pas @@ -110,7 +110,7 @@ type constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure UpdateScrollBars; - function SelectionText: string; + function SelectionText: TfpgString; procedure CopyToClipboard; procedure CutToClipboard; procedure PasteFromClipboard; @@ -569,58 +569,11 @@ begin end; procedure TfpgMemo.DoCopy; -var - n: integer; - selsl: integer; - selsp: integer; - selel: integer; - selep: integer; - ls: string; - len: integer; - st: integer; - s: string; begin if FSelEndLine < 0 then Exit; - if (FSelStartLine shl 16) + FSelStartPos <= (FSelEndLine shl 16) + FSelEndPos then - begin - selsl := FSelStartLine; - selsp := FSelStartPos; - selel := FSelEndLine; - selep := FSelEndPos; - end - else - begin - selel := FSelStartLine; - selep := FSelStartPos; - selsl := FSelEndLine; - selsp := FSelEndPos; - end; - - s := ''; - - for n := selsl to selel do - begin - if n > selsl then - s := s + #13#10; - - ls := GetLineText(n); - - if selsl < n then - st := 0 - else - st := selsp; - - if selel > n then - len := UTF8Length(ls) - else - len := selep - st; - - s := s + UTF8Copy(ls, st + 1, len); - end; - - fpgClipboard.Text := s; + fpgClipboard.Text := SelectionText; end; procedure TfpgMemo.DoPaste(const AText: TfpgString); @@ -1585,23 +1538,55 @@ begin end; end; -function TfpgMemo.SelectionText: string; +function TfpgMemo.SelectionText: TfpgString; +var + n: integer; + selsl: integer; + selsp: integer; + selel: integer; + selep: integer; + ls: string; + len: integer; + st: integer; + s: TfpgString; begin - { - if FSelOffset <> 0 then + if (FSelStartLine shl 16) + FSelStartPos <= (FSelEndLine shl 16) + FSelEndPos then begin - if FSelOffset < 0 then - begin - Result := Copy(FText,1+FSelStart + FSelOffset,-FSelOffset); - end - else - begin - result := Copy(FText,1+FSelStart,FSelOffset); - end; + selsl := FSelStartLine; + selsp := FSelStartPos; + selel := FSelEndLine; + selep := FSelEndPos; end else -} - Result := ''; + begin + selel := FSelStartLine; + selep := FSelStartPos; + selsl := FSelEndLine; + selsp := FSelEndPos; + end; + + s := ''; + for n := selsl to selel do + begin + if n > selsl then + s := s + LineEnding; + + ls := GetLineText(n); + + if selsl < n then + st := 0 + else + st := selsp; + + if selel > n then + len := UTF8Length(ls) + else + len := selep - st; + + s := s + UTF8Copy(ls, st + 1, len); + end; + + Result := s; end; procedure TfpgMemo.CopyToClipboard; -- cgit v1.2.3-70-g09d2 From d2539f25a961e163385b39d4825126e9bd342474 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 23 Sep 2010 10:24:31 +0200 Subject: memo: minor optimization - SomethingSelected is only called once now. --- src/gui/fpg_memo.pas | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_memo.pas b/src/gui/fpg_memo.pas index 994959e7..7818ff41 100644 --- a/src/gui/fpg_memo.pas +++ b/src/gui/fpg_memo.pas @@ -352,22 +352,15 @@ procedure TfpgMemo.SetDefaultPopupMenuItemsState; var i: integer; itm: TfpgMenuItem; + b: boolean; function SomethingSelected: boolean; - var - selsl: integer; - selsp: integer; - selel: integer; - selep: integer; begin - Result := FSelecting; - //Result := (FSelStartPos <> FCursorPos) - // and (FSelEndPos <> 0) - // and (FSelStartLine <> -1) - // and (FSelEndLine <> -1); + Result := SelectionText <> ''; end; begin + b := SomethingSelected; for i := 0 to FDefaultPopupMenu.ComponentCount-1 do begin if FDefaultPopupMenu.Components[i] is TfpgMenuItem then @@ -375,9 +368,9 @@ begin itm := TfpgMenuItem(FDefaultPopupMenu.Components[i]); // enabled/disable menu items if itm.Name = ipmCut then - itm.Enabled := (not ReadOnly) and SomethingSelected + itm.Enabled := (not ReadOnly) and b else if itm.Name = ipmCopy then - itm.Enabled := SomethingSelected + itm.Enabled := b else if itm.Name = ipmPaste then itm.Enabled := (not ReadOnly) and (fpgClipboard.Text <> '') else if itm.Name = ipmClearAll then -- cgit v1.2.3-70-g09d2 From db522e57d932fbecfaecea50573cee60b484a99d Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 23 Sep 2010 10:25:10 +0200 Subject: memo: ResetSelectionVariables was incomplete. --- src/gui/fpg_memo.pas | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_memo.pas b/src/gui/fpg_memo.pas index 7818ff41..a3590e56 100644 --- a/src/gui/fpg_memo.pas +++ b/src/gui/fpg_memo.pas @@ -418,9 +418,9 @@ procedure TfpgMemo.ResetSelectionVariables; begin FSelecting := False; FSelStartPos := FCursorPos; - FSelEndPos := 0; - FSelStartLine := -1; - FSelEndLine := -1; + FSelEndPos := FCursorPos; + FSelStartLine := FCursorLine; + FSelEndLine := FCursorLine; FMouseDragging := False; end; -- cgit v1.2.3-70-g09d2 From 5ba401caa1b47e483410b1d8f605a816e269eedc Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 23 Sep 2010 10:26:18 +0200 Subject: memo: Paste bugfix. Pasting text that consisted of multiple lines wasn't inserted on the correct lines. Resulting in pasted lines being in reverse order. --- src/gui/fpg_memo.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_memo.pas b/src/gui/fpg_memo.pas index a3590e56..6e2f99dd 100644 --- a/src/gui/fpg_memo.pas +++ b/src/gui/fpg_memo.pas @@ -601,7 +601,7 @@ begin if lcnt = 0 then SetLineText(l, si + si8) else - FLines.Insert(l-1, si + si8); + FLines.Insert(l, si + si8); si := ''; si8 := ''; -- cgit v1.2.3-70-g09d2 From 4aba07231dece94aa3059b6612a62340bdceb719 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 23 Sep 2010 10:27:18 +0200 Subject: memo: reduced code by simply using ResetSelectionVariables() instead. --- src/gui/fpg_memo.pas | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_memo.pas b/src/gui/fpg_memo.pas index 6e2f99dd..23fb6d6f 100644 --- a/src/gui/fpg_memo.pas +++ b/src/gui/fpg_memo.pas @@ -621,8 +621,6 @@ begin si := si + si8; FCursorPos := UTF8Length(si); - FSelStartPos := FCursorPos; - FSelEndPos := FCursorPos; si := si + lineend; if lcnt = 0 then @@ -635,12 +633,9 @@ begin FCursorLine := l; end; - FSelStartLine := FCursorLine; - FSelEndLine := -1; - AdjustCursor; + ResetSelectionVariables; Repaint; - FSelecting := False; end; procedure TfpgMemo.AdjustCursor; @@ -1046,14 +1041,6 @@ var ls: string; ls2: string; hasChanged: boolean; - - procedure StopSelection; - begin - FSelStartLine := FCursorLine; - FSelStartPos := FCursorPos; - FSelEndLine := -1; - end; - begin fpgApplication.HideHint; Consumed := True; @@ -1094,7 +1081,6 @@ begin if FCursorPos > 0 then begin Dec(FCursorPos); - if (ssCtrl in shiftstate) then // word search... (* @@ -1104,14 +1090,12 @@ begin while (FCursorPos > 0) and pgfIsAlphaNum(copy(CurrentLine,FCursorPos,1)) do Dec(FCursorPos); *); - end;// left keyRight: if FCursorPos < UTF8Length(CurrentLine) then begin Inc(FCursorPos); - if (ssCtrl in shiftstate) then // word search... (* @@ -1121,7 +1105,6 @@ begin while (FCursorPos < length(CurrentLine)) and not pgfIsAlphaNum(copy(CurrentLine,FCursorPos+1,1)) do Inc(FCursorPos); *); - end;// right keyUp: @@ -1194,7 +1177,7 @@ begin FSelEndLine := FCursorLine; end else - StopSelection; + ResetSelectionVariables; end; end; @@ -1285,8 +1268,8 @@ begin if Consumed then begin - StopSelection; AdjustCursor; + ResetSelectionVariables; end; end; -- cgit v1.2.3-70-g09d2 From 083274be42b205136eb267daeae556bb1be49f96 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 23 Sep 2010 10:30:36 +0200 Subject: memo: forgot to reset selection variables after a clipboard Cut action. --- src/gui/fpg_memo.pas | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/gui/fpg_memo.pas b/src/gui/fpg_memo.pas index 23fb6d6f..acdf2f13 100644 --- a/src/gui/fpg_memo.pas +++ b/src/gui/fpg_memo.pas @@ -1575,6 +1575,7 @@ begin DoCopy; DeleteSelection; AdjustCursor; + ResetSelectionVariables; RePaint; end; -- cgit v1.2.3-70-g09d2 From 288b1e90830a4398302d595456dfd4fa63d8f204 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 13 Sep 2010 16:59:53 +0200 Subject: New types and message constants for DND support. Also includes an abstract method that must be implemented by each backend to enabled DND for components or forms. --- src/corelib/fpg_base.pas | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index 7ae4bb8b..ba73bdf3 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -70,6 +70,9 @@ type TfpgModalResult = (mrNone, mrOK, mrCancel, mrYes, mrNo, mrAbort, mrRetry, mrIgnore, mrAll, mrNoToAll, mrYesToAll); + TfpgDragAction = (daCopy, daMove, daLink); + TfpgDragActions = set of TfpgDragAction; + const MOUSE_LEFT = 1; MOUSE_RIGHT = 3; @@ -95,6 +98,8 @@ const FPGM_POPUPCLOSE = 17; FPGM_HINTTIMER = 18; FPGM_FREEME = 19; + FPGM_DROPACTIVE = 20; + FPGM_DROPINACTIVE = 21; FPGM_USER = 50000; FPGM_KILLME = MaxInt; @@ -439,6 +444,7 @@ type function DoWindowToScreen(ASource: TfpgWindowBase; const AScreenPos: TPoint): TPoint; virtual; abstract; procedure DoSetWindowTitle(const ATitle: string); virtual; abstract; procedure DoSetMouseCursor; virtual; abstract; + procedure DoEnableDrops(const AValue: boolean); virtual; abstract; procedure SetParent(const AValue: TfpgWindowBase); virtual; function GetParent: TfpgWindowBase; virtual; function GetCanvas: TfpgCanvasBase; virtual; @@ -980,11 +986,15 @@ begin GetPropList(Obj.ClassInfo, tkPropsWithDefault, PropInfos); { Loop through all the selected properties } for Loop := 0 to Count - 1 do + begin with PropInfos^[Loop]^ do + begin { If there is supposed to be a default value... } if Default <> NoDefault then { ...then jolly well set it } SetOrdProp(Obj, PropInfos^[Loop], Default) + end; + end; finally FreeMem(PropInfos, Count * SizeOf(PPropInfo)); end; @@ -2689,6 +2699,7 @@ begin inherited Create(AOwner); FHelpType := htKeyword; FHelpContext := 0; + FHelpKeyword := ''; FTagPointer := nil; end; -- cgit v1.2.3-70-g09d2 From b28c7e171686534db28e13355431d61d95b35dde Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 13 Sep 2010 17:08:59 +0200 Subject: Implemented abstract DoEnableDrops() method. Also defined a few new types and TAtoms we will need for XDND support. --- src/corelib/x11/fpg_x11.pas | 88 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 80 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index b6fbd3a6..3c11ca64 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -205,6 +205,8 @@ type TfpgX11Window = class(TfpgWindowBase) + private + QueueEnabledDrops: boolean; protected FWinFlags: TXWindowStateFlags; FWinHandle: TfpgWinHandle; @@ -220,6 +222,7 @@ type function DoWindowToScreen(ASource: TfpgWindowBase; const AScreenPos: TPoint): TPoint; override; procedure DoUpdateWindowPosition; override; procedure DoSetMouseCursor; override; + procedure DoEnableDrops(const AValue: boolean); override; property WinHandle: TfpgWinHandle read FWinHandle; public constructor Create(AOwner: TComponent); override; @@ -235,9 +238,27 @@ type FComposeBuffer: TfpgString; FComposeStatus: TStatus; FEventFilter: TX11EventFilter; + { all XDND atoms } + XdndAware: TAtom; + XdndTypeList: TAtom; + XdndSelection: TAtom; + { XDND client messages } + XdndEnter: TAtom; + XdndPosition: TAtom; + XdndStatus: TAtom; + XdndLeave: TAtom; + XdndDrop: TAtom; + XdndFinished: TAtom; + { XDND actions } + XdndActionCopy: TAtom; + XdndActionMove: TAtom; + XdndActionLink: TAtom; + XdndActionAsk: TAtom; + XdndActionPrivate: TAtom; function ConvertShiftState(AState: Cardinal): TShiftState; function KeySymToKeycode(KeySym: TKeySym): Word; function StartComposing(const Event: TXEvent): TKeySym; + procedure XdndInit; protected FDisplay: PXDisplay; DisplayDepth: integer; @@ -251,8 +272,9 @@ type xia_motif_wm_hints: TAtom; xia_wm_protocols: TAtom; xia_wm_delete_window: TAtom; - netlayer: TNETWindowLayer; + xia_wm_state: TAtom; xia_targets: TAtom; + netlayer: TNETWindowLayer; InputMethod: PXIM; InputContext: PXIC; FLastKeySym: TKeySym; // Used for KeyRelease event @@ -313,9 +335,18 @@ uses cursorfont, xatom; // used for XA_WM_NAME +type + TAtomArray = array [0..0] of TAtom; + PAtomArray = ^TAtomArray; + + TWindowArray = array [0..0] of TWindow; + PWindowArray = ^TWindowArray; + var xapplication: TfpgApplication; +const + FPG_XDND_VERSION: integer = 4; // our supported XDND version // some externals @@ -688,6 +719,28 @@ begin Length(FComposeBuffer), @Result, @FComposeStatus); end; +procedure TfpgX11Application.XdndInit; +begin + XdndAware := XInternAtom(FDisplay, 'XdndAware', False); + XdndTypeList := XInternAtom(FDisplay, 'XdndTypeList', False); + XdndSelection := XInternAtom(FDisplay, 'XdndSelection', False); + + // client messages + XdndEnter := XInternAtom(FDisplay, 'XdndEnter', False); + XdndPosition := XInternAtom(FDisplay, 'XdndPosition', False); + XdndStatus := XInternAtom(FDisplay, 'XdndStatus', False); + XdndLeave := XInternAtom(FDisplay, 'XdndLeave', False); + XdndDrop := XInternAtom(FDisplay, 'XdndDrop', False); + XdndFinished := XInternAtom(FDisplay, 'XdndFinished', False); + + // actions + XdndActionCopy := XInternAtom(FDisplay, 'XdndActionCopy', False); + XdndActionMove := XInternAtom(FDisplay, 'XdndActionMove', False); + XdndActionLink := XInternAtom(FDisplay, 'XdndActionLink', False); + XdndActionAsk := XInternAtom(FDisplay, 'XdndActionAsk', False); + XdndActionPrivate := XInternAtom(FDisplay, 'XdndActionPrivate', False); +end; + function TfpgX11Application.DoGetFontFaceList: TStringList; var pfs: PFcFontSet; @@ -743,11 +796,15 @@ begin DefaultColorMap := XDefaultColorMap(FDisplay, DefaultScreen); // Initialize atoms - xia_clipboard := XInternAtom(FDisplay, 'CLIPBOARD', longbool(0)); - xia_targets := XInternAtom(FDisplay, 'TARGETS', longbool(0)); - xia_motif_wm_hints := XInternAtom(FDisplay, '_MOTIF_WM_HINTS', longbool(0)); - xia_wm_protocols := XInternAtom(FDisplay, 'WM_PROTOCOLS', longbool(0)); - xia_wm_delete_window := XInternAtom(FDisplay, 'WM_DELETE_WINDOW', longbool(0)); + xia_clipboard := XInternAtom(FDisplay, 'CLIPBOARD', TBool(False)); + xia_targets := XInternAtom(FDisplay, 'TARGETS', TBool(False)); + xia_motif_wm_hints := XInternAtom(FDisplay, '_MOTIF_WM_HINTS', TBool(False)); + xia_wm_protocols := XInternAtom(FDisplay, 'WM_PROTOCOLS', TBool(False)); + xia_wm_delete_window := XInternAtom(FDisplay, 'WM_DELETE_WINDOW', TBool(False)); + xia_wm_state := XInternAtom(FDisplay, 'WM_STATE', TBool(False)); + + { initializa the XDND atoms } + XdndInit; netlayer := TNETWindowLayer.Create(FDisplay); @@ -893,7 +950,7 @@ var procedure ReportLostWindow(const event: TXEvent); begin {$IFDEF DEBUG} - writeln('fpGFX/X11: ', GetXEventName(event._type), ' can''t find <', + writeln('fpGUI/X11: ', GetXEventName(event._type), ' can''t find <', IntToHex(event.xany.window, 9), '>'); {$ENDIF} end; @@ -1163,7 +1220,7 @@ begin end; end; - // message blockings for modal windows + { one use is for message blockings for modal windows, or XDND etc. } X.ClientMessage: begin w := FindWindowByBackupHandle(ev.xclient.window); @@ -1656,6 +1713,20 @@ begin FMouseCursorIsDirty := False; end; +procedure TfpgX11Window.DoEnableDrops(const AValue: boolean); +begin + // notify XDND protocol that we can handle DND + if AValue then + begin + if HasHandle then + XChangeProperty(xapplication.Display, WinHandle, xapplication.XdndAware, XA_ATOM, 32, PropModeReplace, @FPG_XDND_VERSION, 1) + else + QueueEnabledDrops := True; // we need to do this once we have a winhandle + end + else + XDeleteProperty(xapplication.Display, WinHandle, xapplication.XdndAware); +end; + procedure TfpgX11Window.DoSetWindowTitle(const ATitle: string); var tp: TXTextProperty; @@ -1681,6 +1752,7 @@ begin inherited Create(AOwner); FWinHandle := 0; FBackupWinHandle := 0; + QueueEnabledDrops := False; end; procedure TfpgX11Window.ActivateWindow; -- cgit v1.2.3-70-g09d2 From 48e0a74aa9c2f732fc9a321823c365e3d7ae6b11 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 13 Sep 2010 17:10:30 +0200 Subject: Adds new boolean property AcceptDrops to TfpgWidget. This will enable/disable drop support per widget. --- src/corelib/fpg_widget.pas | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index 4e48aa75..589ab720 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -37,6 +37,7 @@ type TfpgWidget = class(TfpgWindow) private + FAcceptDrops: boolean; FAlignRect: TfpgRect; FOnClick: TNotifyEvent; FOnDoubleClick: TMouseButtonEvent; @@ -85,6 +86,7 @@ type FBackgroundColor: TfpgColor; FTextColor: TfpgColor; FIsContainer: Boolean; + procedure SetAcceptDrops(const AValue: boolean); virtual; function GetOnShowHint: THintEvent; virtual; procedure SetOnShowHint(const AValue: THintEvent); virtual; procedure SetBackgroundColor(const AValue: TfpgColor); virtual; @@ -151,6 +153,7 @@ type procedure Invalidate; // double check this works as developers expect???? property FormDesigner: TObject read FFormDesigner write SetFormDesigner; property Parent: TfpgWidget read GetParent write SetParent; + property AcceptDrops: boolean read FAcceptDrops write SetAcceptDrops; property ActiveWidget: TfpgWidget read FActiveWidget write SetActiveWidget; property IsContainer: Boolean read FIsContainer; property Visible: boolean read FVisible write SetVisible default True; @@ -233,6 +236,13 @@ begin FActiveWidget.HandleSetFocus; end; +procedure TfpgWidget.SetAcceptDrops(const AValue: boolean); +begin + if FAcceptDrops = AValue then + exit; + FAcceptDrops := AValue; +end; + function TfpgWidget.GetHint: TfpgString; begin Result := FHint; @@ -405,7 +415,8 @@ begin FShowHint := False; FParentShowHint := True; FBackgroundColor := clWindowBackground; - FTextColor := clText1; + FTextColor := clText1; + FAcceptDrops := False; inherited Create(AOwner); -- cgit v1.2.3-70-g09d2 From 7cf4dbd72681220a03eddef9feb6792f757c4648 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 11:14:08 +0200 Subject: Fix variable types for XGetWindowProperty calls. We must use C-types and not Pascal-types. --- src/corelib/x11/fpg_x11.pas | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 3c11ca64..ea69e5f3 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -537,9 +537,9 @@ end; procedure ProcessSelection(var ev: TXEvent); var s: string; - actual: TAtom; - format: integer; - count, remaining: longword; + actualformat: TAtom; + actualtype: cint; + count, remaining: culong; data: PChar; begin if ev.xselection._property > 0 then @@ -548,7 +548,7 @@ begin ev.xselection._property, 0, 16000, TBool(false), // delete 0, // type - @actual, @format, @count, @remaining, + @actualformat, @actualtype, @count, @remaining, @data); s := data; @@ -838,7 +838,7 @@ var rootw: TfpgWinHandle; parentw: TfpgWinHandle; childs: ^TfpgWinHandle; - cnum: longword; + cnum: cuint; begin childs := nil; if XQueryTree(xapplication.display, wh, @rootw, @parentw, @childs, @cnum) <> 0 then -- cgit v1.2.3-70-g09d2 From 7a2fa68530e488744b01cdf6bafb864786bb006d Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 11:14:52 +0200 Subject: adds new utility function fpgIsBitSet() to check if a specific Bit is set in a value. --- src/corelib/fpg_utils.pas | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_utils.pas b/src/corelib/fpg_utils.pas index 8e866922..a0509304 100644 --- a/src/corelib/fpg_utils.pas +++ b/src/corelib/fpg_utils.pas @@ -45,6 +45,7 @@ function fpgGetToolkitConfigDir: TfpgString; { This is so that when we support LTR and RTL languages, the colon will be added at the correct place. } function fpgAddColon(const AText: TfpgString): TfpgString; +function fpgIsBitSet(const AData: integer; const AIndex: integer): boolean; // RTL wrapper filesystem functions with platform independant encoding @@ -261,6 +262,11 @@ begin Result := AText + ':'; end; +function fpgIsBitSet(const AData: integer; const AIndex: integer): boolean; +begin + Result := (AData and (1 shl AIndex) <> 0); +end; + end. -- cgit v1.2.3-70-g09d2 From 7bb9a00e758c9a60acf35077a4537a3c07b29a53 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 11:17:56 +0200 Subject: Adds some application wide variables that we need for tracking XDND data. --- src/corelib/x11/fpg_x11.pas | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index ea69e5f3..e90b8395 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -28,6 +28,7 @@ interface uses Classes, SysUtils, + contnrs, X, Xlib, XUtil, @@ -238,6 +239,8 @@ type FComposeBuffer: TfpgString; FComposeStatus: TStatus; FEventFilter: TX11EventFilter; + { XDND type list received from Source window } + FDNDTypeList: TObjectList; { all XDND atoms } XdndAware: TAtom; XdndTypeList: TAtom; @@ -255,10 +258,18 @@ type XdndActionLink: TAtom; XdndActionAsk: TAtom; XdndActionPrivate: TAtom; + { XDND variables } + FActionType: TAtom; + FSrcWinHandle: TfpgWinHandle; + FDNDVersion: integer; + FDNDDataType: TAtom; + FSrcTimeStamp: clong; + FLastDropTarget: TfpgWinHandle; function ConvertShiftState(AState: Cardinal): TShiftState; function KeySymToKeycode(KeySym: TKeySym): Word; function StartComposing(const Event: TXEvent): TKeySym; procedure XdndInit; + procedure ResetDNDVariables; protected FDisplay: PXDisplay; DisplayDepth: integer; @@ -331,11 +342,19 @@ uses fpg_widget, fpg_popupwindow, fpg_stringutils, // used for GetTextWidth + fpg_utils, fpg_form, // for modal event support cursorfont, - xatom; // used for XA_WM_NAME + xatom, // used for XA_WM_NAME + math; type + TDNDSrcType = class(TObject) + public + Name: TfpgString; + ID: integer; + end; + TAtomArray = array [0..0] of TAtom; PAtomArray = ^TAtomArray; @@ -741,6 +760,20 @@ begin XdndActionPrivate := XInternAtom(FDisplay, 'XdndActionPrivate', False); end; +procedure TfpgX11Application.ResetDNDVariables; +var + msgp: TfpgMessageParams; +begin + if FLastDropTarget <> 0 then + begin + fillchar(msgp, sizeof(msgp), 0); + fpgPostMessage(nil, FindWindowByHandle(FLastDropTarget), FPGM_DROPINACTIVE, msgp); + end; + FDNDTypeList.Clear; + FActionType := 0; + FSrcWinHandle := -1 +end; + function TfpgX11Application.DoGetFontFaceList: TStringList; var pfs: PFcFontSet; @@ -804,6 +837,7 @@ begin xia_wm_state := XInternAtom(FDisplay, 'WM_STATE', TBool(False)); { initializa the XDND atoms } + FDNDTypeList := TObjectList.Create; XdndInit; netlayer := TNETWindowLayer.Create(FDisplay); @@ -824,7 +858,7 @@ destructor TfpgX11Application.Destroy; begin netlayer.Free; XCloseDisplay(FDisplay); - + FDNDTypeList.Free; inherited Destroy; end; -- cgit v1.2.3-70-g09d2 From c932356e64eee5c8d0ab8d85c8a6240b4c6c9866 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 11:23:46 +0200 Subject: X11: adds HandleDNDposition() for processing XdndPosition messages. --- src/corelib/x11/fpg_x11.pas | 82 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index e90b8395..df507a48 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -270,6 +270,7 @@ type function StartComposing(const Event: TXEvent): TKeySym; procedure XdndInit; procedure ResetDNDVariables; + procedure HandleDNDposition(ATopLevelWindow: TfpgX11Window; ASource: TWindow; x_root: integer; y_root: integer; AAction: TAtom; ATimestamp: x.TTime); protected FDisplay: PXDisplay; DisplayDepth: integer; @@ -774,6 +775,87 @@ begin FSrcWinHandle := -1 end; +procedure TfpgX11Application.HandleDNDposition(ATopLevelWindow: TfpgX11Window; ASource: TWindow; x_root: integer; + y_root: integer; AAction: TAtom; ATimestamp: x.TTime); +var + Msg: TXEvent; + dx, dy: cint; + child: TWindow; + s: string; + lTargetWinHandle: TWindow; + w: TfpgX11Window; + lAccept: clong = 0; + msgp: TfpgMessageParams; +begin + FSrcWinHandle := ASource; + FActionType := AAction; + FSrcTimeStamp := ATimeStamp; + lTargetWinHandle := ATopLevelWindow.WinHandle; + if ATopLevelWindow is TfpgWidget then // TODO: We could use Interfaces here eg: IDragDropEnabled + if TfpgWidget(ATopLevelWindow).AcceptDrops then + lAccept := 1; + + // query to see if we accept to be drop target + XTranslateCoordinates(FDisplay, XDefaultRootWindow(FDisplay), ATopLevelWindow.WinHandle, + x_root, y_root, @dx, @dy, @child); + + if child <> 0 then + begin + w := FindWindowByHandle(child); + if Assigned(w) then + begin + lTargetWinHandle := w.WinHandle; + if w is TfpgWidget then // TODO: We could use Interfaces here eg: IDragDropEnabled + begin + if FLastDropTarget <> lTargetWinHandle then + begin + fillchar(msgp, sizeof(msgp), 0); + fpgPostMessage(nil, FindWindowByHandle(FLastDropTarget), FPGM_DROPINACTIVE, msgp); + end; + FLastDropTarget := lTargetWinHandle; + if TfpgWidget(w).AcceptDrops then + begin + lAccept := 1; + fillchar(msgp, sizeof(msgp), 0); + msgp.mouse.x := dx; + msgp.mouse.y := dy; + fpgPostMessage(nil, w, FPGM_DROPACTIVE, msgp); + end; + end; + end; + end + else + begin + if FLastDropTarget <> lTargetWinHandle then + begin + fillchar(msgp, sizeof(msgp), 0); + fpgPostMessage(nil, FindWindowByHandle(FLastDropTarget), FPGM_DROPINACTIVE, msgp); + end; + FLastDropTarget := lTargetWinHandle; + end; + + + // send message to confirm drop will be accepted in specified rectangle + FillChar(Msg, SizeOf(Msg), 0); + Msg.xany._type := ClientMessage; + Msg.xany.display := FDisplay; + Msg.xclient.window := FSrcWinHandle; // source winhandle msg is going to + Msg.xclient.message_type := XdndStatus; + Msg.xclient.format := 32; + + + Msg.xclient.data.l[0] := ATopLevelWindow.WinHandle; // always top-level window + Msg.xclient.data.l[1] := 0; + if (FDNDDataType <> None) and (FActionType = XdndActionCopy) and (lAccept = 1) then // we only accept copy action for now + Msg.xclient.data.l[1] := 1; // 0 xor (1 shl 0); // 0-bit set so we accept drop + + Msg.xclient.data.l[2] := 0; // (Left shl 16) or Top; // x & y co-ordinates + Msg.xclient.data.l[3] := 0; // (Width shl 16) or Height; // w & h co-ordinates + Msg.xclient.data.l[4] := FActionType; // this should be the action we accept + + XSendEvent(FDisplay, FSrcWinHandle, False, NoEventMask, @Msg); +end; + function TfpgX11Application.DoGetFontFaceList: TStringList; var pfs: PFcFontSet; -- cgit v1.2.3-70-g09d2 From 02727577acd550c1df78af2d3be4637de6b45ca9 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 13:15:32 +0200 Subject: Renamed DND fpGUI message constants to keep with existing naming convention. --- src/corelib/fpg_base.pas | 4 ++-- src/corelib/x11/fpg_x11.pas | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index ba73bdf3..418903b6 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -98,8 +98,8 @@ const FPGM_POPUPCLOSE = 17; FPGM_HINTTIMER = 18; FPGM_FREEME = 19; - FPGM_DROPACTIVE = 20; - FPGM_DROPINACTIVE = 21; + FPGM_DROPENTER = 20; + FPGM_DROPEXIT = 21; FPGM_USER = 50000; FPGM_KILLME = MaxInt; diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index df507a48..d9a55efb 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -19,7 +19,8 @@ unit fpg_x11; {$mode objfpc}{$H+} -{.$Define DEBUG} +{.$Define DEBUG} // general debugging - mostly OS messages though +{$Define DNDDEBUG} // drag-n-drop specific debugging { TODO : Compiz effects: Menu popup with correct window hint. Same for Combo dropdown window. } @@ -768,7 +769,7 @@ begin if FLastDropTarget <> 0 then begin fillchar(msgp, sizeof(msgp), 0); - fpgPostMessage(nil, FindWindowByHandle(FLastDropTarget), FPGM_DROPINACTIVE, msgp); + fpgPostMessage(nil, FindWindowByHandle(FLastDropTarget), FPGM_DROPEXIT, msgp); end; FDNDTypeList.Clear; FActionType := 0; @@ -810,7 +811,7 @@ begin if FLastDropTarget <> lTargetWinHandle then begin fillchar(msgp, sizeof(msgp), 0); - fpgPostMessage(nil, FindWindowByHandle(FLastDropTarget), FPGM_DROPINACTIVE, msgp); + fpgPostMessage(nil, FindWindowByHandle(FLastDropTarget), FPGM_DROPEXIT, msgp); end; FLastDropTarget := lTargetWinHandle; if TfpgWidget(w).AcceptDrops then @@ -819,7 +820,7 @@ begin fillchar(msgp, sizeof(msgp), 0); msgp.mouse.x := dx; msgp.mouse.y := dy; - fpgPostMessage(nil, w, FPGM_DROPACTIVE, msgp); + fpgPostMessage(nil, w, FPGM_DROPENTER, msgp); end; end; end; @@ -829,7 +830,7 @@ begin if FLastDropTarget <> lTargetWinHandle then begin fillchar(msgp, sizeof(msgp), 0); - fpgPostMessage(nil, FindWindowByHandle(FLastDropTarget), FPGM_DROPINACTIVE, msgp); + fpgPostMessage(nil, FindWindowByHandle(FLastDropTarget), FPGM_DROPEXIT, msgp); end; FLastDropTarget := lTargetWinHandle; end; @@ -1346,7 +1347,6 @@ begin // WM_PROTOCOLS message if Assigned(w) and (ev.xclient.message_type = xia_wm_protocols) then begin - //WriteLn(XGetAtomName(FDisplay, TAtom(ev.xclient.data.l[0]))); if (ev.xclient.data.l[0] = netlayer.NetAtom[naWM_PING]) then begin // always respond to pings or the wm will kill us -- cgit v1.2.3-70-g09d2 From b70ae03bce376be0d574933677a9f937c4b02886 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 13:19:58 +0200 Subject: X11: Adds remained of the XDND protocol handling routines * Add DND processing has it's own debug DEFINE as well. This limits the console output so is easier to debug. --- src/corelib/x11/fpg_x11.pas | 204 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 198 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index d9a55efb..1065a45e 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -271,7 +271,10 @@ type function StartComposing(const Event: TXEvent): TKeySym; procedure XdndInit; procedure ResetDNDVariables; - procedure HandleDNDposition(ATopLevelWindow: TfpgX11Window; ASource: TWindow; x_root: integer; y_root: integer; AAction: TAtom; ATimestamp: x.TTime); + procedure HandleDNDenter(ATopLevelWindow: TfpgX11Window; const ASource: TWindow; const ev: TXEvent); + procedure HandleDNDleave(ATopLevelWindow: TfpgX11Window; const ASource: TWindow); + procedure HandleDNDposition(ATopLevelWindow: TfpgX11Window; const ASource: TWindow; const x_root: integer; const y_root: integer; const AAction: TAtom; const ATimestamp: x.TTime); + procedure HandleDNDdrop(ATopLevelWindow: TfpgX11Window; const ASource: TWindow; const ATimestamp: x.TTime); protected FDisplay: PXDisplay; DisplayDepth: integer; @@ -773,11 +776,114 @@ begin end; FDNDTypeList.Clear; FActionType := 0; - FSrcWinHandle := -1 + FSrcWinHandle := -1; + FLastDropTarget := -1; end; -procedure TfpgX11Application.HandleDNDposition(ATopLevelWindow: TfpgX11Window; ASource: TWindow; x_root: integer; - y_root: integer; AAction: TAtom; ATimestamp: x.TTime); +procedure TfpgX11Application.HandleDNDenter(ATopLevelWindow: TfpgX11Window; + const ASource: TWindow; const ev: TXEvent); +var + actualtype: TAtom; + actualformat: cint; + count, remaining, dummy: culong; + xdndtypes: PAtomArray; + i: integer; + s: TfpgString; + itm: TDNDSrcType; +begin + {$IFDEF DNDDEBUG} + writeln('XdndEnter event received!'); + {$ENDIF} + ResetDNDVariables; + FSrcWinHandle := ASource; + FDNDVersion := min(FPG_XDND_VERSION, (ev.xclient.data.l[1] and $FF000000) shr 24); + {$IFDEF DNDDEBUG} + writeln(Format(' ver(%d) check-XdndTypeList(%s) data=%xh,%d,%d,%d,%d', + [ FDNDVersion, + BoolToStr(fpgIsBitSet(ev.xclient.data.l[1], 0), True), + ev.xclient.data.l[0], + ev.xclient.data.l[1], + ev.xclient.data.l[2], + ev.xclient.data.l[3], + ev.xclient.data.l[4] ])); + writeln(Format(' * We will be using XDND v%d protocol *', [FDNDVersion])); + if fpgIsBitSet(ev.xclient.data.l[1], 0) then + writeln(' ** We need to fetch XdndTypeList (>3 types)'); + {$ENDIF} + + // read typelist + if fpgIsBitSet(ev.xclient.data.l[1], 0) then + begin + // now fetch the data + XGetWindowProperty(Display, FSrcWinHandle, + XdndTypeList, 0, 16000, + TBool(False), + AnyPropertyType, + @actualtype, @actualformat, @count, @remaining, + @xdndtypes); + + {$IFDEF DNDDEBUG} + s := XGetAtomName(Display, actualtype); + writeln('Actual fetch -----------------------'); + writeln(Format(' ActualType: %s (%d)', [s, ActualType])); + writeln(' Actualformat = ', ActualFormat); + writeln(' count = ', count); + writeln(' remaining = ', remaining); + {$ENDIF} + + if (actualtype <> XA_ATOM) or (actualformat <> 32) then + count := 0; + end + else + begin + count := 3; + xdndtypes := @ev.xclient.data.l[2]; + end; + + for i := 0 to count-1 do + begin + if xdndtypes^[i] <> 0 then + begin + s := XGetAtomName(FDisplay, xdndtypes^[i]); + {$IFDEF DNDDEBUG} + writeln(Format(' Format #%d = %s (%d)', [i+1, s, xdndtypes^[i]])); + {$ENDIF} + // store each supported data type for later use + itm := TDNDSrcType.Create; + itm.Name := s; + itm.ID := xdndtypes^[i]; + FDNDTypeList.Add(itm); + end; + end; + if xdndtypes <> nil then + XFree(xdndtypes); + + for i := 0 to FDNDTypeList.Count-1 do + begin + { TODO: Somehow we must be told what is our preferred mime type } + { This list must be from most specific to least specific } + if TDNDSrcType(FDNDTypeList[i]).Name = 'text/plain' then + FDNDDataType := TDNDSrcType(FDNDTypeList[i]).ID + else if TDNDSrcType(FDNDTypeList[i]).Name = 'TEXT' then + FDNDDataType := TDNDSrcType(FDNDTypeList[i]).ID + else if TDNDSrcType(FDNDTypeList[i]).Name = 'STRING' then + FDNDDataType := TDNDSrcType(FDNDTypeList[i]).ID; + if FDNDDataType <> 0 then + break; + end; +end; + +procedure TfpgX11Application.HandleDNDleave(ATopLevelWindow: TfpgX11Window; + const ASource: TWindow); +begin + {$IFDEF DNDDEBUG} + writeln('XdndLeave event received!'); + {$ENDIF} + ResetDNDVariables; +end; + +procedure TfpgX11Application.HandleDNDposition(ATopLevelWindow: TfpgX11Window; const ASource: TWindow; + const x_root: integer; const y_root: integer; const AAction: TAtom; const ATimestamp: x.TTime); var Msg: TXEvent; dx, dy: cint; @@ -788,6 +894,9 @@ var lAccept: clong = 0; msgp: TfpgMessageParams; begin + {$IFDEF DNDDEBUG} + writeln('XdndPosition event received!'); + {$ENDIF} FSrcWinHandle := ASource; FActionType := AAction; FSrcTimeStamp := ATimeStamp; @@ -796,16 +905,29 @@ begin if TfpgWidget(ATopLevelWindow).AcceptDrops then lAccept := 1; + {$IFDEF DNDDEBUG} + s := XGetAtomName(FDisplay, AAction); + writeln(Format(' requested action: %s (%d)', [s, AAction])); + writeln(' x_root: ', x_root, ' y_root: ', y_root); + {$ENDIF} + // query to see if we accept to be drop target XTranslateCoordinates(FDisplay, XDefaultRootWindow(FDisplay), ATopLevelWindow.WinHandle, x_root, y_root, @dx, @dy, @child); + {$IFDEF DNDDEBUG} + writeln(Format('x:%d y:%d child:%d', [dx, dy, child])); + {$ENDIF} + if child <> 0 then begin w := FindWindowByHandle(child); if Assigned(w) then begin lTargetWinHandle := w.WinHandle; + {$IFDEF DNDDEBUG} + writeln('dragging over window: ', w.Name); + {$ENDIF} if w is TfpgWidget then // TODO: We could use Interfaces here eg: IDragDropEnabled begin if FLastDropTarget <> lTargetWinHandle then @@ -849,7 +971,12 @@ begin Msg.xclient.data.l[1] := 0; if (FDNDDataType <> None) and (FActionType = XdndActionCopy) and (lAccept = 1) then // we only accept copy action for now Msg.xclient.data.l[1] := 1; // 0 xor (1 shl 0); // 0-bit set so we accept drop - + {$IFDEF DNDDEBUG} + if FDNDDataType = None then + writeln('No suitable data type found, so we refuse drop'); + if FActionType <> XdndActionCopy then + writeln('No suitable action found, so we refuse drop'); + {$ENDIF} Msg.xclient.data.l[2] := 0; // (Left shl 16) or Top; // x & y co-ordinates Msg.xclient.data.l[3] := 0; // (Width shl 16) or Height; // w & h co-ordinates Msg.xclient.data.l[4] := FActionType; // this should be the action we accept @@ -857,6 +984,32 @@ begin XSendEvent(FDisplay, FSrcWinHandle, False, NoEventMask, @Msg); end; +procedure TfpgX11Application.HandleDNDdrop(ATopLevelWindow: TfpgX11Window; + const ASource: TWindow; const ATimestamp: x.TTime); +var + Msg: TXEvent; +begin + {$IFDEF DEBUG} + writeln('XdndDrop event received!'); + {$ENDIF} + XConvertSelection(FDisplay, XdndSelection, FDNDDataType, XdndSelection, ATopLevelWindow.FWinHandle, ATimestamp); + + { send message to confirm drop will be accepted in specified rectangle } + FillChar(Msg, SizeOf(Msg), 0); + Msg.xany._type := ClientMessage; + Msg.xany.display := FDisplay; + Msg.xclient.window := FSrcWinHandle; // source winhandle msg is going to + Msg.xclient.message_type := XdndFinished; + Msg.xclient.format := 32; + + Msg.xclient.data.l[0] := ATopLevelWindow.FWinHandle; // winhandle of target window + Msg.xclient.data.l[1] := 1; // drop accepted - target can remove the data + Msg.xclient.data.l[2] := FActionType; // this should be the action we accepted + + XSendEvent(FDisplay, FSrcWinHandle, False, NoEventMask, @Msg); + ResetDNDVariables; +end; + function TfpgX11Application.DoGetFontFaceList: TStringList; var pfs: PFcFontSet; @@ -1365,7 +1518,46 @@ begin if not blockmsg then fpgPostMessage(nil, FindWindowByHandle(ev.xclient.window), FPGM_CLOSE); end; - end; // WM_PROTOCOLS + end + { XDND protocol - XdndEnter } + else if Assigned(w) and (ev.xclient.message_type = XdndEnter) then + begin + HandleDNDenter(w, ev.xclient.data.l[0], ev); + end + { XDND protocol - XdndPosition } + else if Assigned(w) and (ev.xclient.message_type = XdndPosition) then + begin + HandleDNDposition(w, // top level window + ev.xclient.data.l[0], // Source window + (ev.xclient.data.l[2] shr 16) and $FFFF, // x_root + ev.xclient.data.l[2] and $FFFF, // y_root + ev.xclient.data.l[4], // action + ev.xclient.data.l[3]); // timestamp + end + { XDND protocol - XdndStatus } + else if Assigned(w) and (ev.xclient.message_type = XdndStatus) then + begin + {$IFDEF DNDDEBUG} + writeln('XdndStatus event received!'); + {$ENDIF} + end + { XDND protocol - XdndLeave } + else if Assigned(w) and (ev.xclient.message_type = XdndLeave) then + begin + HandleDNDleave(w, ev.xclient.data.l[0]); + end + { XDND protocol - XdndDrop } + else if Assigned(w) and (ev.xclient.message_type = XdndDrop) then + begin + HandleDNDdrop(w, ev.xclient.data.l[0], ev.xclient.data.l[2]); + end + { XDND protocol - XdndFinished } + else if Assigned(w) and (ev.xclient.message_type = XdndFinished) then + begin + {$IFDEF DNDDEBUG} + writeln('XdndFinished event received!'); + {$ENDIF} + end; end; X.ConfigureNotify: -- cgit v1.2.3-70-g09d2 From 166941caab1f4ff98b130759f1d25ce746bdff82 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 13:21:12 +0200 Subject: X11: No need to reference xapplication because this method is inside TfpgX11Application already --- src/corelib/x11/fpg_x11.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 1065a45e..7a600753 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1511,7 +1511,7 @@ begin begin // This is ugly!!!!!!!!!!!!!!! ew := TfpgX11Window(WidgetParentForm(TfpgWidget(w))); - if (ew <> nil) and (xapplication.TopModalForm <> ew) and (waUnblockableMessages in ew.WindowAttributes = False) then + if (ew <> nil) and (TopModalForm <> ew) and (waUnblockableMessages in ew.WindowAttributes = False) then blockmsg := true; end; -- cgit v1.2.3-70-g09d2 From f0bc89265bf99188deded6d86d0867b3a182fb86 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 22:57:37 +0200 Subject: Rename TfpgDragAction(s) to TfpgDropAction(s). A more correct description of what they mean. --- src/corelib/fpg_base.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index 418903b6..d309fc5e 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -70,8 +70,8 @@ type TfpgModalResult = (mrNone, mrOK, mrCancel, mrYes, mrNo, mrAbort, mrRetry, mrIgnore, mrAll, mrNoToAll, mrYesToAll); - TfpgDragAction = (daCopy, daMove, daLink); - TfpgDragActions = set of TfpgDragAction; + TfpgDropAction = (daCopy, daMove, daLink); + TfpgDropActions = set of TfpgDropAction; const MOUSE_LEFT = 1; -- cgit v1.2.3-70-g09d2 From c6e0a8b6bc4a252bfa210d5da163c3265ca47921 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 23:00:34 +0200 Subject: helper method to do conversion from TAtom to enum for drop actions. --- src/corelib/x11/fpg_x11.pas | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 7a600753..68d50199 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -269,6 +269,7 @@ type function ConvertShiftState(AState: Cardinal): TShiftState; function KeySymToKeycode(KeySym: TKeySym): Word; function StartComposing(const Event: TXEvent): TKeySym; + function GetDropActionFromAtom(const AAtom: TAtom): TfpgDropAction; procedure XdndInit; procedure ResetDNDVariables; procedure HandleDNDenter(ATopLevelWindow: TfpgX11Window; const ASource: TWindow; const ev: TXEvent); @@ -743,6 +744,18 @@ begin Length(FComposeBuffer), @Result, @FComposeStatus); end; +function TfpgX11Application.GetDropActionFromAtom(const AAtom: TAtom): TfpgDropAction; +begin + if AAtom = XdndActionCopy then + Result := daCopy + else if AAtom = XdndActionMove then + Result := daMove + else if AAtom = XdndActionLink then + Result := daLink + else + Result := daCopy; { the save fallback option } +end; + procedure TfpgX11Application.XdndInit; begin XdndAware := XInternAtom(FDisplay, 'XdndAware', False); -- cgit v1.2.3-70-g09d2 From 95d6327b7c228c83abaa419238c34277def62a07 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 23:01:23 +0200 Subject: Fixes range-check errors and compiler warnings. --- src/corelib/x11/fpg_x11.pas | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 68d50199..405e4264 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -789,8 +789,8 @@ begin end; FDNDTypeList.Clear; FActionType := 0; - FSrcWinHandle := -1; - FLastDropTarget := -1; + FSrcWinHandle := 0; + FLastDropTarget := 0; end; procedure TfpgX11Application.HandleDNDenter(ATopLevelWindow: TfpgX11Window; @@ -798,7 +798,7 @@ procedure TfpgX11Application.HandleDNDenter(ATopLevelWindow: TfpgX11Window; var actualtype: TAtom; actualformat: cint; - count, remaining, dummy: culong; + count, remaining: culong; xdndtypes: PAtomArray; i: integer; s: TfpgString; -- cgit v1.2.3-70-g09d2 From f97be77054ec360f41cefb9a0b3193415a0c4b43 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 23:02:36 +0200 Subject: Fixed double free libc crash. We assumed we should always free xdndtypes. NEVER ASSUME! --- src/corelib/x11/fpg_x11.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 405e4264..a16d0ede 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -868,7 +868,7 @@ begin FDNDTypeList.Add(itm); end; end; - if xdndtypes <> nil then + if count > 3 then XFree(xdndtypes); for i := 0 to FDNDTypeList.Count-1 do -- cgit v1.2.3-70-g09d2 From b9936034e3e017ec35d4220d86db70b72dd22236 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 23:04:12 +0200 Subject: Adds implementation for handling XdndSelection message. --- src/corelib/x11/fpg_x11.pas | 54 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index a16d0ede..30f64ee6 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -276,6 +276,7 @@ type procedure HandleDNDleave(ATopLevelWindow: TfpgX11Window; const ASource: TWindow); procedure HandleDNDposition(ATopLevelWindow: TfpgX11Window; const ASource: TWindow; const x_root: integer; const y_root: integer; const AAction: TAtom; const ATimestamp: x.TTime); procedure HandleDNDdrop(ATopLevelWindow: TfpgX11Window; const ASource: TWindow; const ATimestamp: x.TTime); + procedure HandleDNDSelection(const ev: TXEvent); protected FDisplay: PXDisplay; DisplayDepth: integer; @@ -1023,6 +1024,51 @@ begin ResetDNDVariables; end; +procedure TfpgX11Application.HandleDNDSelection(const ev: TXEvent); +var + actualtype: TAtom; + actualformat: cint; + count, remaining, dummy: culong; + s: TfpgString; + data: PChar; +begin + {$IFDEF DNDDEBUG} + writeln('XdndSelection message received!'); + {$ENDIF} + { do not get data yet, just see how much there is } + XGetWindowProperty(FDisplay, ev.xselection.requestor, + ev.xselection._property, 0, 0, + TBool(false), + AnyPropertyType, + @actualtype, @actualformat, @count, @remaining, + @data); + + { we handle the DND selection here } + {$IFDEF DNDDEBUG} + s := XGetAtomName(FDisplay, actualtype); + writeln(Format(' ActualType: %s (%d)', [s, ActualType])); + writeln(' Actualformat = ', ActualFormat); + writeln(' count = ', count); + writeln(' remaining = ', remaining); + writeln('-----------------'); + {$ENDIF} + + if remaining > 0 then { we have data - now fetch it! } + begin + XGetWindowProperty(FDisplay, ev.xselection.requestor, + ev.xselection._property, 0, remaining, + TBool(false), + AnyPropertyType, + @actualtype, @actualformat, @count, @dummy, + @data); + s := data; + end; + + {$IFDEF DNDDEBUG} + writeln(' s = ', s); + {$ENDIF} +end; + function TfpgX11Application.DoGetFontFaceList: TStringList; var pfs: PFcFontSet; @@ -1611,7 +1657,13 @@ begin X.SelectionNotify: begin - ProcessSelection(ev); + { Handle XDND data } + if ev.xselection._property = XdndSelection then + begin + HandleDNDSelection(ev); + end + else { Handle X Selections - clipboard data } + ProcessSelection(ev); end; X.SelectionRequest: -- cgit v1.2.3-70-g09d2 From 524746d2c7f4032f91930e02c49f969e4c0eba73 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 23:05:45 +0200 Subject: Changed bit manipulation so it makes more sense. --- src/corelib/x11/fpg_x11.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 30f64ee6..bc3983f2 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1588,8 +1588,8 @@ begin begin HandleDNDposition(w, // top level window ev.xclient.data.l[0], // Source window - (ev.xclient.data.l[2] shr 16) and $FFFF, // x_root - ev.xclient.data.l[2] and $FFFF, // y_root + (ev.xclient.data.l[2] and $FFFF0000) shr 16, // x_root + ev.xclient.data.l[2] and $0000FFFF, // y_root ev.xclient.data.l[4], // action ev.xclient.data.l[3]); // timestamp end -- cgit v1.2.3-70-g09d2 From fc30dea93cf70e2660638e2b5e7e200ea8510e50 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 23:07:27 +0200 Subject: If TfpgForm.EnabledDrops are set before a WinHandle exists we need to queue the action for later. --- src/corelib/x11/fpg_x11.pas | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index bc3983f2..e07b31ba 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1858,6 +1858,13 @@ begin fpgApplication.netlayer.WindowSetSupportPING(FWinHandle); XFree(WMHints); + + { we need to set the XdndAware property } + if QueueEnabledDrops then + begin + writeln('QueueEnableDrop....'); + DoEnableDrops(True); + end; end; hints.flags := 0; -- cgit v1.2.3-70-g09d2 From d7b98a6916f67170e14688e7c98a7949a027f9e8 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 23:08:35 +0200 Subject: Adds OnDragEnter event for TfpgWidget. --- src/corelib/fpg_widget.pas | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index 589ab720..a7c062ee 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -34,6 +34,8 @@ type THintEvent = procedure(Sender: TObject; var AHint: TfpgString) of object; + TfpgDragEnterEvent = procedure(Sender, Source: TObject; AMimeList: TStringList; var AMimeChoice: TfpgString; var ADropAction: TfpgDropAction; var Accept: Boolean) of object; + TfpgWidget = class(TfpgWindow) private @@ -41,6 +43,7 @@ type FAlignRect: TfpgRect; FOnClick: TNotifyEvent; FOnDoubleClick: TMouseButtonEvent; + FOnDragEnter: TfpgDragEnterEvent; FOnEnter: TNotifyEvent; FOnExit: TNotifyEvent; FOnMouseDown: TMouseButtonEvent; @@ -169,6 +172,7 @@ type property ParentShowHint: boolean read FParentShowHint write SetParentShowHint default True; property BackgroundColor: TfpgColor read FBackgroundColor write SetBackgroundColor default clWindowBackground; property TextColor: TfpgColor read FTextColor write SetTextColor default clText1; + property OnDragEnter: TfpgDragEnterEvent read FOnDragEnter write FOnDragEnter; end; -- cgit v1.2.3-70-g09d2 From 97a33536ab8650ad3b83d5633997fcc429320105 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 23:12:15 +0200 Subject: Catch the OS independent DROP[Enter|Exit] messages Under X11 the XDND OS messages on only go to the top-level window, so we send the FPGM_ messages ourselves. Later each component will hook into this to change it's appearance to show the end-user that a drop is allowed or not. eg: Some components will get a dark/black border or something. --- src/corelib/fpg_widget.pas | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index a7c062ee..3799f950 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -73,6 +73,8 @@ type procedure MsgMouseEnter(var msg: TfpgMessageRec); message FPGM_MOUSEENTER; procedure MsgMouseExit(var msg: TfpgMessageRec); message FPGM_MOUSEEXIT; procedure MsgMouseScroll(var msg: TfpgMessageRec); message FPGM_SCROLL; + procedure MsgDropEnter(var msg: TfpgMessageRec); message FPGM_DROPENTER; + procedure MsgDropExit(var msg: TfpgMessageRec); message FPGM_DROPEXIT; protected FFormDesigner: TObject; FVisible: boolean; @@ -729,6 +731,16 @@ begin msg.Params.mouse.shiftstate, msg.Params.mouse.delta); end; +procedure TfpgWidget.MsgDropEnter(var msg: TfpgMessageRec); +begin + // do nothing +end; + +procedure TfpgWidget.MsgDropExit(var msg: TfpgMessageRec); +begin + // do nothing +end; + function TfpgWidget.GetOnShowHint: THintEvent; begin Result := FOnShowHint; -- cgit v1.2.3-70-g09d2 From 40a4529c09a270c5fc53aea0f89a6eb92bac1961 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 23:14:15 +0200 Subject: Adds a property EnableDrops which enables DND for a top-level window. If set to False (the default), no DND can occur in that window. No OS messages for DND are processed or received. --- src/gui/fpg_form.pas | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_form.pas b/src/gui/fpg_form.pas index 0322050a..f465e09e 100644 --- a/src/gui/fpg_form.pas +++ b/src/gui/fpg_form.pas @@ -51,6 +51,8 @@ type FOnHide: TNotifyEvent; FOnShow: TNotifyEvent; FOnHelp: TfpgHelpEvent; + FEnableDrops: boolean; + procedure SetEnableDrops(const AValue: boolean); protected FModalResult: TfpgModalResult; FParentForm: TfpgBaseForm; @@ -100,6 +102,7 @@ type function ShowModal: TfpgModalResult; procedure Close; function CloseQuery: boolean; virtual; + property EnableDrops: boolean read FEnableDrops write SetEnableDrops; end; @@ -185,6 +188,13 @@ end; { TfpgBaseForm } +procedure TfpgBaseForm.SetEnableDrops(const AValue: boolean); +begin + if FEnableDrops = AValue then exit; + FEnableDrops := AValue; + DoEnableDrops(AValue); +end; + procedure TfpgBaseForm.SetWindowTitle(const ATitle: string); begin FWindowTitle := ATitle; -- cgit v1.2.3-70-g09d2 From 3e89220729b2243fec365c5a871c95b8b4ee55b4 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 23:40:04 +0200 Subject: Adds a reverse lookup: GetAtomFromDropAction() --- src/corelib/x11/fpg_x11.pas | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index e07b31ba..5f5b2c07 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -270,6 +270,7 @@ type function KeySymToKeycode(KeySym: TKeySym): Word; function StartComposing(const Event: TXEvent): TKeySym; function GetDropActionFromAtom(const AAtom: TAtom): TfpgDropAction; + function GetAtomFromDropAction(const AAction: TfpgDropAction): TAtom; procedure XdndInit; procedure ResetDNDVariables; procedure HandleDNDenter(ATopLevelWindow: TfpgX11Window; const ASource: TWindow; const ev: TXEvent); @@ -754,7 +755,18 @@ begin else if AAtom = XdndActionLink then Result := daLink else - Result := daCopy; { the save fallback option } + Result := daCopy; { the safe fallback option } +end; + +function TfpgX11Application.GetAtomFromDropAction(const AAction: TfpgDropAction): TAtom; +begin + case AAction of + daCopy: Result := XdndActionCopy; + daMove: Result := XdndActionMove; + daLink: Result := XdndActionLink; + else + Result := XdndActionCopy; { the safe fallback option } + end; end; procedure TfpgX11Application.XdndInit; -- cgit v1.2.3-70-g09d2 From 47c31a5fbc871309e925f8351238d988e9d14f74 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 14 Sep 2010 23:44:18 +0200 Subject: Reworked the HandleDNDposition() method * Events are now only fired when the drop is truly accepted, not just because it has AcceptDrops and OnEnterDrag event handlers. Event handler needs to explicitly set Accept = True. * Default mime type used is 'text/plain' * Default drop action is daCopy (or XdndActionCopy) --- src/corelib/x11/fpg_x11.pas | 106 ++++++++++++++++++++++---------------------- 1 file changed, 53 insertions(+), 53 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 5f5b2c07..0b8a5495 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -883,20 +883,6 @@ begin end; if count > 3 then XFree(xdndtypes); - - for i := 0 to FDNDTypeList.Count-1 do - begin - { TODO: Somehow we must be told what is our preferred mime type } - { This list must be from most specific to least specific } - if TDNDSrcType(FDNDTypeList[i]).Name = 'text/plain' then - FDNDDataType := TDNDSrcType(FDNDTypeList[i]).ID - else if TDNDSrcType(FDNDTypeList[i]).Name = 'TEXT' then - FDNDDataType := TDNDSrcType(FDNDTypeList[i]).ID - else if TDNDSrcType(FDNDTypeList[i]).Name = 'STRING' then - FDNDDataType := TDNDSrcType(FDNDTypeList[i]).ID; - if FDNDDataType <> 0 then - break; - end; end; procedure TfpgX11Application.HandleDNDleave(ATopLevelWindow: TfpgX11Window; @@ -915,21 +901,26 @@ var dx, dy: cint; child: TWindow; s: string; + i: integer; lTargetWinHandle: TWindow; w: TfpgX11Window; - lAccept: clong = 0; + wg: TfpgWidget; msgp: TfpgMessageParams; + lDragEnterEvent: TfpgDragEnterEvent; + lDropAction: TfpgDropAction; + lAccept: Boolean; + lMimeChoice: TfpgString; + lMimeList: TStringList; begin {$IFDEF DNDDEBUG} writeln('XdndPosition event received!'); {$ENDIF} + lAccept := False; FSrcWinHandle := ASource; FActionType := AAction; FSrcTimeStamp := ATimeStamp; lTargetWinHandle := ATopLevelWindow.WinHandle; - if ATopLevelWindow is TfpgWidget then // TODO: We could use Interfaces here eg: IDragDropEnabled - if TfpgWidget(ATopLevelWindow).AcceptDrops then - lAccept := 1; + lMimeChoice := 'text/plain'; {$IFDEF DNDDEBUG} s := XGetAtomName(FDisplay, AAction); @@ -946,25 +937,41 @@ begin {$ENDIF} if child <> 0 then + w := FindWindowByHandle(child) + else + w := ATopLevelWindow; + + if Assigned(w) then begin - w := FindWindowByHandle(child); - if Assigned(w) then + lTargetWinHandle := w.WinHandle; + {$IFDEF DNDDEBUG} + writeln('dragging over window: ', w.Name); + {$ENDIF} + if w is TfpgWidget then // TODO: We could use Interfaces here eg: IDragDropEnabled begin - lTargetWinHandle := w.WinHandle; - {$IFDEF DNDDEBUG} - writeln('dragging over window: ', w.Name); - {$ENDIF} - if w is TfpgWidget then // TODO: We could use Interfaces here eg: IDragDropEnabled + wg := TfpgWidget(w); + if FLastDropTarget <> lTargetWinHandle then + begin + fillchar(msgp, sizeof(msgp), 0); + fpgPostMessage(nil, FindWindowByHandle(FLastDropTarget), FPGM_DROPEXIT, msgp); + end; + FLastDropTarget := lTargetWinHandle; + if wg.AcceptDrops then begin - if FLastDropTarget <> lTargetWinHandle then + if Assigned(wg.OnDragEnter) then begin - fillchar(msgp, sizeof(msgp), 0); - fpgPostMessage(nil, FindWindowByHandle(FLastDropTarget), FPGM_DROPEXIT, msgp); + lDropAction := GetDropActionFromAtom(AAction); + lMimeList := TStringList.Create; + for i := 0 to FDNDTypeList.Count-1 do + lMimeList.Add(TDNDSrcType(FDNDTypeList[i]).Name); + { TODO: We need to populate the Source parameter. } + wg.OnDragEnter(self, nil, lMimeList, lMimeChoice, lDropAction, lAccept); + lMimeList.Free; + FActionType := GetAtomFromDropAction(lDropAction); end; - FLastDropTarget := lTargetWinHandle; - if TfpgWidget(w).AcceptDrops then + + if lAccept then begin - lAccept := 1; fillchar(msgp, sizeof(msgp), 0); msgp.mouse.x := dx; msgp.mouse.y := dy; @@ -972,18 +979,18 @@ begin end; end; end; - end - else + end; + + for i := 0 to FDNDTypeList.Count-1 do begin - if FLastDropTarget <> lTargetWinHandle then + { This list must be from most specific to least specific } + if TDNDSrcType(FDNDTypeList[i]).Name = lMimeChoice then begin - fillchar(msgp, sizeof(msgp), 0); - fpgPostMessage(nil, FindWindowByHandle(FLastDropTarget), FPGM_DROPEXIT, msgp); + FDNDDataType := TDNDSrcType(FDNDTypeList[i]).ID; + break; end; - FLastDropTarget := lTargetWinHandle; end; - // send message to confirm drop will be accepted in specified rectangle FillChar(Msg, SizeOf(Msg), 0); Msg.xany._type := ClientMessage; @@ -992,20 +999,14 @@ begin Msg.xclient.message_type := XdndStatus; Msg.xclient.format := 32; - - Msg.xclient.data.l[0] := ATopLevelWindow.WinHandle; // always top-level window - Msg.xclient.data.l[1] := 0; - if (FDNDDataType <> None) and (FActionType = XdndActionCopy) and (lAccept = 1) then // we only accept copy action for now - Msg.xclient.data.l[1] := 1; // 0 xor (1 shl 0); // 0-bit set so we accept drop - {$IFDEF DNDDEBUG} - if FDNDDataType = None then - writeln('No suitable data type found, so we refuse drop'); - if FActionType <> XdndActionCopy then - writeln('No suitable action found, so we refuse drop'); - {$ENDIF} - Msg.xclient.data.l[2] := 0; // (Left shl 16) or Top; // x & y co-ordinates - Msg.xclient.data.l[3] := 0; // (Width shl 16) or Height; // w & h co-ordinates - Msg.xclient.data.l[4] := FActionType; // this should be the action we accept + Msg.xclient.data.l[0] := ATopLevelWindow.WinHandle; // always top-level window + if lAccept then + Msg.xclient.data.l[1] := 1 + else + Msg.xclient.data.l[1] := 0; + Msg.xclient.data.l[2] := 0; // x & y co-ordinates + Msg.xclient.data.l[3] := 0; // w & h co-ordinates + Msg.xclient.data.l[4] := FActionType; XSendEvent(FDisplay, FSrcWinHandle, False, NoEventMask, @Msg); end; @@ -1253,7 +1254,6 @@ var xfd: integer; KeySym: TKeySym; Popup: TfpgWidget; - status: TStatus; needToWait: boolean; // debug purposes only -- cgit v1.2.3-70-g09d2 From 65ecd294231994dbb3633d0a058ce03cf58ad2bd Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 15 Sep 2010 00:07:15 +0200 Subject: Adds OnDragExit event to TfpgWidget. --- src/corelib/fpg_widget.pas | 2 ++ src/corelib/x11/fpg_x11.pas | 25 +++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index 3799f950..262c9717 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -44,6 +44,7 @@ type FOnClick: TNotifyEvent; FOnDoubleClick: TMouseButtonEvent; FOnDragEnter: TfpgDragEnterEvent; + FOnDragLeave: TNotifyEvent; FOnEnter: TNotifyEvent; FOnExit: TNotifyEvent; FOnMouseDown: TMouseButtonEvent; @@ -175,6 +176,7 @@ type property BackgroundColor: TfpgColor read FBackgroundColor write SetBackgroundColor default clWindowBackground; property TextColor: TfpgColor read FTextColor write SetTextColor default clText1; property OnDragEnter: TfpgDragEnterEvent read FOnDragEnter write FOnDragEnter; + property OnDragLeave: TNotifyEvent read FOnDragLeave write FOnDragLeave; end; diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 0b8a5495..dbae54ef 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -887,10 +887,21 @@ end; procedure TfpgX11Application.HandleDNDleave(ATopLevelWindow: TfpgX11Window; const ASource: TWindow); +var + wg: TfpgWidget; begin {$IFDEF DNDDEBUG} writeln('XdndLeave event received!'); {$ENDIF} + if FLastDropTarget <> 0 then { 0 would be first time in, so there is no last window } + begin + wg := FindWindowByHandle(FLastDropTarget) as TfpgWidget; + if wg.AcceptDrops then + begin + if Assigned(wg.OnDragLeave) then + wg.OnDragLeave(nil); + end; + end; ResetDNDVariables; end; @@ -905,6 +916,7 @@ var lTargetWinHandle: TWindow; w: TfpgX11Window; wg: TfpgWidget; + wg2: TfpgWidget; msgp: TfpgMessageParams; lDragEnterEvent: TfpgDragEnterEvent; lDropAction: TfpgDropAction; @@ -952,8 +964,17 @@ begin wg := TfpgWidget(w); if FLastDropTarget <> lTargetWinHandle then begin - fillchar(msgp, sizeof(msgp), 0); - fpgPostMessage(nil, FindWindowByHandle(FLastDropTarget), FPGM_DROPEXIT, msgp); + if FLastDropTarget <> 0 then { 0 would be first time in, so there is no last window } + begin + wg2 := FindWindowByHandle(FLastDropTarget) as TfpgWidget; + if wg2.AcceptDrops then + begin + if Assigned(wg2.OnDragLeave) then + wg2.OnDragLeave(nil); + end; + fillchar(msgp, sizeof(msgp), 0); + fpgPostMessage(nil, wg2, FPGM_DROPEXIT, msgp); + end; end; FLastDropTarget := lTargetWinHandle; if wg.AcceptDrops then -- cgit v1.2.3-70-g09d2 From 4e5374377c16654392ad38cc7a1fcf7791542e72 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 15 Sep 2010 00:31:48 +0200 Subject: Adds OnDragDrop event to TfpgWidget. For now we hard-code the data type as TfpgString. Later this will change. --- src/corelib/fpg_widget.pas | 3 +++ src/corelib/x11/fpg_x11.pas | 24 +++++++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index 262c9717..bdb1a320 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -35,6 +35,7 @@ type THintEvent = procedure(Sender: TObject; var AHint: TfpgString) of object; TfpgDragEnterEvent = procedure(Sender, Source: TObject; AMimeList: TStringList; var AMimeChoice: TfpgString; var ADropAction: TfpgDropAction; var Accept: Boolean) of object; + TfpgDragDropEvent = procedure(Sender, Source: TObject; X, Y: integer; AData: TfpgString) of object; TfpgWidget = class(TfpgWindow) @@ -43,6 +44,7 @@ type FAlignRect: TfpgRect; FOnClick: TNotifyEvent; FOnDoubleClick: TMouseButtonEvent; + FOnDragDrop: TfpgDragDropEvent; FOnDragEnter: TfpgDragEnterEvent; FOnDragLeave: TNotifyEvent; FOnEnter: TNotifyEvent; @@ -177,6 +179,7 @@ type property TextColor: TfpgColor read FTextColor write SetTextColor default clText1; property OnDragEnter: TfpgDragEnterEvent read FOnDragEnter write FOnDragEnter; property OnDragLeave: TNotifyEvent read FOnDragLeave write FOnDragLeave; + property OnDragDrop: TfpgDragDropEvent read FOnDragDrop write FOnDragDrop; end; diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index dbae54ef..d450d6a5 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -266,6 +266,7 @@ type FDNDDataType: TAtom; FSrcTimeStamp: clong; FLastDropTarget: TfpgWinHandle; + FDropPos: TPoint; function ConvertShiftState(AState: Cardinal): TShiftState; function KeySymToKeycode(KeySym: TKeySym): Word; function StartComposing(const Event: TXEvent): TKeySym; @@ -804,6 +805,8 @@ begin FActionType := 0; FSrcWinHandle := 0; FLastDropTarget := 0; + FDropPos.X := 0; + FDropPos.Y := 0; end; procedure TfpgX11Application.HandleDNDenter(ATopLevelWindow: TfpgX11Window; @@ -909,7 +912,7 @@ procedure TfpgX11Application.HandleDNDposition(ATopLevelWindow: TfpgX11Window; c const x_root: integer; const y_root: integer; const AAction: TAtom; const ATimestamp: x.TTime); var Msg: TXEvent; - dx, dy: cint; + dx, dy, dx2, dy2: cint; child: TWindow; s: string; i: integer; @@ -949,7 +952,13 @@ begin {$ENDIF} if child <> 0 then - w := FindWindowByHandle(child) + begin + w := FindWindowByHandle(child); + dx2 := dx; + dy2 := dy; + XTranslateCoordinates(FDisplay, ATopLevelWindow.WinHandle, w.WinHandle, + dx2, dy2, @dx, @dy, @child); + end else w := ATopLevelWindow; @@ -993,6 +1002,8 @@ begin if lAccept then begin + FDropPos.X := dx; + FDropPos.Y := dy; fillchar(msgp, sizeof(msgp), 0); msgp.mouse.x := dx; msgp.mouse.y := dy; @@ -1055,7 +1066,6 @@ begin Msg.xclient.data.l[2] := FActionType; // this should be the action we accepted XSendEvent(FDisplay, FSrcWinHandle, False, NoEventMask, @Msg); - ResetDNDVariables; end; procedure TfpgX11Application.HandleDNDSelection(const ev: TXEvent); @@ -1065,6 +1075,7 @@ var count, remaining, dummy: culong; s: TfpgString; data: PChar; + wg: TfpgWidget; begin {$IFDEF DNDDEBUG} writeln('XdndSelection message received!'); @@ -1098,9 +1109,16 @@ begin s := data; end; + if FLastDropTarget <> 0 then { 0 would be first time in, so there is no last window } + begin + wg := FindWindowByHandle(FLastDropTarget) as TfpgWidget; + if Assigned(wg.OnDragDrop) then + wg.OnDragDrop(nil, nil, FDropPos.X, FDropPos.Y, s); + end; {$IFDEF DNDDEBUG} writeln(' s = ', s); {$ENDIF} + ResetDNDVariables; end; function TfpgX11Application.DoGetFontFaceList: TStringList; -- cgit v1.2.3-70-g09d2 From d62919562ac1f6d8a58298b7a7d24e32879387ad Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 11:50:07 +0200 Subject: Move array types to interface section as it's required in other interface classes. --- src/corelib/x11/fpg_x11.pas | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index d450d6a5..a7de2e45 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -53,6 +53,11 @@ type TfpgGContext = Xlib.TGc; PInt = ^integer; + TAtomArray = array of TAtom; + PAtomArray = ^TAtomArray; + + TWindowArray = array of TWindow; + PWindowArray = ^TWindowArray; {$HINTS OFF} TXIC = record @@ -364,12 +369,6 @@ type ID: integer; end; - TAtomArray = array [0..0] of TAtom; - PAtomArray = ^TAtomArray; - - TWindowArray = array [0..0] of TWindow; - PWindowArray = ^TWindowArray; - var xapplication: TfpgApplication; @@ -600,7 +599,6 @@ begin e._type := SelectionNotify; e.requestor := ev.xselectionrequest.requestor; e.selection := ev.xselectionrequest.selection; -// e.selection := xapplication.xia_clipboard; e.target := ev.xselectionrequest.target; e.time := ev.xselectionrequest.time; e._property := ev.xselectionrequest._property; -- cgit v1.2.3-70-g09d2 From f84b9d9c2bb1d1b00cbeef3272a174825af7d5a7 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 11:51:16 +0200 Subject: More well known drop actions added to TfpgDropAction --- src/corelib/fpg_base.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index d309fc5e..4340c8b7 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -70,7 +70,7 @@ type TfpgModalResult = (mrNone, mrOK, mrCancel, mrYes, mrNo, mrAbort, mrRetry, mrIgnore, mrAll, mrNoToAll, mrYesToAll); - TfpgDropAction = (daCopy, daMove, daLink); + TfpgDropAction = (daIgnore, daCopy, daMove, daLink, daAsk); TfpgDropActions = set of TfpgDropAction; const -- cgit v1.2.3-70-g09d2 From 1a3d7d6001cc19e623e3a05d76b3a74b639401c7 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 13:18:35 +0200 Subject: two new classes introduced to manage data associated with mime types. TfpgMimeDataBase is a base class for data associated with mime types. TfpgMimeDataStruct is a simple data class. Currently I'm not sure if Variants are the way to go for storing data, so this might change in the future. --- src/corelib/fpg_base.pas | 190 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 189 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index 4340c8b7..1e69a47e 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -25,7 +25,8 @@ uses Classes, SysUtils, fpg_impl, - syncobjs; // TCriticalSection usage + syncobjs, // TCriticalSection usage + URIParser, variants, contnrs; type TfpgCoord = integer; // we might use floating point coordinates in the future... @@ -626,6 +627,40 @@ type end; + TfpgMimeDataStruct = class(TObject) + public + format: TfpgString; + data: Variant; + constructor Create(const AFormat: TfpgString; const AData: variant); reintroduce; + end; + + + TfpgMimeDataBase = class(TObject) + private + { TODO: This is wrong, we must have one Data Storage object } + FDataList: TObjectList; + FFormats: TStrings; + FUrlList: TList; + FHTML: TfpgString; + function Geturls: TList; + procedure Seturls(const AValue: TList); + function GetText: TfpgString; + procedure SetText(const AValue: TfpgString); + function GetHTML: TfpgString; + procedure SetHTML(const AValue: TfpgString); + function GetFormatCout: integer; + public + constructor Create; + destructor Destroy; override; + procedure Clear; + function HasFormat(const AMimeType: TfpgString): boolean; + function Formats: TStrings; + procedure SetData(const AMimeType: TfpgString; const AData: Variant); + property urls: TList read Geturls write Seturls; + property Text: TfpgString read GetText write SetText; + property HTML: TfpgString read GetHTML write SetHTML; + property FormatCount: integer read GetFormatCout; + end; { ******** Helper functions ******** } { Keyboard } function KeycodeToText(AKey: Word; AShiftState: TShiftState): string; @@ -2703,5 +2738,158 @@ begin FTagPointer := nil; end; +{ TfpgMimeDataStruct } + +constructor TfpgMimeDataStruct.Create(const AFormat: TfpgString; const AData: variant); +begin + inherited Create; + format := AFormat; + data := AData; +end; + + +{ TfpgMimeDataBase } + +function TfpgMimeDataBase.Geturls: TList; +begin + { TODO: We should only return data related to MIME type: text/uri-list } + Result := nil; +end; + +procedure TfpgMimeDataBase.Seturls(const AValue: TList); +begin + if AValue = nil then + raise Exception.Create('Source URI list must not be nil'); + + if Assigned(FUrlList) then + FUrlList.Free; + + { We take ownership of AValue. Can we do this? } + FUrlList := AValue; + FFormats.Clear; + Formats.Add('text/uri-list'); +end; + +function TfpgMimeDataBase.GetText: TfpgString; +var + i: integer; + s: string; +begin + { TODO: if data was HTML, we must strip all tags - regex will make this easy } + for i := 0 to FDataList.Count-1 do + begin + if TfpgMimeDataStruct(FDataList[i]).format = 'text/plain' then + begin + s := TfpgMimeDataStruct(FDataList[i]).data; + Result := s; + break; + end; + end; +end; + +procedure TfpgMimeDataBase.SetText(const AValue: TfpgString); +var + i: integer; + r: TfpgMimeDataStruct; +begin + { remove existing 'text/plain' first } + for i := FDataList.Count-1 downto 0 do + begin + r := TfpgMimeDataStruct(FDataList[i]); + if r.format = 'text/plain' then + begin + FDataList.Remove(FDataList[i]); + break; + end; + end; + { now add new structure } + r := TfpgMimeDataStruct.Create('text/plain', AValue); + FDataList.Add(r); +end; + +function TfpgMimeDataBase.GetHTML: TfpgString; +begin + { TODO: We should only return data related to MIME type: text/html } + Result := FHTML; +end; + +procedure TfpgMimeDataBase.SetHTML(const AValue: TfpgString); +begin + FHTML := AValue; + FFormats.Clear; + Formats.Add('text/html'); +end; + +function TfpgMimeDataBase.GetFormatCout: integer; +begin + Result := FDataList.Count; +end; + +constructor TfpgMimeDataBase.Create; +begin + inherited Create; + FDataList := TObjectList.Create; + FFormats := TStringList.Create; +end; + +destructor TfpgMimeDataBase.Destroy; +begin + FFormats.Free; + FDataList.Free; + inherited Destroy; +end; + +procedure TfpgMimeDataBase.Clear; +begin + FFormats.Clear; + FUrlList.Clear; + FDataList.Clear; +end; + +function TfpgMimeDataBase.HasFormat(const AMimeType: TfpgString): boolean; +begin + Result := FFormats.IndexOf(AMimeType) > -1; +end; + +function TfpgMimeDataBase.Formats: TStrings; +var + i: integer; + r: TfpgMimeDataStruct; + s: string; +begin + if FDataList.Count = 0 then + Result := nil + else + begin + Result := TStringList.Create; + for i := 0 to FDataList.Count-1 do + begin + s := TfpgMimeDataStruct(FDataList[i]).format; + Result.Add(s); + end; + end; +end; + +procedure TfpgMimeDataBase.SetData(const AMimeType: TfpgString; const AData: Variant); +var + i: integer; + r: TfpgMimeDataStruct; +begin + { remove existing mime type first } + for i := FDataList.Count-1 downto 0 do + begin + r := TfpgMimeDataStruct(FDataList[i]); + if r.format = AMimeType then + begin + FDataList.Remove(FDataList[i]); + break; + end; + end; + { now add new structure } + r := TfpgMimeDataStruct.Create(AMimeType, AData); + FDataList.Add(r); +end; + + end. -- cgit v1.2.3-70-g09d2 From 66a94111755c75d53c334d1e8fb21adae0b303de Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 13:21:07 +0200 Subject: fpgApplication got a new property: StartDragDistance. This is the distance the mouse needs to move with the left button down, before it is considered a "drag action". Default value is 5 pixels. --- src/corelib/fpg_main.pas | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index afba9d89..e77a025f 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -230,6 +230,7 @@ type FHintWidget: TfpgWindow; FHintPos: TPoint; FOnKeyPress: TKeyPressEvent; + FStartDragDistance: integer; procedure SetHintPause(const AValue: Integer); procedure SetupLocalizationStrings; procedure InternalMsgFreeMe(var msg: TfpgMessageRec); message FPGM_FREEME; @@ -237,6 +238,7 @@ type procedure CreateHintWindow; procedure HintTimerFired(Sender: TObject); procedure SetShowHint(const AValue: boolean); + procedure SetStartDragDistance(const AValue: integer); protected FDisplayParams: string; FScreenWidth: integer; @@ -269,6 +271,7 @@ type property ScreenWidth: integer read FScreenWidth; property ScreenHeight: integer read FScreenHeight; property ShowHint: boolean read FShowHint write SetShowHint default True; + property StartDragDistance: integer read FStartDragDistance write SetStartDragDistance default 5; property StopOnException: Boolean read FStopOnException write FStopOnException; property OnException: TExceptionEvent read FOnException write FOnException; property OnKeyPress: TKeyPressEvent read FOnKeyPress write FOnKeyPress; @@ -1106,6 +1109,7 @@ begin FHintPause := DEFAULT_HINT_PAUSE; FHintWidget := nil; // widget the mouse is over and whos hint text we need. FShowHint := True; + FStartDragDistance := 5; // pixels try inherited Create(AParams); @@ -1416,6 +1420,14 @@ begin FShowHint := AValue; end; +procedure TfpgApplication.SetStartDragDistance(const AValue: integer); +begin + if AValue < 0 then + FStartDragDistance := 0 + else + FStartDragDistance := AValue; +end; + procedure TfpgApplication.FreeFontRes(afontres: TfpgFontResource); var n: integer; -- cgit v1.2.3-70-g09d2 From 89a280723f96acd4464568241fa46a879cefac9d Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 13:24:02 +0200 Subject: Replaced magic numbers with variable names. Now we actually know the meaning of those parameters. --- src/corelib/x11/fpg_x11.pas | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index a7de2e45..f40a11c6 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -606,13 +606,13 @@ begin if e.target = xapplication.xia_targets then begin a := XA_STRING; - XChangeProperty(xapplication.Display, e.requestor, e._property, - XA_ATOM, 32, PropModeReplace, PByte(@a), Sizeof(TAtom)); // I think last parameter is right? + XChangeProperty(xapplication.Display, e.requestor, e._property, XA_ATOM, + 32, PropModeReplace, PByte(@a), Sizeof(TAtom)); // I think last parameter is right? end else begin XChangeProperty(xapplication.Display, e.requestor, e._property, e.target, - 8, 0, PByte(@fpgClipboard.FClipboardText[1]), Length(fpgClipboard.FClipboardText)); + 8, PropModeReplace, PByte(@fpgClipboard.FClipboardText[1]), Length(fpgClipboard.FClipboardText)); end; XSendEvent(xapplication.Display, e.requestor, false, 0, @e ); @@ -1785,7 +1785,7 @@ begin end; else - WriteLn('fpGFX/X11: Unhandled X11 event received: ', GetXEventName(ev._type)); + WriteLn('fpGUI/X11: Unhandled X11 event received: ', GetXEventName(ev._type)); end; end; @@ -1985,7 +1985,7 @@ begin if ((FWindowType = wtWindow) or (FWindowType = wtModalForm)) and (waBorderless in FWindowAttributes) and not (waX11SkipWMHints in FWindowAttributes) then begin prop := X.None; - prop := XInternAtom(xapplication.display, '_MOTIF_WM_INFO', longbool(0)); + prop := XInternAtom(xapplication.display, '_MOTIF_WM_INFO', TBool(False)); if prop = X.None then begin // writeln('Window Manager does not support MWM hints. Bypassing window manager control for borderless window.'); @@ -2860,7 +2860,7 @@ procedure TfpgX11Clipboard.DoSetText(const AValue: TfpgString); begin FClipboardText := AValue; XSetSelectionOwner(xapplication.Display, xapplication.xia_clipboard, - FClipboardWndHandle, 0); + FClipboardWndHandle, CurrentTime); end; procedure TfpgX11Clipboard.InitClipboard; -- cgit v1.2.3-70-g09d2 From 3d422875e82844fdf7547a675da9f475ca536d4d Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 13:27:57 +0200 Subject: X11: introduced a TfpgX11Drag class with handles most of the XDND messages We offload most of the DND message processing to the TfpgX11Drag class. This helps keep the functionality with a clean design. --- src/corelib/x11/fpg_x11.pas | 264 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 264 insertions(+) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index f40a11c6..4b6b0fe3 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -126,6 +126,7 @@ type // forward declaration TfpgX11Window = class; + TfpgX11Drag = class; TfpgX11FontResource = class(TfpgFontResourceBase) @@ -272,6 +273,8 @@ type FSrcTimeStamp: clong; FLastDropTarget: TfpgWinHandle; FDropPos: TPoint; + FDrag: TfpgX11Drag; + procedure SetDrag(const AValue: TfpgX11Drag); function ConvertShiftState(AState: Cardinal): TShiftState; function KeySymToKeycode(KeySym: TKeySym): Word; function StartComposing(const Event: TXEvent): TKeySym; @@ -284,6 +287,7 @@ type procedure HandleDNDposition(ATopLevelWindow: TfpgX11Window; const ASource: TWindow; const x_root: integer; const y_root: integer; const AAction: TAtom; const ATimestamp: x.TTime); procedure HandleDNDdrop(ATopLevelWindow: TfpgX11Window; const ASource: TWindow; const ATimestamp: x.TTime); procedure HandleDNDSelection(const ev: TXEvent); + property Drag: TfpgX11Drag read FDrag write SetDrag; protected FDisplay: PXDisplay; DisplayDepth: integer; @@ -342,6 +346,33 @@ type end; + TfpgX11Drag = class(TfpgDragBase) + private + FLastTarget: TfpgWinHandle; + FUseVersion: integer; + FTargetIsDNDAware: Boolean; + FStatusPending: Boolean; + FDropAccepted: Boolean; + FProposedAction: TAtom; + FAcceptedAction: TAtom; + FMimeTypesArray: TAtomArray; + xia_plain_text: TAtom; + procedure Dragging(ev: TXEvent); + function IsDNDAware(win: TWindow): boolean; + procedure SendDNDLeave(ATarget: TWindow); + procedure SendDNDEnter(ATarget: TWindow); + procedure SendDNDPosition(ATarget: TWindow; x_root: cint; y_root: cint; AAction: TAtom; ATime: X.TTime); + procedure SendDNDDrop; + procedure HandleDNDStatus(ATarget: TWindow; AAccept: integer; ARect: TfpgRect; AAction: TAtom); + procedure HandleSelectionRequest(ev: TXEvent); + protected + FSource: TfpgX11Window; + function GetSource: TfpgX11Window; virtual; + public + function Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction = daCopy): TfpgDropAction; override; + end; + + function fpgColorToX(col: TfpgColor): longword; @@ -2952,6 +2983,239 @@ begin end; +{ TfpgX11Drag } + +procedure TfpgX11Drag.Dragging(ev: TXEvent); +var + dx, dy: cint; + child: TWindow; + lTarget: TWindow; +begin + lTarget := FindWindow(ev.xmotion.root, ev.xmotion.x_root, ev.xmotion.y_root); + if FLastTarget <> lTarget then + begin + SendDNDLeave(FLastTarget); + + FLastTarget := lTarget; + FTargetIsDNDAware := IsDNDAware(lTarget); + FStatusPending := False; + FDropAccepted := False; + FAcceptedAction := X.None; + + if FTargetIsDNDAware then + SendDNDEnter(FLastTarget); + end; + + if FTargetIsDNDAware and not FStatusPending then + begin + SendDNDPosition(FLastTarget, ev.xmotion.x_root, ev.xmotion.y_root, + FProposedAction, ev.xmotion.time); + // this is to avoid sending XdndPosition messages over and over + // if the target is not responding + FStatusPending := True; + end; +end; + +function TfpgX11Drag.IsDNDAware(win: TWindow): boolean; +var + actualtype: TAtom; + actualformat: cint; + count, remaining, dummy: culong; + s: TfpgString; + data: PChar; + lversion: culong; +begin + if (win = None) then + begin + Result := False; + exit; + end; + XGetWindowProperty(xapplication.Display, win, xapplication.XdndAware, 0, $8000000, + TBool(False), XA_ATOM, @actualtype, @actualformat, @count, @remaining, @data); + + if count = 0 then + begin + if data <> nil then + XFree(data); + Result := False; + exit; + end; + + lversion := Integer(data[0]); + FUseVersion := min(Integer(FPG_XDND_VERSION), Integer(lversion)); + + {$IFDEF DNDDEBUG} + writeln(Format('IsDNDAware theirs:%d ours:%d using:%d', [lversion, FPG_XDND_VERSION, FUseVersion])); + {$ENDIF} +end; + +procedure TfpgX11Drag.SendDNDLeave(ATarget: TWindow); +var + xev: TXEvent; +begin + xev.xany._type := X.ClientMessage; + xev.xany.display := xapplication.Display; + xev.xclient.window := ATarget; + xev.xclient.message_type := xapplication.XdndLeave; + xev.xclient.format := 32; + + xev.xclient.data.l[0] := FSource.WinHandle; + xev.xclient.data.l[1] := 0; + + xev.xclient.data.l[2] := 0; + xev.xclient.data.l[3] := 0; + xev.xclient.data.l[4] := 0; + + XSendEvent(xapplication.Display, ATarget, False, NoEventMask, @xev); +end; + +procedure TfpgX11Drag.SendDNDEnter(ATarget: TWindow); +var + xev: TXEvent; + i, n: integer; + s: PChar; + sl: TStrings; +begin + xev.xany._type := X.ClientMessage; + xev.xany.display := xapplication.Display; + xev.xclient.window := ATarget; + xev.xclient.message_type := xapplication.XdndEnter; + xev.xclient.format := 32; + + xev.xclient.data.l[0] := FSource.WinHandle; + + n := FMimeData.FormatCount; + + if n > 3 then + i := 1 + else + i := 0; + xev.xclient.data.l[1] := i or (FUseVersion shl 24); + + // set the first 1-3 data types + //SetLength(FMimeTypesArray, 0); + //SetLength(FMimeTypesArray, n); + //sl := FMimeData.Formats; + //for i := 0 to n-1 do + //begin + // a := XInternAtom(xapplication.Display, 'text/plain', TBool(False)); + // FMimeTypesArray[i] := a; + //end; +// a := XInternAtom(xapplication.Display, 'text/plain', TBool(False)); + + xev.xclient.data.l[2] := xia_plain_text; //FMimeTypesArray[0]; + xev.xclient.data.l[3] := x.None; + xev.xclient.data.l[4] := x.None; + sl.Free; + +// for (i = 0; i < 3; ++i) +// xevent.xclient.data.l[2+i] = (i < n) ? _typelist[i] : None; + + XSendEvent(xapplication.Display, ATarget, False, NoEventMask, @xev); +end; + +procedure TfpgX11Drag.SendDNDPosition(ATarget: TWindow; x_root: cint; + y_root: cint; AAction: TAtom; ATime: X.TTime); +var + xev: TXEvent; +begin + xev.xany._type := X.ClientMessage; + xev.xany.display := xapplication.Display; + xev.xclient.window := ATarget; + xev.xclient.message_type := xapplication.XdndPosition; + xev.xclient.format := 32; + + xev.xclient.data.l[0] := FSource.WinHandle; + xev.xclient.data.l[1] := 0; + + xev.xclient.data.l[2] := (x_root shl 16) or y_root; // root coordinates + xev.xclient.data.l[3] := ATime; // timestamp for retrieving data + xev.xclient.data.l[4] := AAction; // requested action + + XSendEvent(xapplication.Display, ATarget, False, NoEventMask, @xev); +end; + +procedure TfpgX11Drag.SendDNDDrop; +var + xev: TXEvent; +begin + xev.xany._type := X.ClientMessage; + xev.xany.display := xapplication.Display; + xev.xclient.window := FLastTarget; + xev.xclient.message_type := xapplication.XdndDrop; + xev.xclient.format := 32; + + xev.xclient.data.l[0] := FSource.WinHandle; // from; + xev.xclient.data.l[1] := 0; // reserved + xev.xclient.data.l[2] := CurrentTime; // timestamp + xev.xclient.data.l[3] := 0; + xev.xclient.data.l[4] := 0; + + XSendEvent(xapplication.Display, FLastTarget, False, NoEventMask, @xev); +end; + +procedure TfpgX11Drag.HandleDNDStatus(ATarget: TWindow; AAccept: integer; + ARect: TfpgRect; AAction: TAtom); +begin + if ATarget = FLastTarget then + begin + FStatusPending := False; + if AAccept = 1 then + begin + FDropAccepted := True; + FAcceptedAction := AAction; + { TODO: Change mouse cursor to show drop accepted/valid } + end + else + begin + FDropAccepted := False; + FAcceptedAction := X.None; + { TODO: change mouse cursor to show drop not valid } + end; + end; + { TODO: If we waited to long, we have a timeout } +end; + +procedure TfpgX11Drag.HandleSelectionRequest(ev: TXEvent); +var + e: TXSelectionEvent; +begin + e._type := SelectionNotify; + e.requestor := ev.xselectionrequest.requestor; + e.selection := ev.xselectionrequest.selection; + e.target := ev.xselectionrequest.target; + e.time := ev.xselectionrequest.time; + e._property := ev.xselectionrequest._property; + + XChangeProperty(xapplication.Display, e.requestor, e._property, e.target, + 8, PropModeReplace, PByte(@FMimeData.Text[1]), Length(FMimeData.Text)); + + XSendEvent(xapplication.Display, e.requestor, false, NoEventMask, @e ); +end; + +function TfpgX11Drag.GetSource: TfpgX11Window; +begin + Result := FSource; +end; + +function TfpgX11Drag.Execute(const ADropActions: TfpgDropActions; + const ADefaultAction: TfpgDropAction): TfpgDropAction; +var + r: cint; +begin + if FDragging then + Result := daIgnore + else + begin + FDragging := True; + xia_plain_text := XInternAtom(xapplication.Display, 'text/plain', TBool(False)); + FProposedAction := xapplication.GetAtomFromDropAction(ADefaultAction); + xapplication.Drag := self; + r := XSetSelectionOwner(xapplication.Display, xapplication.XdndSelection, FSource.WinHandle, CurrentTime); + writeln('XSetSelectionOwner returned = ', r); + end; +end; + initialization xapplication := nil; -- cgit v1.2.3-70-g09d2 From a86b77cde8c444f6e62b3ec89288dff43680de15 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 13:37:00 +0200 Subject: X11: Two new DND helper functions introduced * IsTopLevel returns a boolean to say if a specific window is the top level window, and not some subwindow. * FindWindow tries to find the window at root coordinates x,y. we will use this to find the drop target. --- src/corelib/x11/fpg_x11.pas | 72 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 4b6b0fe3..6419818c 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -649,6 +649,71 @@ begin XSendEvent(xapplication.Display, e.requestor, false, 0, @e ); end; +function IsTopLevel(AWin: TWindow): Boolean; +var + actualtype: TAtom = None; + actualformat: cint; + count, remaining: culong; + data: pchar = nil; +begin +// writeln('IsTopLevel '); + XGetWindowProperty(xapplication.Display, AWin, xapplication.xia_wm_state, 0, 0, + TBool(False), AnyPropertyType, @actualtype, @actualformat, @count, + @remaining, @data); + if data <> nil then + XFree(data); + Result := actualtype <> None; +end; + +function FindWindow(ARoot: TWindow; const x, y: cint): TWindow; +var + wattr: TXWindowAttributes; + r, p: TWindow; + children: PWindowArray = nil; + numch: cuint = 0; + i: integer; +begin +// writeln('FindWindow '); + XGetWindowAttributes(xapplication.Display, ARoot, @wattr); + if (wattr.map_state <> IsUnmapped) and + ((x >= wattr.x) and (x < (wattr.x + wattr.width))) and + ((y >= wattr.y) and (y < (wattr.y + wattr.height))) then + begin + // mapped and inside, is it a top-level? + if (IsTopLevel(ARoot)) then + begin + Result := ARoot; + exit; + end; +// writeln('Query Tree'); + if XQueryTree(xapplication.Display, ARoot, @r, @p, @children, @numch) <> 0 then + begin + if (numch > 0) and (children <> nil) then + begin + r := None; + { upon return from XQueryTree, children are listed in the current + stacking order, from bottom-most (first) to top-most (last) } + for i := numch-1 downto 0 do + begin + r := FindWindow(children^[i], x - wattr.x, y - wattr.y); + if r <> None then + break; + end; + + XFree(children); + if r <> None then + begin + Result := r; + exit; + end; + Result := ARoot; // a fallback Result - we should never get here though + end; + end; + end + else + Result := None; +end; + // File utils function ExtractTargetSymLinkPath(ALink: string): string; begin @@ -663,6 +728,13 @@ end; { TfpgX11Application } +procedure TfpgX11Application.SetDrag(const AValue: TfpgX11Drag); +begin + if Assigned(FDrag) then + FDrag.Free; + FDrag := AValue; +end; + function TfpgX11Application.ConvertShiftState(AState: Cardinal): TShiftState; begin Result := []; -- cgit v1.2.3-70-g09d2 From 2de0a19405347f240eb9b6294ea6d631a38da2c6 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 13:40:15 +0200 Subject: implement the higher level TfpgDrag and TfpgMimeData classes. These are independant of the backend - they contain common code and interface. TfpgDrag will be used to initiate a drag action (acting as the source of a drag), and contain the data available for that drag action. --- src/corelib/fpg_main.pas | 53 ++++++++++++++++++++++++++++++++++++++- src/corelib/x11/fpg_interface.pas | 2 ++ src/corelib/x11/fpg_x11.pas | 4 +++ 3 files changed, 58 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index e77a025f..fa6b44d5 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -29,7 +29,8 @@ uses Classes, SysUtils, fpg_base, - fpg_interface; + fpg_interface, + fpg_impl; type TOrientation = (orVertical, orHorizontal); @@ -332,6 +333,25 @@ type end; + TfpgMimeData = class(TfpgMimeDataImpl) + end; + + + TfpgDrag = class(TfpgDragImpl) + private + FTarget: TfpgWinHandle; + procedure SetMimeData(const AValue: TfpgMimeDataBase); + protected + function GetSource: TfpgWindow; reintroduce; + public + constructor Create(ASource: TfpgWindow); + function Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction = daCopy): TfpgDropAction; override; + property Source: TfpgWindow read GetSource; + property Target: TfpgWinHandle read FTarget write FTarget; + property MimeData: TfpgMimeDataBase read FMimeData write SetMimeData; + end; + + var fpgStyle: TfpgStyle; { TODO -ograemeg : move this into fpgApplication } fpgCaret: TfpgCaret; { TODO -ograemeg : move this into fpgApplication } @@ -2386,6 +2406,37 @@ begin Result.UpdateImage; end; + +{ TfpgDrag } + +procedure TfpgDrag.SetMimeData(const AValue: TfpgMimeDataBase); +begin + if Assigned(FMimeData) then + FMimeData.Free; + FMimeData := AValue; +end; + +function TfpgDrag.GetSource: TfpgWindow; +begin + Result := TfpgWindow(inherited GetSource); +end; + +constructor TfpgDrag.Create(ASource: TfpgWindow); +begin + inherited Create; + FSource := ASource; +end; + +function TfpgDrag.Execute(const ADropActions: TfpgDropActions; + const ADefaultAction: TfpgDropAction): TfpgDropAction; +begin + Assert(FMimeData <> nil, ClassName + ': No mimedata was set before starting the drag'); + Assert(FSource <> nil, ClassName + ': No Source window was specified before starting the drag'); + inherited Execute(ADropActions, ADefaultAction); +end; + + + initialization uApplication := nil; uClipboard := nil; diff --git a/src/corelib/x11/fpg_interface.pas b/src/corelib/x11/fpg_interface.pas index c4adf079..3a1e1920 100644 --- a/src/corelib/x11/fpg_interface.pas +++ b/src/corelib/x11/fpg_interface.pas @@ -33,6 +33,8 @@ type TfpgApplicationImpl = TfpgX11Application; TfpgClipboardImpl = TfpgX11Clipboard; TfpgFileListImpl = TfpgX11FileList; + TfpgMimeDataImpl = TfpgX11MimeData; + TfpgDragImpl = TfpgX11Drag; implementation diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 6419818c..166e1205 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -346,6 +346,10 @@ type end; + TfpgX11MimeData = class(TfpgMimeDataBase) + end; + + TfpgX11Drag = class(TfpgDragBase) private FLastTarget: TfpgWinHandle; -- cgit v1.2.3-70-g09d2 From a550dc02270e7c83710b7eefb7f282907d3ff48b Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 13:41:37 +0200 Subject: Oops, forgot to commit the TfpgDragBase class from earlier. --- src/corelib/fpg_base.pas | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index 1e69a47e..ce9e3727 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -661,6 +661,19 @@ type property HTML: TfpgString read GetHTML write SetHTML; property FormatCount: integer read GetFormatCout; end; + + TfpgDragBase = class(TObject) + protected + FDragging: Boolean; + FMimeData: TfpgMimeDataBase; + public + constructor Create; + destructor Destroy; override; + function Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction = daCopy): TfpgDropAction; virtual; abstract; + end; + + + { ******** Helper functions ******** } { Keyboard } function KeycodeToText(AKey: Word; AShiftState: TShiftState): string; @@ -2891,5 +2904,20 @@ begin end; +{ TfpgDragBase } + +constructor TfpgDragBase.Create; +begin + inherited Create; + FDragging := False; +end; + +destructor TfpgDragBase.Destroy; +begin + FMimeData.Free; + inherited Destroy; +end; + + end. -- cgit v1.2.3-70-g09d2 From 2d93d52627353473f93a6295767aa23ec1a29a49 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 13:44:48 +0200 Subject: fix the type of XDND implemented version fpGUI supports --- src/corelib/x11/fpg_x11.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 166e1205..49b250b8 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -408,7 +408,7 @@ var xapplication: TfpgApplication; const - FPG_XDND_VERSION: integer = 4; // our supported XDND version + FPG_XDND_VERSION: culong = 4; // our supported XDND version // some externals -- cgit v1.2.3-70-g09d2 From 616e21fa0575d81aff9a0c468c7432c22170a23d Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 14:48:02 +0200 Subject: X11: delegate the DND events to the Drag object. --- src/corelib/x11/fpg_x11.pas | 74 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 59 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 49b250b8..ce5ed273 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1153,7 +1153,7 @@ procedure TfpgX11Application.HandleDNDdrop(ATopLevelWindow: TfpgX11Window; var Msg: TXEvent; begin - {$IFDEF DEBUG} + {$IFDEF DNDDEBUG} writeln('XdndDrop event received!'); {$ENDIF} XConvertSelection(FDisplay, XdndSelection, FDNDDataType, XdndSelection, ATopLevelWindow.FWinHandle, ATimestamp); @@ -1608,6 +1608,16 @@ begin ClosePopups; end; end; + end + else + begin + if Assigned(Drag) then // button released + begin + Drag.SendDNDDrop; + { TODO: Start timeout in case XdndFinished is not received, so we can free Drag } +// writeln('Freeing Drag Object'); +// FreeAndNil(FDrag); + end; end; w := FindWindowByHandle(ev.xbutton.window); // restore w @@ -1688,20 +1698,27 @@ begin until not XCheckTypedWindowEvent(display, ev.xmotion.window, X.MotionNotify, @ev); w := FindWindowByHandle(ev.xmotion.window); if not Assigned(w) then - ReportLostWindow(ev); - if xapplication.TopModalForm <> nil then - begin - ew := TfpgX11Window(WidgetParentForm(TfpgWidget(w))); - if (ew <> nil) and (xapplication.TopModalForm <> ew) and (waUnblockableMessages in ew.WindowAttributes = False) then - blockmsg := true; - end; - if not blockmsg then + ReportLostWindow(ev) + else begin - msgp.mouse.x := ev.xmotion.x; - msgp.mouse.y := ev.xmotion.y; - msgp.mouse.Buttons := (ev.xmotion.state and $FF00) shr 8; - msgp.mouse.shiftstate := ConvertShiftState(ev.xmotion.state); - fpgPostMessage(nil, FindWindowByHandle(ev.xmotion.window), FPGM_MOUSEMOVE, msgp); + if Assigned(Drag) then + begin + Drag.Dragging(ev); + end; + if xapplication.TopModalForm <> nil then + begin + ew := TfpgX11Window(WidgetParentForm(TfpgWidget(w))); + if (ew <> nil) and (xapplication.TopModalForm <> ew) and (waUnblockableMessages in ew.WindowAttributes = False) then + blockmsg := true; + end; + if not blockmsg then + begin + msgp.mouse.x := ev.xmotion.x; + msgp.mouse.y := ev.xmotion.y; + msgp.mouse.Buttons := (ev.xmotion.state and $FF00) shr 8; + msgp.mouse.shiftstate := ConvertShiftState(ev.xmotion.state); + fpgPostMessage(nil, w, FPGM_MOUSEMOVE, msgp); + end; end; end; @@ -1755,6 +1772,18 @@ begin {$IFDEF DNDDEBUG} writeln('XdndStatus event received!'); {$ENDIF} + if Assigned(Drag) then + begin + Drag.HandleDNDStatus( + ev.xclient.data.l[0], + ev.xclient.data.l[1] and 1, + fpgRect( + (ev.xclient.data.l[2] shr 16) and $FFFF, + ev.xclient.data.l[2] and $FFFF, + (ev.xclient.data.l[3] shr 16) and $FFFF, + ev.xclient.data.l[3] and $FFFF), + ev.xclient.data.l[4]); + end; end { XDND protocol - XdndLeave } else if Assigned(w) and (ev.xclient.message_type = XdndLeave) then @@ -1772,6 +1801,11 @@ begin {$IFDEF DNDDEBUG} writeln('XdndFinished event received!'); {$ENDIF} + if Assigned(Drag) then + begin + writeln('Freeing Drag Object'); + FreeAndNil(FDrag); + end; end; end; @@ -1824,7 +1858,17 @@ begin X.SelectionRequest: begin - ProcessSelectionRequest(ev); + if ev.xselectionrequest.selection = XdndSelection then + begin + writeln('found a XdndSelection request'); + if Assigned(Drag) then + Drag.HandleSelectionRequest(ev); + end + else + begin + writeln('found a clipboard selection request'); + ProcessSelectionRequest(ev); + end; end; X.SelectionClear: -- cgit v1.2.3-70-g09d2 From 01423e05dcb12e32c315337b05155bce12c9d0d7 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 21 Sep 2010 17:00:24 +0200 Subject: bugfix: I broke the array types earlier. This restores them to what they were. --- src/corelib/x11/fpg_x11.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index ce5ed273..9510a182 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -53,10 +53,10 @@ type TfpgGContext = Xlib.TGc; PInt = ^integer; - TAtomArray = array of TAtom; + TAtomArray = array[0..0] of TAtom; PAtomArray = ^TAtomArray; - TWindowArray = array of TWindow; + TWindowArray = array[0..0] of TWindow; PWindowArray = ^TWindowArray; {$HINTS OFF} -- cgit v1.2.3-70-g09d2 From 1ed2d01072110b37768909afc79e9c18867c7f3d Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 22 Sep 2010 09:23:14 +0200 Subject: X11: only delegate MotionNotify event to Drag object if it's actually a drag --- src/corelib/x11/fpg_x11.pas | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 9510a182..2076b358 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1703,7 +1703,8 @@ begin begin if Assigned(Drag) then begin - Drag.Dragging(ev); + if ((ev.xmotion.state and $FF00) shr 8) = MOUSE_LEFT then + Drag.Dragging(ev); end; if xapplication.TopModalForm <> nil then begin -- cgit v1.2.3-70-g09d2 From a2e6153e83dbc6a8ef8773870bd8e0b1b742fdbf Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 22 Sep 2010 09:25:08 +0200 Subject: X11: Only send XdndLeave event if we actually had a FLastTarget window --- src/corelib/x11/fpg_x11.pas | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 2076b358..64df409b 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -3115,10 +3115,14 @@ begin lTarget := FindWindow(ev.xmotion.root, ev.xmotion.x_root, ev.xmotion.y_root); if FLastTarget <> lTarget then begin - SendDNDLeave(FLastTarget); + if FLastTarget <> 0 then { meaning we had a target before } + SendDNDLeave(FLastTarget); FLastTarget := lTarget; FTargetIsDNDAware := IsDNDAware(lTarget); + {$IFDEF DNDDEBUG} + writeln('IsDNDAware = ', BoolToStr(FTargetIsDNDAware, True)); + {$ENDIF} FStatusPending := False; FDropAccepted := False; FAcceptedAction := X.None; -- cgit v1.2.3-70-g09d2 From 0f5506977d5c6bf3ae18edee77bbb7143e3778c6 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 22 Sep 2010 09:26:06 +0200 Subject: X11: FindWindow - renamed variable to make it easier to read and understand --- src/corelib/x11/fpg_x11.pas | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 64df409b..851aaae2 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -660,7 +660,6 @@ var count, remaining: culong; data: pchar = nil; begin -// writeln('IsTopLevel '); XGetWindowProperty(xapplication.Display, AWin, xapplication.xia_wm_state, 0, 0, TBool(False), AnyPropertyType, @actualtype, @actualformat, @count, @remaining, @data); @@ -669,15 +668,16 @@ begin Result := actualtype <> None; end; +{ find toplevel window that contains mouse co-ordinates x, y (co-ordinates are + from root window) } function FindWindow(ARoot: TWindow; const x, y: cint): TWindow; var wattr: TXWindowAttributes; r, p: TWindow; children: PWindowArray = nil; - numch: cuint = 0; + numchildren: cuint = 0; i: integer; begin -// writeln('FindWindow '); XGetWindowAttributes(xapplication.Display, ARoot, @wattr); if (wattr.map_state <> IsUnmapped) and ((x >= wattr.x) and (x < (wattr.x + wattr.width))) and @@ -689,15 +689,14 @@ begin Result := ARoot; exit; end; -// writeln('Query Tree'); - if XQueryTree(xapplication.Display, ARoot, @r, @p, @children, @numch) <> 0 then + if XQueryTree(xapplication.Display, ARoot, @r, @p, @children, @numchildren) <> 0 then begin - if (numch > 0) and (children <> nil) then + if (numchildren > 0) then begin r := None; { upon return from XQueryTree, children are listed in the current stacking order, from bottom-most (first) to top-most (last) } - for i := numch-1 downto 0 do + for i := numchildren-1 downto 0 do begin r := FindWindow(children^[i], x - wattr.x, y - wattr.y); if r <> None then @@ -1156,6 +1155,7 @@ begin {$IFDEF DNDDEBUG} writeln('XdndDrop event received!'); {$ENDIF} + { TODO: Must XConvertSelection always be called? } XConvertSelection(FDisplay, XdndSelection, FDNDDataType, XdndSelection, ATopLevelWindow.FWinHandle, ATimestamp); { send message to confirm drop will be accepted in specified rectangle } -- cgit v1.2.3-70-g09d2 From fba5173d0b81366dac1c4aed55d8c1b82ab7eb77 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 22 Sep 2010 09:27:10 +0200 Subject: IsDNDAware never actually returned True before. Oops! --- src/corelib/x11/fpg_x11.pas | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 851aaae2..f6e33236 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -3168,6 +3168,7 @@ begin lversion := Integer(data[0]); FUseVersion := min(Integer(FPG_XDND_VERSION), Integer(lversion)); + Result := True; {$IFDEF DNDDEBUG} writeln(Format('IsDNDAware theirs:%d ours:%d using:%d', [lversion, FPG_XDND_VERSION, FUseVersion])); @@ -3231,7 +3232,8 @@ begin xev.xclient.data.l[2] := xia_plain_text; //FMimeTypesArray[0]; xev.xclient.data.l[3] := x.None; xev.xclient.data.l[4] := x.None; - sl.Free; + +// sl.Free; // for (i = 0; i < 3; ++i) // xevent.xclient.data.l[2+i] = (i < n) ? _typelist[i] : None; -- cgit v1.2.3-70-g09d2 From a4b14f1174146845b9623240fb3fe780ee50585d Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 22 Sep 2010 10:24:41 +0200 Subject: Two new MouseCursor shapes added. mcDrag & mcNoDrop * X11 DND now changes the mouse cursor depending if a drop target is available or not --- src/corelib/fpg_base.pas | 2 +- src/corelib/x11/fpg_x11.pas | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index ce9e3727..988c9c8d 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -60,7 +60,7 @@ type TMouseCursor = (mcDefault, mcArrow, mcCross, mcIBeam, mcSizeEW, mcSizeNS, mcSizeNWSE, mcSizeNESW, mcSizeSWNE, mcSizeSENW, mcMove, mcHourGlass, - mcHand); + mcHand, mcDrag, mcNoDrop); TGradientDirection = (gdVertical, // Fill vertical gdHorizontal); // Fill Horizontal diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index f6e33236..549c6a80 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -2283,6 +2283,8 @@ begin mcCross: shape := XC_crosshair; mcHourGlass: shape := XC_watch; mcHand: shape := XC_hand2; + mcDrag: shape := XC_target; + mcNoDrop: shape := XC_pirate; else shape := XC_left_ptr; //XC_arrow; end; @@ -3292,12 +3294,14 @@ begin FDropAccepted := True; FAcceptedAction := AAction; { TODO: Change mouse cursor to show drop accepted/valid } + FSource.MouseCursor := mcDrag; end else begin FDropAccepted := False; FAcceptedAction := X.None; { TODO: change mouse cursor to show drop not valid } + FSource.MouseCursor := mcNoDrop; end; end; { TODO: If we waited to long, we have a timeout } -- cgit v1.2.3-70-g09d2 From 839de6506d1f7002db3ea045f7a562b1d45d685b Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 22 Sep 2010 23:10:42 +0200 Subject: confirming XSetSelectionOwner succeeded as per ICCCM specs --- src/corelib/x11/fpg_x11.pas | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 549c6a80..e92caea4 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -3332,7 +3332,7 @@ end; function TfpgX11Drag.Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction): TfpgDropAction; var - r: cint; + win: TWindow; begin if FDragging then Result := daIgnore @@ -3342,8 +3342,10 @@ begin xia_plain_text := XInternAtom(xapplication.Display, 'text/plain', TBool(False)); FProposedAction := xapplication.GetAtomFromDropAction(ADefaultAction); xapplication.Drag := self; - r := XSetSelectionOwner(xapplication.Display, xapplication.XdndSelection, FSource.WinHandle, CurrentTime); - writeln('XSetSelectionOwner returned = ', r); + XSetSelectionOwner(xapplication.Display, xapplication.XdndSelection, FSource.WinHandle, CurrentTime); + win := XGetSelectionOwner(xapplication.Display, xapplication.XdndSelection); + if win <> FSource.WinHandle then + raise Exception.Create('Application failed to aquire selection owner status'); end; end; -- cgit v1.2.3-70-g09d2 From 109a2714ca1846e368f9a83f49d21e028ec950ea Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 22 Sep 2010 23:12:12 +0200 Subject: X11 correctly set mouse cursor for mcDefault and mcArrow --- src/corelib/x11/fpg_x11.pas | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index e92caea4..cc360b2d 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -2272,6 +2272,8 @@ begin end; case FMouseCursor of + mcDefault: shape := XC_left_ptr; + mcArrow: shape := XC_arrow; mcSizeEW: shape := XC_sb_h_double_arrow; mcSizeNS: shape := XC_sb_v_double_arrow; mcIBeam: shape := XC_xterm; -- cgit v1.2.3-70-g09d2 From d8bf9da55f130eb8d70d097c40734f5e18a5762f Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 22 Sep 2010 23:13:45 +0200 Subject: X11: reset the mouse cursor after a DND drop action is complete --- src/corelib/x11/fpg_x11.pas | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index cc360b2d..40686f18 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -3283,6 +3283,7 @@ begin xev.xclient.data.l[4] := 0; XSendEvent(xapplication.Display, FLastTarget, False, NoEventMask, @xev); + FSource.MouseCursor := mcDefault; end; procedure TfpgX11Drag.HandleDNDStatus(ATarget: TWindow; AAccept: integer; @@ -3295,14 +3296,12 @@ begin begin FDropAccepted := True; FAcceptedAction := AAction; - { TODO: Change mouse cursor to show drop accepted/valid } FSource.MouseCursor := mcDrag; end else begin FDropAccepted := False; FAcceptedAction := X.None; - { TODO: change mouse cursor to show drop not valid } FSource.MouseCursor := mcNoDrop; end; end; @@ -3331,6 +3330,12 @@ begin Result := FSource; end; +destructor TfpgX11Drag.Destroy; +begin + FSource.MouseCursor := mcDefault; + inherited Destroy; +end; + function TfpgX11Drag.Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction): TfpgDropAction; var -- cgit v1.2.3-70-g09d2 From e1c5628c748138b4635e923b85aabbb3d463b9a4 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 22 Sep 2010 23:49:28 +0200 Subject: TfpgMimeDataBase: Fixed implementation of HTML property, and fixed HasFormats() function --- src/corelib/fpg_base.pas | 55 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index 988c9c8d..b80e297f 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -639,9 +639,7 @@ type private { TODO: This is wrong, we must have one Data Storage object } FDataList: TObjectList; - FFormats: TStrings; FUrlList: TList; - FHTML: TfpgString; function Geturls: TList; procedure Seturls(const AValue: TList); function GetText: TfpgString; @@ -2779,8 +2777,8 @@ begin { We take ownership of AValue. Can we do this? } FUrlList := AValue; - FFormats.Clear; - Formats.Add('text/uri-list'); +// FFormats.Clear; +// Formats.Add('text/uri-list'); end; function TfpgMimeDataBase.GetText: TfpgString; @@ -2788,7 +2786,7 @@ var i: integer; s: string; begin - { TODO: if data was HTML, we must strip all tags - regex will make this easy } + { TODO: if no text/plain, but we have HTML, we must strip all tags and return that } for i := 0 to FDataList.Count-1 do begin if TfpgMimeDataStruct(FDataList[i]).format = 'text/plain' then @@ -2821,16 +2819,40 @@ begin end; function TfpgMimeDataBase.GetHTML: TfpgString; +var + i: integer; + s: string; begin - { TODO: We should only return data related to MIME type: text/html } - Result := FHTML; + { TODO: if data was HTML, we must strip all tags - regex will make this easy } + for i := 0 to FDataList.Count-1 do + begin + if TfpgMimeDataStruct(FDataList[i]).format = 'text/html' then + begin + s := TfpgMimeDataStruct(FDataList[i]).data; + Result := s; + break; + end; + end; end; procedure TfpgMimeDataBase.SetHTML(const AValue: TfpgString); +var + i: integer; + r: TfpgMimeDataStruct; begin - FHTML := AValue; - FFormats.Clear; - Formats.Add('text/html'); + { remove existing 'text/html' first } + for i := FDataList.Count-1 downto 0 do + begin + r := TfpgMimeDataStruct(FDataList[i]); + if r.format = 'text/html' then + begin + FDataList.Remove(FDataList[i]); + break; + end; + end; + { now add new structure } + r := TfpgMimeDataStruct.Create('text/html', AValue); + FDataList.Add(r); end; function TfpgMimeDataBase.GetFormatCout: integer; @@ -2842,26 +2864,31 @@ constructor TfpgMimeDataBase.Create; begin inherited Create; FDataList := TObjectList.Create; - FFormats := TStringList.Create; end; destructor TfpgMimeDataBase.Destroy; begin - FFormats.Free; FDataList.Free; inherited Destroy; end; procedure TfpgMimeDataBase.Clear; begin - FFormats.Clear; FUrlList.Clear; FDataList.Clear; end; function TfpgMimeDataBase.HasFormat(const AMimeType: TfpgString): boolean; +var + i: integer; begin - Result := FFormats.IndexOf(AMimeType) > -1; + Result := False; + for i := 0 to FDataList.Count-1 do + begin + Result := TfpgMimeDataStruct(FDataList[i]).format = AMimeType; + if Result then + break; + end; end; function TfpgMimeDataBase.Formats: TStrings; -- cgit v1.2.3-70-g09d2 From 92c712533d0f1270503f5db729c48e270bdb4b45 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 22 Sep 2010 23:54:35 +0200 Subject: bugfix: SendDNDEnter now correctly sets first three supported data types --- src/corelib/x11/fpg_x11.pas | 56 +++++++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 40686f18..39e139d8 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -359,8 +359,9 @@ type FDropAccepted: Boolean; FProposedAction: TAtom; FAcceptedAction: TAtom; - FMimeTypesArray: TAtomArray; + FMimeTypesArray: array of TAtom; xia_plain_text: TAtom; + procedure InitializeMimeTypesToAtoms; procedure Dragging(ev: TXEvent); function IsDNDAware(win: TWindow): boolean; procedure SendDNDLeave(ATarget: TWindow); @@ -3110,6 +3111,31 @@ end; { TfpgX11Drag } +procedure TfpgX11Drag.InitializeMimeTypesToAtoms; +var + sl: TStringList; + i: integer; + a: TAtom; + s: PChar; +begin + { free old array } + SetLength(FMimeTypesArray, 0); + { set size of new array } + SetLength(FMimeTypesArray, FMimedata.FormatCount); + + sl := FMimeData.Formats as TStringList; + try + for i := 0 to FMimeData.FormatCount-1 do + begin + s := PChar(sl[i]); + a := XInternAtom(xapplication.Display, s, TBool(False)); + FMimeTypesArray[i] := a; + end; + finally + sl.Free; + end; +end; + procedure TfpgX11Drag.Dragging(ev: TXEvent); var dx, dy: cint; @@ -3222,25 +3248,15 @@ begin i := 0; xev.xclient.data.l[1] := i or (FUseVersion shl 24); - // set the first 1-3 data types - //SetLength(FMimeTypesArray, 0); - //SetLength(FMimeTypesArray, n); - //sl := FMimeData.Formats; - //for i := 0 to n-1 do - //begin - // a := XInternAtom(xapplication.Display, 'text/plain', TBool(False)); - // FMimeTypesArray[i] := a; - //end; -// a := XInternAtom(xapplication.Display, 'text/plain', TBool(False)); - - xev.xclient.data.l[2] := xia_plain_text; //FMimeTypesArray[0]; - xev.xclient.data.l[3] := x.None; - xev.xclient.data.l[4] := x.None; - -// sl.Free; - -// for (i = 0; i < 3; ++i) -// xevent.xclient.data.l[2+i] = (i < n) ? _typelist[i] : None; + InitializeMimeTypesToAtoms; + { TODO: currently we limit ourselves to 3 mime types max. Fix this later } + for i := 0 to 2 do + begin + if i < n then + xev.xclient.data.l[2+i] := FMimeTypesArray[i] + else + xev.xclient.data.l[2+i] := x.None; + end; XSendEvent(xapplication.Display, ATarget, False, NoEventMask, @xev); end; -- cgit v1.2.3-70-g09d2 From 7e1fc68c8697935f4401cd4b0ac5484ba5245657 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 22 Sep 2010 23:55:01 +0200 Subject: simple code formatting improvement --- src/corelib/x11/fpg_x11.pas | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 39e139d8..e7a74db5 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -362,19 +362,20 @@ type FMimeTypesArray: array of TAtom; xia_plain_text: TAtom; procedure InitializeMimeTypesToAtoms; - procedure Dragging(ev: TXEvent); - function IsDNDAware(win: TWindow): boolean; - procedure SendDNDLeave(ATarget: TWindow); - procedure SendDNDEnter(ATarget: TWindow); - procedure SendDNDPosition(ATarget: TWindow; x_root: cint; y_root: cint; AAction: TAtom; ATime: X.TTime); - procedure SendDNDDrop; - procedure HandleDNDStatus(ATarget: TWindow; AAccept: integer; ARect: TfpgRect; AAction: TAtom); - procedure HandleSelectionRequest(ev: TXEvent); + procedure Dragging(ev: TXEvent); + function IsDNDAware(win: TWindow): boolean; + procedure SendDNDLeave(ATarget: TWindow); + procedure SendDNDEnter(ATarget: TWindow); + procedure SendDNDPosition(ATarget: TWindow; x_root: cint; y_root: cint; AAction: TAtom; ATime: X.TTime); + procedure SendDNDDrop; + procedure HandleDNDStatus(ATarget: TWindow; AAccept: integer; ARect: TfpgRect; AAction: TAtom); + procedure HandleSelectionRequest(ev: TXEvent); protected FSource: TfpgX11Window; - function GetSource: TfpgX11Window; virtual; + function GetSource: TfpgX11Window; virtual; public - function Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction = daCopy): TfpgDropAction; override; + destructor Destroy; override; + function Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction = daCopy): TfpgDropAction; override; end; -- cgit v1.2.3-70-g09d2 From 3947adbf908d2f76c9b966f71eceda23ee430c8a Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 23 Sep 2010 00:01:16 +0200 Subject: HandleSelectionRequest now correctly returns 'html' or 'plain text' data. --- src/corelib/x11/fpg_x11.pas | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index e7a74db5..f0cfe82a 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -3328,6 +3328,7 @@ end; procedure TfpgX11Drag.HandleSelectionRequest(ev: TXEvent); var e: TXSelectionEvent; + s: string; begin e._type := SelectionNotify; e.requestor := ev.xselectionrequest.requestor; @@ -3336,8 +3337,24 @@ begin e.time := ev.xselectionrequest.time; e._property := ev.xselectionrequest._property; - XChangeProperty(xapplication.Display, e.requestor, e._property, e.target, - 8, PropModeReplace, PByte(@FMimeData.Text[1]), Length(FMimeData.Text)); + s := XGetAtomName(xapplication.Display, e.target); + if FMimeData.HasFormat(s) then + begin + if s = 'text/plain' then + XChangeProperty(xapplication.Display, e.requestor, e._property, e.target, + 8, PropModeReplace, PByte(@FMimeData.Text[1]), Length(FMimeData.Text)) + else if s = 'text/html' then + begin + XChangeProperty(xapplication.Display, e.requestor, e._property, e.target, + 8, PropModeReplace, PByte(@FMimeData.HTML[1]), Length(FMimeData.HTML)) + + end + else + { TODO: for now we immediately fall back to text/plain type } + XChangeProperty(xapplication.Display, e.requestor, e._property, e.target, + 8, PropModeReplace, PByte(@FMimeData.Text[1]), Length(FMimeData.Text)) + + end; XSendEvent(xapplication.Display, e.requestor, false, NoEventMask, @e ); end; -- cgit v1.2.3-70-g09d2 From 043da045da95a198e4fcff3a64f8e48eba6882fe Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 23 Sep 2010 16:13:17 +0200 Subject: TfpgMimeDataBase: introduced a new raw Data property. Returns data as variant --- src/corelib/fpg_base.pas | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index b80e297f..fb8ecdd1 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -653,6 +653,7 @@ type procedure Clear; function HasFormat(const AMimeType: TfpgString): boolean; function Formats: TStrings; + function GetData(const AMimeType: TfpgString): Variant; procedure SetData(const AMimeType: TfpgString; const AData: Variant); property urls: TList read Geturls write Seturls; property Text: TfpgString read GetText write SetText; @@ -2910,6 +2911,20 @@ begin end; end; +function TfpgMimeDataBase.GetData(const AMimeType: TfpgString): Variant; +var + i: integer; +begin + for i := 0 to FDataList.Count-1 do + begin + if TfpgMimeDataStruct(FDataList[i]).format = AMimeType then + begin + Result := TfpgMimeDataStruct(FDataList[i]).data; + break; + end; + end; +end; + procedure TfpgMimeDataBase.SetData(const AMimeType: TfpgString; const AData: Variant); var i: integer; -- cgit v1.2.3-70-g09d2 From f8533987605b5872c7ab72b557a8291b21ea7960 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 23 Sep 2010 16:18:46 +0200 Subject: X11 DND: a variant is now passed around and used in OnDragDrop event. --- src/corelib/fpg_widget.pas | 2 +- src/corelib/x11/fpg_x11.pas | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index bdb1a320..3f5204ed 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -35,7 +35,7 @@ type THintEvent = procedure(Sender: TObject; var AHint: TfpgString) of object; TfpgDragEnterEvent = procedure(Sender, Source: TObject; AMimeList: TStringList; var AMimeChoice: TfpgString; var ADropAction: TfpgDropAction; var Accept: Boolean) of object; - TfpgDragDropEvent = procedure(Sender, Source: TObject; X, Y: integer; AData: TfpgString) of object; + TfpgDragDropEvent = procedure(Sender, Source: TObject; X, Y: integer; AData: variant) of object; TfpgWidget = class(TfpgWindow) diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index f0cfe82a..1bebb2cf 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1180,7 +1180,7 @@ var actualtype: TAtom; actualformat: cint; count, remaining, dummy: culong; - s: TfpgString; + s: variant; data: PChar; wg: TfpgWidget; begin @@ -3329,6 +3329,7 @@ procedure TfpgX11Drag.HandleSelectionRequest(ev: TXEvent); var e: TXSelectionEvent; s: string; + v: variant; begin e._type := SelectionNotify; e.requestor := ev.xselectionrequest.requestor; @@ -3347,12 +3348,15 @@ begin begin XChangeProperty(xapplication.Display, e.requestor, e._property, e.target, 8, PropModeReplace, PByte(@FMimeData.HTML[1]), Length(FMimeData.HTML)) - end else - { TODO: for now we immediately fall back to text/plain type } + begin + { transfering as raw bytes of data } + v := FMimeData.GetData(s); + s := v; XChangeProperty(xapplication.Display, e.requestor, e._property, e.target, - 8, PropModeReplace, PByte(@FMimeData.Text[1]), Length(FMimeData.Text)) + 8, PropModeReplace, PByte(@s[1]), Length(s)); + end; end; -- cgit v1.2.3-70-g09d2 From e6e40fafbf7ab54130c0a474928e70564a24d36b Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 23 Sep 2010 16:19:16 +0200 Subject: DND: clean-up after we are done. --- src/corelib/x11/fpg_x11.pas | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 1bebb2cf..d776a7e1 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -3371,6 +3371,9 @@ end; destructor TfpgX11Drag.Destroy; begin FSource.MouseCursor := mcDefault; + XDeleteProperty(xapplication.Display, FSource.WinHandle, xapplication.XdndAware); + XDeleteProperty(xapplication.Display, FSource.WinHandle, xapplication.XdndTypeList); + SetLength(FMimeTypesArray, 0); inherited Destroy; end; -- cgit v1.2.3-70-g09d2 From 56e5e2ea302d0ae8461891558fc8d103a78baf60 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 23 Sep 2010 16:21:42 +0200 Subject: DND: > 3 data types are now supported. * Reorganized some code * > 3 data types are now supported. XdndTypeList is now correctly set for the source window. --- src/corelib/x11/fpg_x11.pas | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index d776a7e1..dcdfce0c 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -361,6 +361,7 @@ type FAcceptedAction: TAtom; FMimeTypesArray: array of TAtom; xia_plain_text: TAtom; + procedure SetTypeListProperty; procedure InitializeMimeTypesToAtoms; procedure Dragging(ev: TXEvent); function IsDNDAware(win: TWindow): boolean; @@ -3112,6 +3113,13 @@ end; { TfpgX11Drag } +procedure TfpgX11Drag.SetTypeListProperty; +begin + XChangeProperty(xapplication.Display, FSource.WinHandle, + xapplication.XdndTypeList, XA_ATOM, 32, + PropModeReplace, @FMimeTypesArray[0], Length(FMimeTypesArray)); +end; + procedure TfpgX11Drag.InitializeMimeTypesToAtoms; var sl: TStringList; @@ -3121,8 +3129,8 @@ var begin { free old array } SetLength(FMimeTypesArray, 0); - { set size of new array } - SetLength(FMimeTypesArray, FMimedata.FormatCount); + { set size of new array. Extra element for the terminating x.None value } + SetLength(FMimeTypesArray, FMimedata.FormatCount+1); sl := FMimeData.Formats as TStringList; try @@ -3132,6 +3140,7 @@ begin a := XInternAtom(xapplication.Display, s, TBool(False)); FMimeTypesArray[i] := a; end; + FMimeTypesArray[i+1] := x.None; // termination value finally sl.Free; end; @@ -3249,14 +3258,22 @@ begin i := 0; xev.xclient.data.l[1] := i or (FUseVersion shl 24); - InitializeMimeTypesToAtoms; - { TODO: currently we limit ourselves to 3 mime types max. Fix this later } - for i := 0 to 2 do + if n <= 3 then begin - if i < n then - xev.xclient.data.l[2+i] := FMimeTypesArray[i] - else - xev.xclient.data.l[2+i] := x.None; + for i := 0 to 2 do + begin + if i < n then + xev.xclient.data.l[2+i] := FMimeTypesArray[i] + else + xev.xclient.data.l[2+i] := x.None; + end; + end + else + begin + { available types are in the XdndTypeList property instead } + xev.xclient.data.l[2] := x.None; + xev.xclient.data.l[3] := x.None; + xev.xclient.data.l[4] := x.None; end; XSendEvent(xapplication.Display, ATarget, False, NoEventMask, @xev); @@ -3390,10 +3407,15 @@ begin xia_plain_text := XInternAtom(xapplication.Display, 'text/plain', TBool(False)); FProposedAction := xapplication.GetAtomFromDropAction(ADefaultAction); xapplication.Drag := self; + XSetSelectionOwner(xapplication.Display, xapplication.XdndSelection, FSource.WinHandle, CurrentTime); win := XGetSelectionOwner(xapplication.Display, xapplication.XdndSelection); if win <> FSource.WinHandle then - raise Exception.Create('Application failed to aquire selection owner status'); + raise Exception.Create('fpGUI/X11: Application failed to aquire selection owner status'); + + InitializeMimeTypesToAtoms; + if FMimeData.FormatCount > 3 then + SetTypeListProperty; end; end; -- cgit v1.2.3-70-g09d2 From 55467e22e9d7390596a77cb2606aa2639f0ac593 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 23 Sep 2010 16:23:13 +0200 Subject: X11: disable DNDDebug define to hide debug information --- src/corelib/x11/fpg_x11.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index dcdfce0c..24fa599c 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -20,7 +20,7 @@ unit fpg_x11; {$mode objfpc}{$H+} {.$Define DEBUG} // general debugging - mostly OS messages though -{$Define DNDDEBUG} // drag-n-drop specific debugging +{.$Define DNDDEBUG} // drag-n-drop specific debugging { TODO : Compiz effects: Menu popup with correct window hint. Same for Combo dropdown window. } -- cgit v1.2.3-70-g09d2 From 7c1b509760c2920a1d80d855bb68094001918624 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 23 Sep 2010 16:43:52 +0200 Subject: GDI: make code compilable again after X11 DND implementation. --- src/corelib/gdi/fpg_gdi.pas | 33 +++++++++++++++++++++++++++++++++ src/corelib/gdi/fpg_interface.pas | 2 ++ 2 files changed, 35 insertions(+) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index 9851ebb7..f877c3b5 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -168,6 +168,7 @@ type //procedure MoveToScreenCenter; override; procedure DoSetWindowTitle(const ATitle: string); override; procedure DoSetMouseCursor; override; + procedure DoEnableDrops(const AValue: boolean); override; property WinHandle: TfpgWinHandle read FWinHandle; public constructor Create(AOwner: TComponent); override; @@ -238,6 +239,19 @@ type end; + TfpgGDIMimeDataBase = class(TfpgMimeDataBase) + end; + + + TfpgGDIDrag = class(TfpgDragBase) + protected + FSource: TfpgGDIWindow; + function GetSource: TfpgGDIWindow; virtual; + public + function Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction=daCopy): TfpgDropAction; override; + end; + + implementation uses @@ -1611,6 +1625,11 @@ begin SetCursor(hc); end; +procedure TfpgGDIWindow.DoEnableDrops(const AValue: boolean); +begin + // TODO: still needs to be implemented +end; + constructor TfpgGDIWindow.Create(AOwner: TComponent); begin inherited Create(AOwner); @@ -2451,6 +2470,20 @@ begin inherited PopulateSpecialDirs(aDirectory); end; +{ TfpgGDIDrag } + +function TfpgGDIDrag.GetSource: TfpgGDIWindow; +begin + Result := FSource; +end; + +function TfpgGDIDrag.Execute(const ADropActions: TfpgDropActions; + const ADefaultAction: TfpgDropAction): TfpgDropAction; +begin + { TODO: this still needs to be implemented } + Result := daCopy; +end; + initialization wapplication := nil; MouseFocusedWH := 0; diff --git a/src/corelib/gdi/fpg_interface.pas b/src/corelib/gdi/fpg_interface.pas index c75aaa28..ef58e46d 100644 --- a/src/corelib/gdi/fpg_interface.pas +++ b/src/corelib/gdi/fpg_interface.pas @@ -33,6 +33,8 @@ type TfpgApplicationImpl = TfpgGDIApplication; TfpgClipboardImpl = TfpgGDIClipboard; TfpgFileListImpl = TfpgGDIFileList; + TfpgMimeDataImpl = TfpgGDIMimeDataBase; + TfpgDragImpl = TfpgGDIDrag; implementation -- cgit v1.2.3-70-g09d2 From 67bff74bc9a198f8be78bcd1c9e136ccfea89d86 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sat, 25 Sep 2010 13:12:35 +0200 Subject: TfpgWidget: adds support for new event, OnDragStartDetected --- src/corelib/fpg_widget.pas | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index 3f5204ed..7a95b92b 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -47,6 +47,7 @@ type FOnDragDrop: TfpgDragDropEvent; FOnDragEnter: TfpgDragEnterEvent; FOnDragLeave: TNotifyEvent; + FOnDragStartDetected: TNotifyEvent; FOnEnter: TNotifyEvent; FOnExit: TNotifyEvent; FOnMouseDown: TMouseButtonEvent; @@ -59,6 +60,8 @@ type FOnResize: TNotifyEvent; FOnScreen: boolean; FOnShowHint: THintEvent; + FDragStartPos: TfpgPoint; + FDragActive: boolean; procedure SetActiveWidget(const AValue: TfpgWidget); function IsShowHintStored: boolean; procedure SetFormDesigner(const AValue: TObject); @@ -136,6 +139,7 @@ type { property events } property OnClick: TNotifyEvent read FOnClick write FOnClick; property OnDoubleClick: TMouseButtonEvent read FOnDoubleClick write FOnDoubleClick; + property OnDragStartDetected: TNotifyEvent read FOnDragStartDetected write FOnDragStartDetected; property OnEnter: TNotifyEvent read FOnEnter write FOnEnter; property OnExit: TNotifyEvent read FOnExit write FOnExit; property OnKeyPress: TKeyPressEvent read FOnKeyPress write FOnKeyPress; @@ -428,6 +432,7 @@ begin FBackgroundColor := clWindowBackground; FTextColor := clText1; FAcceptDrops := False; + FDragActive := False; inherited Create(AOwner); @@ -585,6 +590,7 @@ begin case msg.Params.mouse.Buttons of MOUSE_LEFT: begin + FDragStartPos.SetPoint(msg.Params.mouse.x, msg.Params.mouse.y); mb := mbLeft; HandleLMouseDown(msg.Params.mouse.x, msg.Params.mouse.y, msg.Params.mouse.shiftstate); end; @@ -611,6 +617,7 @@ var IsDblClick: boolean; begin // writeln('TfpgWidget.MsgMouseUp'); + FDragActive := False; if InDesigner then begin FFormDesigner.Dispatch(msg); @@ -675,6 +682,16 @@ begin Exit; end; + if (msg.Params.mouse.Buttons and MOUSE_LEFT) = MOUSE_LEFT then + begin + if not FDragActive and (FDragStartPos.ManhattanLength(fpgPoint(msg.Params.mouse.x, msg.Params.mouse.y)) > fpgApplication.StartDragDistance) then + begin + FDragActive := True; + if Assigned(OnDragStartDetected) then + OnDragStartDetected(self); + end; + end; + HandleMouseMove(msg.Params.mouse.x, msg.Params.mouse.y, msg.Params.mouse.Buttons, msg.Params.mouse.shiftstate); if Assigned(OnMouseMove) then OnMouseMove(self, msg.Params.mouse.shiftstate, -- cgit v1.2.3-70-g09d2 From e7837ddc049720b88965fe2a2e9621755899b6a7 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sat, 25 Sep 2010 13:14:58 +0200 Subject: published DND events for Button, Edit and Label components. This is just a start, so a few widgets can be tested with DND. After DND has be tested more, other widgets will get the published properties too. --- src/gui/fpg_button.pas | 4 ++++ src/gui/fpg_edit.pas | 3 +++ src/gui/fpg_label.pas | 4 ++++ 3 files changed, 11 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_button.pas b/src/gui/fpg_button.pas index 032fcf47..f2bda769 100644 --- a/src/gui/fpg_button.pas +++ b/src/gui/fpg_button.pas @@ -157,6 +157,10 @@ type property Top; property Width; property OnClick; + property OnDragEnter; + property OnDragLeave; + property OnDragDrop; + property OnDragStartDetected; property OnMouseDown; property OnMouseExit; property OnMouseEnter; diff --git a/src/gui/fpg_edit.pas b/src/gui/fpg_edit.pas index ea6fe1b2..a3207f6a 100644 --- a/src/gui/fpg_edit.pas +++ b/src/gui/fpg_edit.pas @@ -179,6 +179,9 @@ type property Text; property TextColor; property OnChange; + property OnDragEnter; + property OnDragLeave; + property OnDragDrop; property OnEnter; property OnExit; property OnKeyPress; diff --git a/src/gui/fpg_label.pas b/src/gui/fpg_label.pas index 409116b9..eeecf9b6 100644 --- a/src/gui/fpg_label.pas +++ b/src/gui/fpg_label.pas @@ -90,6 +90,10 @@ type property Width; property WrapText; property OnClick; + property OnDragEnter; + property OnDragLeave; + property OnDragDrop; + property OnDragStartDetected; property OnDoubleClick; property OnMouseDown; property OnMouseEnter; -- cgit v1.2.3-70-g09d2 From 838d64e8e9609f88a930a6782300ba8def229837 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 27 Sep 2010 17:04:09 +0200 Subject: treeview: minor bugfix in the accuracy of selecting a node with the mouse. An earlier commit fixed the selected rectangle offset painting. I forgot to also fix the node selection via mouse click. They y offsets was a bit off. --- src/gui/fpg_tree.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index f4cccb8b..b7dc5991 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -1332,7 +1332,7 @@ begin x := x + FXOffset; cancel := False; last := RootNode; - while not (((i - 1) * GetNodeHeight - 2 <= y) and ((i) * GetNodeHeight + 2 >= y)) do + while not ((((i - 1) * GetNodeHeight) <= y) and ((i * GetNodeHeight) >= y)) do begin node := NextVisualNode(last); if node = nil then -- cgit v1.2.3-70-g09d2 From 92d78b37533d96257d1298d81c26feb8bb9834c1 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 28 Sep 2010 11:11:11 +0200 Subject: memo bugfix: The 'delete' key did not work. Now it does. --- src/gui/fpg_memo.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_memo.pas b/src/gui/fpg_memo.pas index acdf2f13..0cf0f469 100644 --- a/src/gui/fpg_memo.pas +++ b/src/gui/fpg_memo.pas @@ -1221,7 +1221,7 @@ begin keyDelete: begin ls := GetLineText(FCursorLine); - if FSelEndLine > -1 then + if SelectionText <> '' then DeleteSelection else if FCursorPos < UTF8Length(ls) then begin -- cgit v1.2.3-70-g09d2 From 0f8a478c72e441bd612b0fef685e8c02aeb7cfc5 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 28 Sep 2010 11:53:47 +0200 Subject: msg queue thread safety. Added an additional safety measure. --- src/corelib/fpg_msgqueue.inc | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_msgqueue.inc b/src/corelib/fpg_msgqueue.inc index 386178d9..00862cc1 100644 --- a/src/corelib/fpg_msgqueue.inc +++ b/src/corelib/fpg_msgqueue.inc @@ -86,10 +86,15 @@ end; function fpgGetFirstMessage: PfpgMessageRec; begin - if UsedFirstMessage <> nil then - Result := @(UsedFirstMessage.msg) - else - Result := nil; + fpgApplication.Lock; + try + if UsedFirstMessage <> nil then + Result := @(UsedFirstMessage.msg) + else + Result := nil; + finally + fpgApplication.Unlock; + end; end; procedure fpgInitMsgQueue; -- cgit v1.2.3-70-g09d2 From 7f0d49cdbadd71f5d04cfcd1e8925dc3f41358a3 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 30 Sep 2010 16:31:02 +0200 Subject: fpg_utils: new fpgDeleteFile() wrapper for the RTL DeleteFile() procedure --- src/corelib/fpg_utils.pas | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_utils.pas b/src/corelib/fpg_utils.pas index a0509304..3300a07f 100644 --- a/src/corelib/fpg_utils.pas +++ b/src/corelib/fpg_utils.pas @@ -57,6 +57,7 @@ function fpgGetCurrentDir: TfpgString; function fpgSetCurrentDir(const NewDir: TfpgString): Boolean; function fpgExpandFileName(const FileName: TfpgString): TfpgString; function fpgFileExists(const FileName: TfpgString): Boolean; +function fpgDeleteFile(const FileName: TfpgString): Boolean; function fpgDirectoryExists(const ADirectory: TfpgString): Boolean; function fpgExtractFileDir(const FileName: TfpgString): TfpgString; function fpgExtractFilePath(const FileName: TfpgString): TfpgString; @@ -129,6 +130,11 @@ begin Result := FileExists(fpgToOSEncoding(FileName)); end; +function fpgDeleteFile(const FileName: TfpgString): Boolean; +begin + Result := DeleteFile(fpgToOSEncoding(FileName)); +end; + function fpgDirectoryExists(const ADirectory: TfpgString): Boolean; begin Result := DirectoryExists(fpgToOSEncoding(ADirectory)); -- cgit v1.2.3-70-g09d2 From 4387da1d5c116b3b2b7c0deeb0565d5e2fd3e0d5 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 30 Sep 2010 16:31:53 +0200 Subject: Added new 'stdimg.about' image. Handly for toolbar usage. --- src/corelib/fpg_stdimages.pas | 5 + src/corelib/stdimages.inc | 4082 +++++++++++++++++++++-------------------- 2 files changed, 2072 insertions(+), 2015 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_stdimages.pas b/src/corelib/fpg_stdimages.pas index 9e256654..b25890ad 100644 --- a/src/corelib/fpg_stdimages.pas +++ b/src/corelib/fpg_stdimages.pas @@ -259,6 +259,11 @@ begin @stdimg_help_16, sizeof(stdimg_help_16), 0,0); + fpgImages.AddMaskedBMP( + 'stdimg.about', + @stdimg_about_16, + sizeof(stdimg_about_16), 0,0); + fpgImages.AddMaskedBMP( 'stdimg.hidden', @stdimg_hidden, diff --git a/src/corelib/stdimages.inc b/src/corelib/stdimages.inc index 6cf46c8e..c494f96d 100644 --- a/src/corelib/stdimages.inc +++ b/src/corelib/stdimages.inc @@ -1,314 +1,110 @@ Const - stdimg_arrow_down : Array[0..149] of byte = ( - 66, 77,150, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 7, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 96, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255, 0, 0, 0, - 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - -Const - stdimg_arrow_left : Array[0..137] of byte = ( - 66, 77,138, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 4, 0, 0, 0, 7, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 84, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,255, 0,255, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, - 255, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0); - -Const - stdimg_arrow_right : Array[0..137] of byte = ( - 66, 77,138, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 4, 0, 0, 0, 7, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 84, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, - 0, 0, 0, 0,255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, 0, - 0, 0,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, 0, - 0,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, - 0,255); - -Const - stdimg_arrow_up : Array[0..149] of byte = ( - 66, 77,150, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 7, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 96, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + stdimg_edit : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0,235, 10, 0, 0,235, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 98,146, 94, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, - 255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0); + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98,146, 94, 98,146, 94, + 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255, + 255,255,255,255,160,160,160,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255, 0, 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, + 88, 88, 88,220,220,220,160,160,160,160,160,160, 0, 0, 0,160,160, + 160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, + 160,160, 0, 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, 88, 88, 88, + 220,220,220,255,255,255,255,255,255, 88, 88, 88, 48, 48, 48, 0, 0, + 64,195,195,195,220,220,220,255,255,255,255,255,255,255,255,255, 0, + 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, 88, 88, 88,220,220,220, + 255,255,255,255,255,255,255,255,255, 88, 88, 88,168,220,255, 0, 88, + 192, 0, 88,192,195,195,195,220,220,220,255,255,255, 0, 0, 0, 98, + 146, 94, 98,146, 94, 98,146, 94, 88, 88, 88,220,220,220,195,195,195, + 195,195,195,195,195,195,160,160,160,168,220,255,168,220,255,168,220, + 255, 0, 88,192, 0, 88,192,160,160,160, 0, 0, 0, 98,146, 94, 98, + 146, 94, 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255, + 255,255,255,255,255,255, 88,168,255,168,220,255,168,220,255,168,220, + 255,168,220,255, 0, 0, 64, 0, 0, 0, 98,146, 94, 98,146, 94, 98, + 146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255,255, + 255,255,255,160,160,160,168,220,255,168,220,255, 0,128,255, 0,128, + 255, 0, 88,192, 48, 48, 48, 98,146, 94, 98,146, 94, 98,146, 94, 88, + 88, 88,220,220,220,195,195,195,195,195,195,195,195,195,195,195,195, + 195,195,195, 88,168,255,168,220,255, 0,128,255, 0,128,255, 0,128, + 255, 0, 88,192, 48, 48, 48, 98,146, 94, 98,146, 94, 88, 88, 88,220, + 220,220,255,255,255,255,255,255,255,255,255,255,255,255,195,195,195, + 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, + 255, 0, 88,192, 0, 0, 64, 98,146, 94, 88, 88, 88,220,220,220,255, + 255,255,255,255,255,255,255,255,255,255,255,195,195,195,255,255,255, + 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, + 255, 0, 88,192, 98,146, 94, 88, 88, 88,220,220,220,195,195,195,195, + 195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195, + 195,195,195, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, + 255, 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255, + 255,255,255,255,255,195,195,195,255,255,255,255,255,255,255,255,255, + 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 98,146, + 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255,255,255, + 255,255,195,195,195,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 88,168,255, 88,168,255, 0,128,255, 98,146, 94, 88, 88, + 88,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, + 220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, + 88, 88, 88, 88,168,255, 88,168,255, 98,146, 94, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 98,146, 94, 98,146, 94); Const - stdimg_bevel : Array[0..1709] of byte = ( - 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 120, 6, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,200,208,212, + stdimg_menu_save_all_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,202,138, + 97,195,132, 88,211,139,104,225,143,112,220,141,108,218,139,109,215, + 138,110,205,139,108,171,109, 68,166, 95, 46,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,198,131, 85,239,206, + 186,221,255,255,135,238,199,162,244,215,162,246,215,140,238,199,224, + 255,255,221,162,133,171,106, 62,255,255,255,255,255,255,255,255,255, + 255,255,255,208,153,117,203,148,110,195,127, 81,239,182,154,234,243, + 232, 81,191,132,111,201,152,113,201,153, 84,191,132,228,244,233,221, + 156,123,170,105, 58,255,255,255,255,255,255,255,255,255,255,255,255, + 205,147,107,241,212,195,196,129, 84,234,182,151,243,243,234,237,241, + 230,239,241,230,239,240,230,237,241,229,243,245,237,213,156,121,176, + 112, 68,255,255,255,255,255,255,213,163,131,208,158,123,199,131, 88, + 238,180,153,201,139, 97,230,181,146,226,167,129,225,167,129,222,163, + 125,220,161,123,219,159,121,217,158,119,212,154,115,187,126, 87,255, + 255,255,255,255,255,210,157,121,242,216,201,201,145,106,225,190,159, + 202,141,101,234,184,153,221,165,126,221,166,128,219,163,124,217,160, + 122,217,160,121,216,159,120,216,158,120,191,132, 93,255,255,255,255, + 255,255,208,154,118,242,197,175,205,153,115,215,184,148,200,136, 93, + 239,191,161,253,252,250,254,252,251,254,253,253,254,253,252,253,251, + 250,253,252,251,221,168,133,193,127, 83,255,255,255,255,255,255,208, + 156,120,238,197,173,207,155,119,235,192,164,199,134, 91,239,192,158, + 255,255,255,204,147,110,255,255,255,255,255,255,255,251,247,255,248, + 241,228,175,140,199,138, 97,255,255,255,255,255,255,212,164,130,235, + 197,169,204,142,101,238,190,161,204,141,101,243,205,176,255,255,255, + 227,199,179,255,255,255,255,255,255,255,255,255,255,255,255,234,191, + 161,201,137, 96,255,255,255,255,255,255,213,165,134,238,199,175,202, + 140, 99,237,191,158,212,151,110,212,158,123,208,152,113,214,164,130, + 205,142,104,205,144,105,208,154,117,209,153,115,200,139, 98,238,220, + 208,255,255,255,255,255,255,212,161,127,242,205,181,210,156,121,244, + 211,186,255,255,255,231,206,189,255,255,254,255,255,255,251,246,242, + 248,241,237,237,199,173,208,152,117,255,255,255,255,255,255,255,255, + 255,255,255,255,211,160,126,242,205,179,218,165,129,212,160,126,214, + 166,131,219,176,146,211,157,123,211,158,123,211,159,123,209,154,117, + 207,154,118,240,225,214,255,255,255,255,255,255,255,255,255,255,255, + 255,215,165,134,246,216,193,255,255,255,233,211,195,255,255,255,255, + 255,255,255,255,255,255,255,255,238,205,181,212,162,130,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,221,173, + 141,221,179,151,218,174,143,223,183,156,216,166,136,216,168,137,218, + 175,146,219,175,145,212,164,131,241,227,217,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,128,128,128,200,208,212,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,255,255, - 255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255, - 255,255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,128,128,128,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,200,208,212,128, - 128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255, - 128,128,128,255,255,255,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,128,128,128,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,255,255,255, - 200,208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, - 0,255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,255,255,255,200,208,212,128,128,128,255,255,255,255, 0,255,255, - 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,128,128,128,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,255,255,255,200,208,212,128,128,128,255,255,255, - 255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255, - 255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,255,255,255,200,208,212,128,128, - 128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128, - 128,128,255,255,255,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0, - 255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,128,128,128,255,255,255,255, 0,255,255, 0, - 255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,255, - 255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, - 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255, - 200,208,212,255,255,255,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,128,128,128,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128, - 255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128, - 128,255,255,255,200,208,212,255,255,255,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,128,128,128,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, - 0,255,128,128,128,255,255,255,200,208,212,255,255,255,200,208,212, - 200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, - 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,255,255, - 255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,128, - 128,128,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, 0, - 255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200, - 208,212,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,128,128,128,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,255, - 255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, - 255,255,255,200,208,212,200,208,212,200,208,212,200,208,212,200,208, - 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, - 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, - 128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, - 255,128,128,128,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,200,208,212,255,255,255,255, 0,255,255, 0,255, 0, - 0, 0,255, 0,255,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,200,208,212,255, 0,255, - 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 0, 0, 0); + 255,255,255,255,255,255); Const - stdimg_bookmark_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,223,209,197,157,105, 71,135, 74, 32,135, 74, - 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32, - 255, 0,255,150, 96, 59,168,109, 61,215,169,130,182,134, 96,162,115, - 77,166,122, 85,172,129, 95,177,136,103,181,143,111,185,149,118,189, - 155,126,194,160,133,197,165,139,200,169,144,135, 74, 32,255, 0,255, - 135, 74, 32,188,132, 80,216,169,130,179,130, 90,156,107, 66,147,110, - 75,127,111, 86,166,120, 82,169,124, 87,151,124, 95,150,128,101,179, - 137,103,182,141,108,199,167,142,135, 74, 32,255, 0,255,135, 74, 32, - 188,132, 80,216,169,130,179,130, 90,156,107, 66, 26,104,116, 12,108, - 126, 37,107,116, 68,110,109, 9,103,121, 8,102,120,149,130,106,182, - 141,108,198,165,139,135, 74, 32,255, 0,255,135, 74, 32,188,132, 80, - 216,169,130,179,130, 90,156,107, 66, 23,106,120, 64,207,227, 50,182, - 202, 38,157,176, 72,221,240, 18,114,131,145,129,105,182,141,108,197, - 163,137,135, 74, 32,255, 0,255,135, 74, 32,188,132, 80,216,169,130, - 179,130, 90,156,107, 66, 35,106,115, 52,186,206, 79,233,252, 79,233, - 252, 78,231,250, 3, 99,118,162,133,104,182,141,108,195,161,134,135, - 74, 32,255, 0,255,135, 74, 32,188,132, 80,216,169,130,179,130, 90, - 68,104, 99, 19,118,136, 73,224,242, 79,233,252, 79,233,252, 79,232, - 251, 36,151,170, 33,109,119,169,138,108,194,159,131,135, 74, 32,255, - 0,255,135, 74, 32,188,132, 80,216,169,130,162,127, 93, 3, 98,118, - 60,198,216,113,232,247,194,247,254,215,250,254,135,239,252, 74,216, - 235, 19,121,140,108,122,112,193,157,128,135, 74, 32,255, 0,255,135, - 74, 32,188,132, 80,216,169,130,179,130, 90, 68,104,100, 24,106,119, - 3, 97,119,147,221,232,223,250,253, 10,106,125, 18,106,122, 43,111, - 121,163,137,109,191,155,126,135, 74, 32,255, 0,255,135, 74, 32,188, - 132, 80,216,169,130,179,130, 90,156,107, 66,159,111, 71,111,109, 90, - 47,135,150,122,198,210, 62,112,114,175,133, 98,179,137,103,182,141, - 108,190,153,123,135, 74, 32,255, 0,255,135, 74, 32,188,132, 80,216, - 169,130,179,130, 90,156,107, 66,159,111, 71,162,115, 77, 38,106,115, - 13,102,120,146,123, 95,175,133, 98,179,137,103,182,141,108,189,151, - 120,135, 74, 32,255, 0,255,135, 74, 32,182,128, 81,183,136,102,172, - 124, 92,166,122, 89,167,122, 89,167,123, 89,169,126, 92,170,128, 94, - 174,131, 96,175,133, 98,179,137,103,182,141,108,187,149,118,135, 74, - 32,255, 0,255,135, 74, 32,156,104, 67,153, 98, 60,156,102, 64,153, - 102, 63,159,110, 72,166,119, 84,170,126, 90,172,129, 93,174,131, 96, - 176,135,100,179,137,103,182,141,108,186,146,115,135, 74, 32,255, 0, - 255,135, 74, 32,150, 92, 47,203,188,176,236,233,230,249,246,244,249, - 247,244,250,247,245,250,247,245,250,247,245,250,248,245,250,248,246, - 251,248,246,251,248,246,251,249,247,135, 74, 32,255, 0,255,150, 96, - 59,160,101, 54,213,202,193,210,217,213,214,220,217,218,224,221,222, - 228,225,227,231,229,231,235,233,235,239,237,240,242,241,244,246,245, - 249,250,249,253,253,253,135, 74, 32,255, 0,255,223,209,197,157,105, - 71,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32, - 135, 74, 32,135, 74, 32); - -Const - stdimg_btn_cancel_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255, 63, 61,237, 59, 56,235,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 33, - 31,227, 30, 28,226,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 74, 71,240, 79, 76,242, 64, 62,237, 60, 57,235,255,255, - 255,255,255,255,255,255,255,255,255,255, 39, 37,229, 36, 34,228, 49, - 47,234, 31, 29,226,255,255,255,255,255,255,255,255,255, 84, 81,243, - 88, 86,245, 99, 97,250, 88, 85,246, 65, 63,237, 61, 58,236,255,255, - 255,255,255,255, 48, 45,231, 44, 42,230, 65, 63,241, 76, 74,246, 49, - 47,234, 31, 29,226,255,255,255,255,255,255, 89, 86,245, 91, 88,246, - 101, 98,250,113,112,255, 89, 86,246, 66, 64,238, 62, 59,236, 57, 55, - 235, 53, 50,233, 71, 69,242, 99, 98,255, 74, 72,244, 47, 45,233, 34, - 32,227,255,255,255,255,255,255,255,255,255, 90, 87,245, 91, 89,246, - 102, 99,250,116,113,255, 90, 88,246, 67, 65,238, 62, 60,236, 80, 77, - 244,104,103,255, 80, 78,245, 54, 52,235, 42, 39,229,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 91, 88,246, 92, 90,246, - 103,100,250,116,114,255,115,112,255,112,110,255,110,108,255, 87, 85, - 247, 63, 61,238, 50, 48,232,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 92, 89,246, 93, 91,247, - 121,118,255, 89, 86,255, 87, 84,255,114,112,255, 72, 70,240, 60, 57, - 235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255, 97, 94,248, 93, 90,246,125,121,255, - 94, 91,255, 91, 88,255,118,116,255, 70, 67,239, 65, 63,237,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,105,103,251,102, 99,249,112,109,251,128,126,255,126,123,255, - 124,121,255,121,119,255, 94, 92,247, 71, 68,239, 66, 64,238,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,113,110,253,110, - 107,252,119,116,253,134,130,255,118,115,252,100, 98,248, 96, 93,247, - 109,106,250,123,121,255, 96, 93,247, 72, 69,239, 67, 65,238,255,255, - 255,255,255,255,255,255,255,118,115,255,116,113,254,125,122,254,138, - 135,255,124,121,253,108,105,251, 99, 97,249, 95, 92,247, 97, 94,248, - 110,108,250,125,122,255, 97, 95,247, 73, 70,240, 68, 65,238,255,255, - 255,255,255,255,119,116,255,122,119,255,129,126,255,129,126,254,116, - 113,253,108,105,251,255,255,255,255,255,255, 96, 93,247, 98, 95,248, - 111,109,251,126,124,255, 98, 95,248, 74, 71,240, 69, 66,238,255,255, - 255,255,255,255,119,116,255,122,119,255,121,118,254,114,111,253,255, - 255,255,255,255,255,255,255,255,255,255,255, 97, 94,248,100, 97,248, - 106,104,249, 84, 81,243, 79, 77,242,255,255,255,255,255,255,255,255, - 255,255,255,255,119,116,255,119,116,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 98, 95,248, 93, 91,247, - 89, 86,245,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 99, 96,248,255,255,255, - 255,255,255,255,255,255); - -Const - stdimg_btn_close_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,183,183,183,174,174,174, 48,113,169, 44,110,166, 40,107, - 163, 36,104,160, 33,102,158, 29, 99,155, 26, 97,153, 23, 95,151, 20, - 92,148, 17, 91,147,108,108,108,108,108,108,255,255,255,255,255,255, - 255,255,255,255,255,255, 54,117,173,134,182,216,131,179,215,129,178, - 214,125,175,213,123,173,212,121,171,211,118,170,210,116,168,209, 21, - 93,149,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 60,121,177,139,185,218,102,162,206, 98,160,205, 95,157, - 203, 91,154,201, 88,151,200, 84,149,199,119,171,211, 25, 96,152,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 66,125,181,143,189,220,108,167,208,103,164,207,100,161,205, 96,158, - 204, 92,155,202, 89,153,201,123,173,212, 30,100,156,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 72,130,186, - 147,192,221,113,171,210,109,168,209,105,165,207,102,162,206, 98,159, - 204, 94,156,203,127,176,213, 35,103,159,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 78,134,190,152,195,223, - 119,175,213,115,172,211,111,169,210,107,167,208, 91,183,227, 84,194, - 237,129,180,215, 40,107,163,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255, 83,138,194,156,198,225,124,179,215, - 121,177,213,117,173,212,113,171,210, 95,186,228, 75,212,255,124,187, - 224, 46,111,167,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255, 89,142,198,160,201,227,130,184,217,126,181,216, - 122,178,214,119,175,213,115,172,211,109,171,212,140,186,218, 51,115, - 171,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255, 94,145,201,164,204,228,135,187,219,132,185,218,128,182,216, - 124,179,215,121,176,213,116,173,212,143,189,220, 57,119,175,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 99, - 149,205,168,207,229,140,191,221,136,189,220,133,186,219,129,183,217, - 126,180,215,122,178,214,148,193,221, 63,124,180,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,103,152,208,171, - 209,231,144,194,223,141,192,222,138,190,220,135,187,219,131,184,218, - 128,182,216,153,196,224, 69,128,184,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,107,155,211,174,212,232,171, - 211,232,170,209,231,168,207,229,165,205,228,162,203,228,160,201,226, - 157,199,225, 75,132,188,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,110,157,213,108,155,211,105,154,210,102, - 151,207, 99,149,205, 96,147,203, 92,144,200, 89,142,198, 85,139,195, - 81,136,192,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); - -Const - stdimg_btn_ok_16 : Array[0..821] of byte = ( + stdimg_btn_ok_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, @@ -360,265 +156,489 @@ Const 255,255,255,255,255,255); Const - stdimg_checkboxes : Array[0..2601] of byte = ( - 66, 77, 42, 10, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 65, 0, 0, 0, 13, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 244, 9, 0, 0,196, 14, 0, 0,196, 14, 0, 0, 0, 0, 0, 0, 0, + stdimg_font_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,128,128,128,135,135,135,133, + 133,133,133,133,133,128,128,128,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255, 88, 88, 88,102,102,102,108,108,108, 99, + 99, 99, 83, 83, 83,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255, 81, 81, 81, 84, 84, 84, 81, 81, 81,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255, 60, 77,162, 76, 89,162, 77, 90,161, 74, 87,161, 73, 84, + 156,255, 0,255, 80, 80, 77, 45, 45, 45, 74, 74, 74,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 36, 59,219, 0, 43,255, 0, 47,255, 0, 39,239, 45, 62,197,255, 0, + 255, 65, 65, 63, 7, 7, 7, 60, 60, 60,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 19, 38,213, 0, 32,255, 80, 88,168,255, 0,255,255, 0,255, 55, 55, + 55, 0, 0, 0, 58, 58, 58,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 28, 37,212, + 0, 16,255, 86, 89,166,255, 0,255,255, 0,255, 55, 55, 55, 1, 1, + 1, 58, 58, 58,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255, 27, 28,213, 0, 3,255, + 85, 85,168,255, 0,255,255, 0,255, 55, 55, 55, 0, 0, 0, 58, 58, + 58,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255, 27, 27,213, 0, 0,255, 84, 84,166, + 255, 0,255,255, 0,255, 57, 57, 57, 11, 11, 11, 60, 60, 60,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255, 27, 27,220, 3, 4,166, 62, 62, 88,255, 0,255, + 255, 0,255, 71, 71, 71, 49, 49, 49, 71, 71, 71,255, 0,255,255, 0, + 255,100,100,100,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255, 27, 27,224, 19, 19,138, 52, 52, 32,255, 0,255,255, 0,255, + 78, 78, 78, 93, 93, 93, 76, 76, 76,255, 0,255,255, 0,255, 40, 40, + 40,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 29, + 29,225, 24, 24,153,113,113, 93, 65, 65, 65, 71, 71, 71, 84, 84, 81, + 139,139,138, 75, 75, 75, 74, 74, 74, 66, 66, 66,113,113,113,255, 0, + 255, 78, 78,167, 88, 88,152,255, 0,255,255, 0,255, 48, 48,225, 37, + 38,161,103,103, 98,114,114,111,106,106,103,106,106,115,112,112,115, + 111,111,111,105,105,105,113,113,113,113,113,113,255, 0,255, 83, 83, + 197, 45, 45,204,255, 0,255,255, 0,255, 59, 60,212, 81, 83,247, 72, + 72,146,255, 0,255,255, 0,255, 43, 44,213,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,105,105,181,113,114, + 255, 76, 76,207, 77, 77,191, 97, 98,244,127,128,255, 79, 79,220, 83, + 84,188, 87, 87,223,104,105,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,123,123,178, 80, 80,215, 84, 84, + 223, 80, 80,228, 81, 81,220, 74, 74,218, 79, 79,223, 77, 77,228, 83, + 83,239, 67, 68,231,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); + +Const + stdimg_choice_yes_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255, 12,164, 60, 17,171, 71, 13,173, 73,104,175, + 120,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 87,183,107, 78,224,155, 92,234,170, 92,234,171, 35,192,104, 87,167, + 106,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 32,183, 89, + 102,255,205,104,255,201, 85,255,195, 73,252,184, 24,199,107, 85,166, + 102,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,157,207,165, 22,223,131, 47,255,181, + 45,255,174, 30,255,170, 3,255,160, 17,250,157, 12,190, 93, 68,158, + 86,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255, 68,173, 91, 0,248,147, 1,254,156, 10,254,160, + 18,251,159, 38,250,165, 49,242,160, 70,234,157, 21,183, 87, 74,169, + 94,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255, 7,173, 65, 7,243,144, 45,243,160, 72,243,171,105,199,139, + 96,231,164,112,241,183,110,233,172,102,224,157, 28,169, 74, 57,157, + 75,255, 0,255,255, 0,255,255, 0,255,255, 0,255,148,199,148, 18, + 202,101, 79,235,162,102,241,178, 85,205,129,255, 0,255,172,211,180, + 89,192,126,129,232,178,130,225,170,129,215,157, 45,168, 78, 63,165, + 77,255, 0,255,255, 0,255,255, 0,255,127,196,134, 86,221,149,112, + 231,171,111,233,173,152,207,158,255, 0,255,255, 0,255,255, 0,255, + 101,183,121,151,227,181,150,221,173,157,217,170, 60,168, 84, 44,152, + 56,255, 0,255,255, 0,255,255, 0,255,138,190,142, 97,180,115, 81, + 180,107,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 109,181,120,173,225,187,170,219,179,181,219,181, 84,174,101, 42,147, + 51,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 121,181,123,195,228,198,191,223,191,206,230,203,110,184,122,115,185, + 121,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 126,181,126,218,237,218,228,242,228,169,210,169,173,204,172,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 115,168,114,139,187,139,195,215,194,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); + +Const + stdimg_folder_new_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, + 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, + 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, + 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, + 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, + 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, + 134,213,172,134,213,172,134,212,172,134,212,172,134,212,172,134,213, + 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, + 215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,213,175, + 138,210,177,142,207,178,144,206,178,145,207,178,144,212,176,140,224, + 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, + 217,179,143,217,179,143,217,179,143,213,180,145,196,186,158,180,192, + 170,164,199,184,163,199,184,170,197,179,188,190,165,212,205,184,133, + 78, 38,135, 74, 32,230,205,181,217,179,143,217,179,143,217,179,143, + 217,179,143,212,180,146,187,190,165,144,206,198, 9,212,234, 95,222, + 232, 95,223,233, 10,212,236,128,212,211,169,216,209,124,104, 74,135, + 74, 32,231,207,184,217,179,143,217,179,143,217,179,143,214,179,144, + 192,188,161,139,206,200, 7,212,235,234,251,252, 4,212,237, 4,212, + 237,234,251,253, 7,212,237,111,226,235,107,153,141,135, 74, 32,232, + 210,188,217,179,143,217,179,143,216,179,143,208,182,149,165,197,181, + 89,219,229, 4,212,237,252,254,254,230,250,252,230,250,252,231,250, + 252, 4,213,237, 78,228,246, 92,189,192,136, 76, 34,230,209,188,234, + 212,192,234,212,192,233,212,192,216,214,198,146,220,221, 63,222,240, + 2,212,237,231,251,253,230,250,253,230,250,253,230,249,252, 1,212, + 237, 57,225,245, 86,202,209,139, 77, 36,136, 76, 34,135, 74, 32,135, + 74, 32,134, 74, 32,127, 92, 57, 97,161,154, 3,211,236,230,250,252, + 230,250,253,230,250,253,230,250,253,230,250,253,230,250,252, 4,213, + 237, 84,197,202,135, 74, 32,204,164,133,188,136, 95,188,136, 94,187, + 136, 94,178,143,106,123,167,154, 3,210,234,231,250,252,230,250,253, + 230,250,253,230,250,253,230,250,253,230,250,252, 4,213,236, 93,177, + 176,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,200, + 163,127,178,196,180, 8,210,233, 1,211,236, 0,212,237,237,251,253, + 237,251,253, 0,212,237, 1,212,237, 6,210,233,146,193,189,225,210, + 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,203, + 194,176,108,139,122, 80,218,232, 33,218,241, 0,212,237, 0,212,237, + 25,218,241, 70,227,245,157,241,251,231,252,254,255,255,255,225,210, + 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,134, 75, 33,207, + 211,204,190,245,252,129,235,248, 95,229,246, 90,229,246,118,234,248, + 183,244,252,234,252,254,253,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_arrow_right : Array[0..137] of byte = ( + 66, 77,138, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 4, 0, 0, 0, 7, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 84, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, + 0, 0, 0, 0,255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, 0, + 0, 0,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, 0, + 0,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, + 0,255); + +Const + stdimg_folder_up_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, + 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, + 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, + 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, + 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, + 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, + 134,213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213, + 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, + 215,175,138,215,175,138,143, 85, 42,143, 85, 42,143, 85, 42,143, 85, + 42,143, 85, 42,143, 85, 42,215,175,138,215,175,138,215,175,138,226, + 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, + 217,179,143,143, 85, 42,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,217,179,143,217,179,143,228,202,177,135, + 74, 32,135, 74, 32,230,205,181,217,179,143,143, 85, 42,205,164,128, + 143, 85, 42,205,164,128,143, 85, 42,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,217,179,143,230,205,181,135, 74, 32,135, + 74, 32,231,207,184,217,179,143,182,133, 95,143, 85, 42,143, 85, 42, + 143, 85, 42,182,133, 95,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,231,207,184,135, 74, 32,135, 74, 32,232, + 210,188,217,179,143,217,179,143,205,164,128,143, 85, 42,205,164,128, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,232,210,188,135, 74, 32,136, 76, 34,230,209,188,234, + 212,192,234,212,192,234,212,192,234,212,192,234,212,192,226,197,169, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,234,212,192,135, 74, 32,139, 77, 36,136, 76, 34,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,140, 82, 42,218,190,167,227,200,173, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,235,215, + 196,135, 74, 32,135, 74, 32,204,164,133,188,136, 95,188,136, 94,188, + 136, 94,188,136, 94,175,120, 80,144, 86, 46,220,194,172,236,217,199, + 236,217,199,236,217,199,236,217,199,236,217,199,233,214,196,138, 79, + 37,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,205, + 161,124,218,186,158,190,150,120,135, 74, 32,135, 74, 32,135, 74, 32, + 135, 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,168,147,225,210, + 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,218, + 191,169,144, 89, 49,225,210,200,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,210, + 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,225, + 210,200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 0,127,127,127,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,255,255,255, - 127,127,127,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,255,255,255,127,127,127,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,255,255,255,127,127,127,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,255,255,255,127,127, - 127,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, - 255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, - 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, - 255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127,127, 0, - 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255, - 255,127,127,127, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0, 0,255, - 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255, - 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, - 127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,127,127,127,127,127, - 127, 52, 52, 52, 52, 52, 52,127,127,127,191,191,191,255,255,255,127, - 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, - 191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255, - 255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0,255,255,255,191,191,191,255,255,255,127,127, - 127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191, - 255,255,255,127,127,127, 0, 0, 0,127,127,127, 52, 52, 52, 52, 52, - 52, 52, 52, 52,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52,127, - 127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127,127, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255, - 255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, - 255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, - 0,127,127,127,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52,127,127,127,127,127,127,191,191,191,255,255,255, - 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, - 191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0, - 255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,127, - 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, - 191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127, - 127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52,127,127,127,127,127,127, - 127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127, - 127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191, - 255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, - 255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, - 0, 0,127,127,127,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52,127,127,127,127,127,127,191,191,191,255,255, - 255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 191,191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, - 0,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,191,191,191,255,255,255, - 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, - 191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, 52, 52, 52, - 52, 52, 52, 52, 52, 52,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, - 52,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127, - 127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191, - 191,255,255,255,127,127,127, 0, 0, 0,255,255,255, 0, 0, 0, 0, - 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, - 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, - 0, 0, 0,127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,127,127, - 127,127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,191,191,191,255, - 255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,191,191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, - 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255, - 255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0, - 127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, - 191,191,255,255,255,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,191,191,191,255,255,255,127,127,127, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,191,191,191,255,255,255,127,127, - 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,191,191, - 255,255,255,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,191,191,191,255,255,255, 0,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,255,255,255,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,255, - 255,255,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,255,255,255,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,255,255,255,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,255,255,255, - 0); + 255,255,255,255,255,255); Const - stdimg_choice_no_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255, 98, 98,162,164,164,178,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,152,152,171,101,101,160,255, 0,255,255, 0,255, - 255, 0,255, 48, 48,162, 55, 55,241, 19, 19,202,152,152,172,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,135, - 135,164, 17, 17,205, 48, 48,234, 61, 61,154,255, 0,255,255, 0,255, - 8, 8,224, 72, 72,245, 76, 76,240, 5, 5,200,135,135,163,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,116,116,157, 5, 5,205, 90, - 90,239, 90, 90,244, 9, 9,217,255, 0,255,255, 0,255, 34, 34,254, - 55, 55,255, 89, 89,255, 74, 74,237, 5, 5,199,119,119,156,255, 0, - 255,255, 0,255, 98, 98,152, 8, 8,206, 90, 90,237,115,115,255, 85, - 85,255, 54, 54,253,255, 0,255,255, 0,255, 29, 29,255, 43, 43,255, - 57, 57,255, 86, 86,255, 69, 69,235, 5, 5,196,102,102,148, 85, 85, - 147, 9, 9,203, 84, 84,237,106,106,255, 80, 80,255, 65, 65,255, 52, - 52,255,255, 0,255,255, 0,255,255, 0,255, 30, 30,255, 43, 43,255, - 53, 53,255, 74, 74,255, 55, 55,232, 1, 1,187, 6, 6,192, 68, 68, - 237, 88, 88,255, 71, 71,255, 62, 62,255, 54, 54,249,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255, 31, 31,251, 47, 47,255, - 60, 60,255, 78, 78,255, 49, 49,232, 55, 55,237, 75, 75,255, 56, 56, - 255, 50, 50,255, 55, 55,241,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255, 77, 77,238, 97, 97,255, - 96, 96,255, 96, 96,255, 98, 98,255, 98, 98,255, 91, 91,255, 73, 73, - 227,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 43, 43,156, 61, 61,244, 99, 99,255, - 99, 99,255,100,100,255,100,100,255, 54, 54,237, 75, 75,146,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255, 47, 47,123, 0, 0,166, 49, 49,242,107,107,255,106,106,255, - 106,106,255,105,105,255, 33, 33,230, 0, 0,152, 82, 82,127,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 43, 43,115, 0, - 0,164, 55, 55,243,121,121,255,120,120,255,121,121,255,121,121,255, - 120,120,255,116,116,255, 38, 38,229, 0, 0,146, 82, 82,123,255, 0, - 255,255, 0,255,255, 0,255, 45, 45,112, 0, 0,156, 66, 66,242,138, - 138,255,137,137,255,136,136,255,102,102,209,103,103,224,141,141,255, - 136,136,255,132,132,255, 42, 42,227, 0, 0,139, 91, 91,128,255, 0, - 255,255, 0,255, 0, 0,156, 73, 73,242,155,155,255,153,153,255,153, - 153,255,115,115,207,255, 0,255,255, 0,255,110,110,228,158,158,255, - 153,153,255,148,148,255, 47, 47,229, 13, 13,130,255, 0,255,255, 0, - 255, 85, 85,254,174,174,255,169,169,255,168,168,255,119,119,205,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,118,118,228,175,175,255, - 169,169,255,169,169,255, 60, 60,222,255, 0,255,255, 0,255,127,127, - 208,187,187,255,187,187,255,122,122,207,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,126,126,228,200,200,255, - 164,164,255,152,152,199,255, 0,255,255, 0,255,255, 0,255,126,126, - 210,127,127,214,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,121,121,231,154,154,197, - 255, 0,255,255, 0,255); + stdimg_ellipse : Array[0..181] of byte = ( + 66, 77,182, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 10, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 128, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0, + 229,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0,229, 0, + 0,255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0, 0, 0, + 0, 0,255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0,255, + 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0, 0, 0, 0, 0, + 255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0,255, 0,229, + 255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0, + 229,255, 0,229,255, 0,229,255, 0,229, 0, 0); + +Const + stdimg_dialog_warning_32 : Array[0..3125] of byte = ( + 66, 77, 54, 12, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 12, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,252,252,252,244,244,244,237,237,237,235,235, + 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, + 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, + 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, + 235,235,235,235,237,237,237,242,242,242,248,248,248,254,254,254,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,239,239,239, + 222,222,222,198,198,207,190,190,201,186,186,197,186,186,197,186,186, + 197,186,186,197,186,186,197,186,186,197,186,186,197,186,186,197,186, + 186,197,186,186,197,186,186,197,186,186,197,186,186,197,186,186,197, + 186,186,197,186,186,197,186,186,197,186,186,197,186,186,197,190,190, + 201,189,189,200,197,197,206,223,223,223,246,246,246,255,255,255,255, + 255,255,255,255,255,244,244,244,178,178,210, 22, 22,165, 0, 0,159, + 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0, + 159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, + 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, + 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0, + 159, 21, 21,165,173,173,209,250,250,250,255,255,255,255,255,255,243, + 243,243, 39, 39,171, 61, 61,196,112,112,224,117,117,226,116,116,226, + 113,113,225,111,111,225,108,108,224,105,105,223,102,102,223,100,100, + 222, 97, 97,222, 94, 94,221, 92, 92,220, 89, 89,220, 86, 86,219, 83, + 83,219, 81, 81,218, 78, 78,218, 75, 75,217, 72, 72,216, 69, 69,216, + 67, 67,215, 64, 64,215, 62, 62,214, 54, 54,212, 28, 28,188, 20, 20, + 166,246,246,246,255,255,255,255,255,255,253,253,253, 15, 15,166,121, + 121,221, 20, 20,208, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, + 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0, + 204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, + 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, + 0, 0,204, 10, 10,206, 56, 56,207, 2, 2,160,247,247,251,255,255, + 255,255,255,255,255,255,255, 90, 90,194, 89, 89,200, 58, 58,216, 0, + 0,204,163,163,219,210,210,224,210,210,224,211,211,225,212,212,226, + 212,212,226,213,213,227,214,214,228,215,215,229,216,216,230,216,216, + 230,217,217,231,217,217,231,218,218,232,218,218,232,219,219,233,220, + 220,234,221,221,235,222,222,236,193,193,231, 0, 0,204, 27, 27,209, + 44, 44,192, 53, 53,181,255,255,255,255,255,255,255,255,255,255,255, + 255,221,221,242, 25, 25,168,117,117,221, 8, 8,206, 80, 80,211,224, + 224,224,225,225,225,225,225,225,226,226,226,227,227,227,227,227,227, + 228,228,228,229,229,229,230,230,230,230,230,230,231,231,231,232,232, + 232,233,233,233,234,234,234,234,234,234,235,235,235,236,236,236,237, + 237,237,105,105,219, 3, 3,205, 59, 59,211, 14, 14,166,193,193,232, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,109,109, + 201, 85, 85,197, 68, 68,218, 2, 2,204,179,179,219,224,224,224,225, + 225,225,225,225,225,226,226,226,227,227,227,227,227,227,228,228,228, + 60, 60, 60, 55, 55, 55,230,230,230,231,231,231,232,232,232,233,233, + 233,234,234,234,234,234,234,235,235,235,205,205,231, 7, 7,205, 36, + 36,211, 47, 47,188, 70, 70,186,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,234,234,247, 23, 23,169,121,121, + 220, 14, 14,207, 59, 59,209,223,223,223,224,224,224,224,224,224,225, + 225,225,226,226,226,226,226,226,227,227,227, 55, 55, 55, 53, 53, 53, + 230,230,230,230,230,230,231,231,231,232,232,232,233,233,233,234,234, + 234,234,234,234, 82, 82,215, 8, 8,206, 67, 67,210, 10, 10,163,212, + 212,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,129,129,208, 74, 74,190, 81, 81,220, 0, 0, + 204,162,162,218,223,223,223,224,224,224,224,224,224,225,225,225,226, + 226,226,226,226,226,215,215,215,215,215,215,229,229,229,230,230,230, + 230,230,230,231,231,231,232,232,232,233,233,233,186,186,227, 1, 1, + 204, 47, 47,213, 46, 46,185, 96, 96,196,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 244,244,251, 25, 25,169,121,121,218, 23, 23,209, 42, 42,208,221,221, + 223,223,223,223,224,224,224,224,224,224,225,225,225,226,226,226, 37, + 37, 37, 37, 37, 37,228,228,228,229,229,229,229,229,229,230,230,230, + 231,231,231,232,232,232, 59, 59,211, 14, 14,207, 73, 73,209, 11, 11, + 164,228,228,245,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,151,151,216, + 63, 63,185, 94, 94,222, 0, 0,204,141,141,215,223,223,223,223,223, + 223,224,224,224,224,224,224,225,225,225, 27, 27, 27, 27, 27, 27,227, + 227,227,228,228,228,229,229,229,229,229,229,230,230,230,164,164,223, + 0, 0,204, 60, 60,215, 41, 41,179,120,120,205,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,251,251,253, 35, 35,174,116,116,215, + 34, 34,211, 27, 27,206,215,215,221,223,223,223,223,223,223,224,224, + 224,224,224,224, 13, 13, 13, 13, 13, 13,226,226,226,227,227,227,228, + 228,228,229,229,229,226,226,228, 40, 40,209, 24, 24,209, 75, 75,206, + 16, 16,167,241,241,250,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,172,172,224, 49, 49,178,106,106,223, 1, 1,204, + 121,121,213,222,222,222,222,222,222,223,223,223,224,224,224, 3, 3, + 3, 3, 3, 3,225,225,225,226,226,226,227,227,227,228,228,228,140, + 140,218, 1, 1,204, 75, 75,218, 34, 34,174,144,144,213,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254, + 254,255, 49, 49,179,109,109,211, 47, 47,213, 16, 16,206,206,206,220, + 222,222,222,222,222,222,215,215,215, 0, 0, 0, 0, 0, 0,217,217, + 217,225,225,225,226,226,226,218,218,226, 25, 25,207, 36, 36,211, 74, + 74,203, 27, 27,171,249,249,253,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,193,193,232, 36, + 36,173,117,117,224, 4, 4,205,102,102,212,221,221,221,222,222,222, + 204,204,204, 0, 0, 0, 0, 0, 0,206,206,206,225,225,225,225,225, + 225,118,118,216, 4, 4,205, 87, 87,219, 27, 27,170,167,167,222,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255, 69, 69,186,100,100,205, 59, + 59,216, 7, 7,205,195,195,219,221,221,221,193,193,193, 0, 0, 0, + 0, 0, 0,195,195,195,224,224,224,206,206,223, 12, 12,205, 49, 49, + 214, 70, 70,199, 45, 45,178,254,254,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,211,211,238, 25, 25,170,124,124,224, 8, 8,206, 82, + 82,210,221,221,221,218,218,218,207,207,207,207,207,207,220,220,220, + 223,223,223, 97, 97,213, 9, 9,206, 98, 98,219, 17, 17,166,189,189, + 230,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255, 92, 92,194, 89, 89,199, 72, 72,218, 2, 2,204,180,180,217,221, + 221,221,221,221,221,222,222,222,222,222,222,192,192,220, 4, 4,204, + 64, 64,217, 65, 65,194, 68, 68,186,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,226,226,244, 20, 20, + 168,128,128,224, 15, 15,207, 63, 63,209,220,220,220,221,221,221,221, + 221,221,222,222,222, 74, 74,210, 17, 17,207,104,104,219, 11, 11,163, + 210,210,238,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,114,114,202, 79, 79,193, 85, 85, + 220, 0, 0,204,162,162,215,220,220,220,220,220,220,173,173,217, 1, + 1,204, 80, 80,220, 59, 59,189, 92, 92,194,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,238,238,249, 20, 20,167,128,128,222, 25, 25,209, 44, 44, + 207,218,218,219,220,220,220, 53, 53,208, 28, 28,210,106,106,217, 10, + 10,164,226,226,244,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 137,137,211, 67, 67,187, 99, 99,223, 0, 0,204,143,143,214,152,152, + 214, 1, 1,204, 97, 97,223, 51, 51,184,118,118,204,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,246,246,252, 25, 25,169, + 122,122,218, 36, 36,211, 21, 21,206, 23, 23,205, 42, 42,212,104,104, + 215, 14, 14,165,239,239,249,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,158,158,218, 53, 53,181,113,113,225, + 1, 1,204, 3, 3,205,113,113,225, 41, 41,177,142,142,212,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,252,252,254, 37, 37,174,111,111,213, 66, 66,217, 70, 70,218, + 96, 96,210, 25, 25,170,248,248,252,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,180, + 180,227, 22, 22,168,109,109,218,106,106,218, 20, 20,169,165,165,221, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,140,140,211, 12, + 12,165, 8, 8,163,124,124,206,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,252,252,254,251,251,253,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255); Const - stdimg_choice_yes_16 : Array[0..821] of byte = ( + stdimg_folder_home_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255, 12,164, 60, 17,171, 71, 13,173, 73,104,175, - 120,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 87,183,107, 78,224,155, 92,234,170, 92,234,171, 35,192,104, 87,167, - 106,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 32,183, 89, - 102,255,205,104,255,201, 85,255,195, 73,252,184, 24,199,107, 85,166, - 102,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,157,207,165, 22,223,131, 47,255,181, - 45,255,174, 30,255,170, 3,255,160, 17,250,157, 12,190, 93, 68,158, - 86,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255, 68,173, 91, 0,248,147, 1,254,156, 10,254,160, - 18,251,159, 38,250,165, 49,242,160, 70,234,157, 21,183, 87, 74,169, - 94,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255, 7,173, 65, 7,243,144, 45,243,160, 72,243,171,105,199,139, - 96,231,164,112,241,183,110,233,172,102,224,157, 28,169, 74, 57,157, - 75,255, 0,255,255, 0,255,255, 0,255,255, 0,255,148,199,148, 18, - 202,101, 79,235,162,102,241,178, 85,205,129,255, 0,255,172,211,180, - 89,192,126,129,232,178,130,225,170,129,215,157, 45,168, 78, 63,165, - 77,255, 0,255,255, 0,255,255, 0,255,127,196,134, 86,221,149,112, - 231,171,111,233,173,152,207,158,255, 0,255,255, 0,255,255, 0,255, - 101,183,121,151,227,181,150,221,173,157,217,170, 60,168, 84, 44,152, - 56,255, 0,255,255, 0,255,255, 0,255,138,190,142, 97,180,115, 81, - 180,107,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 109,181,120,173,225,187,170,219,179,181,219,181, 84,174,101, 42,147, - 51,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 121,181,123,195,228,198,191,223,191,206,230,203,110,184,122,115,185, - 121,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 126,181,126,218,237,218,228,242,228,169,210,169,173,204,172,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 115,168,114,139,187,139,195,215,194,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, + 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, + 217,181,149,221,186,154, 98,173,106, 89,163, 97, 74,135, 79,117,122, + 118,121,120,121,126,126,126,118,118,118,103,130,106, 95,165,103, 72, + 146, 79, 83,137, 86,217,181,149,138, 79, 37,135, 74, 32,223,192,162, + 213,172,134,195,229,197,142,200,143,101,160,107,216,226,216,149,147, + 149,167,167,167,134,132,134,202,236,206,104,181,114,132,188,135,172, + 203,171,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, + 215,175,138,215,175,138,171,172,172,246,245,246,136,136,136,157,157, + 157,127,127,127,254,254,255,130,127,127,215,175,138,215,175,138,226, + 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, + 217,179,143,170,174,177,252,250,248,130,131,131,115,115,115,126,126, + 126,255,255,255,112,116,124,217,179,143,217,179,143,228,202,177,135, + 74, 32,135, 74, 32,230,205,181,217,179,143,217,179,143, 88,152,197, + 94,150,192,218,222,224,245,243,241,237,238,238,247,244,242,193,201, + 212, 60, 97,147, 56, 92,143,217,179,143,230,205,181,135, 74, 32,135, + 74, 32,231,207,184,217,179,143,217,179,143,103,160,205,100,162,205, + 92,149,191,212,215,217,254,248,243,188,202,213, 69,120,167, 91,139, + 179, 71,112,157,217,179,143,231,207,184,135, 74, 32,135, 74, 32,232, + 210,188,217,179,143,217,179,143,217,179,143, 99,156,203, 94,158,204, + 94,150,192,161,185,202, 79,140,186,106,157,196, 78,125,169,217,179, + 143,217,179,143,232,210,188,135, 74, 32,136, 76, 34,230,209,188,234, + 212,192,234,212,192,234,212,192,234,212,192, 95,154,202,102,163,207, + 93,151,194,111,168,206, 78,132,177,217,179,143,217,179,143,217,179, + 143,234,212,192,135, 74, 32,139, 77, 36,136, 76, 34,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,140, 82, 42, 84,138,186, 79,134,180, + 77,125,171,217,179,143,217,179,143,217,179,143,217,179,143,235,215, + 196,135, 74, 32,135, 74, 32,204,164,133,188,136, 95,188,136, 94,188, + 136, 94,188,136, 94,175,120, 80,144, 86, 46,220,194,172,236,217,199, + 236,217,199,236,217,199,236,217,199,236,217,199,233,214,196,138, 79, + 37,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,205, + 161,124,218,186,158,190,150,120,135, 74, 32,135, 74, 32,135, 74, 32, + 135, 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,168,147,225,210, + 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,218, + 191,169,144, 89, 49,225,210,200,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,210, + 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,225, + 210,200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_arrow_down : Array[0..149] of byte = ( + 66, 77,150, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 7, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 96, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, + 255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255, 0, 0, 0, + 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); Const stdimg_dialog_confirmation_32 : Array[0..3125] of byte = ( @@ -807,6 +827,136 @@ Const 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255); +Const + stdimg_document : Array[0..1061] of byte = ( + 66, 77, 38, 4, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 240, 3, 0, 0,235, 10, 0, 0,235, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 98, 98, + 98, 91, 91, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 97, 97, 97, + 255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, + 88, 88, 88, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, + 0,255,255, 0,255, 88, 88, 88,182,193,198,182,193,198,172,189,196, + 163,184,195,154,179,194,145,175,192,136,170,191,127,165,190,118,160, + 189,115,158,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, + 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,225, + 237,244,216,232,242,208,228,240,200,222,238,191,218,236,184,214,233, + 176,209,231,167,204,229,120,161,188, 48, 48, 48, 90, 90, 90,255, 0, + 255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, + 88,222,222,222,233,241,247,137,144,148,132,141,147,127,139,146,122, + 136,145,117,133,143,112,130,142,176,209,231,127,163,188, 48, 48, 48, + 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255, + 255, 0,255, 88, 88, 88,222,222,222,242,246,250,234,242,248,226,238, + 245,218,233,242,210,228,240,201,224,238,193,220,236,186,214,233,133, + 166,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, + 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,251,252,252, + 148,151,152,143,148,151,138,145,149,133,142,148,128,139,146,123,136, + 145,194,219,236,138,168,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, + 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222, + 222,222,255,255,255,252,253,253,244,248,250,235,243,248,228,238,245, + 220,234,243,212,230,241,202,223,236,144,171,188, 48, 48, 48, 90, 90, + 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0, + 255, 88, 88, 88,222,222,222,255,255,255,155,155,155,154,154,154,148, + 151,152,143,148,151,139,145,149,134,143,148,212,226,236,151,174,188, + 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255, + 255, 0,255,255, 0,255, 88, 88, 88,223,223,223,255,255,255,255,255, + 255,255,255,255,254,254,254,245,248,251,237,244,248,227,237,243,220, + 231,238,151,174,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, + 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222, + 255,255,255,155,155,155,155,155,155,155,155,155,155,155,155,246,249, + 251,236,240,244,217,224,231,175,182,190, 48, 48, 48, 90, 90, 90,255, + 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, + 88, 88,222,222,222,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,245,245,246,222,224,226,177,183,188,132,137,143, 48, 48, + 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0, + 255,255, 0,255, 88, 88, 88,222,222,222,255,255,255,155,155,155,155, + 155,155,155,155,155,255,255,255,137,137,137,112,112,112,107,107,107, + 66, 66, 66, 48, 48, 48, 96, 96, 96,255, 0,255,255, 0,255, 0, 0, + 255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,255,255, + 255,255,255,255,255,255,255,255,255,255,252,252,252,112,112,112,206, + 206,206,255,255,255,153,153,153, 48, 48, 48,135,135,135,255, 0,255, + 255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88, + 222,222,222,255,255,255,255,255,255,255,255,255,255,255,255,234,234, + 234,109,109,109,255,255,255,153,153,153, 88, 88, 88,135,135,135,255, + 0,255,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, + 0,255, 88, 88, 88,222,222,222,222,222,222,222,222,222,222,222,222, + 222,222,222,177,183,188, 88, 88, 88,153,153,153, 88, 88, 88,135,135, + 135,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0,255, 0, + 255,255, 0,255,255, 0,255, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255, 0, 0); + +Const + stdimg_folder_open_file_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 165,129,103,139, 82, 41,139, 82, 41,157,108, 74,157,108, 74,157,108, + 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157, + 108, 74,139, 82, 41,145,110, 84,255,255,255,255,255,255,139, 82, 41, + 209,165,123,210,165,124,210,165,124,210,165,124,210,165,124,210,165, + 124,210,165,124,210,165,124,210,165,124,210,165,124,210,165,124,209, + 165,123,139, 82, 41,255,255,255,255,255,255,157,104, 63,208,161,116, + 207,159,114,207,159,114,207,159,114,207,159,114,207,159,114,207,159, + 114,207,159,114,207,159,114,207,159,114,207,159,114,208,161,116,139, + 82, 41,255,255,255,139, 82, 41,196,151,112,208,162,119,207,160,117, + 207,160,117,207,160,117,207,160,117,207,160,117,207,160,117,207,160, + 117,207,160,117,207,160,117,207,160,117,208,162,119,196,151,112,139, + 82, 41,139, 82, 41,206,164,127,210,165,123,209,164,122,209,164,122, + 209,164,122,209,164,122,209,164,122,209,164,122,209,164,122,209,164, + 122,209,164,122,209,164,122,210,166,124,212,169,129,139, 82, 41,139, + 82, 41,215,180,148,220,186,153,220,186,153,220,186,153,220,185,152, + 216,179,143,212,169,130,211,168,127,211,168,127,211,168,127,211,168, + 127,211,168,127,212,168,128,209,169,133,139, 82, 41,139, 82, 41,139, + 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41, + 210,173,142,218,180,145,217,179,145,217,179,145,217,179,145,217,179, + 145,217,180,145,217,183,152,139, 82, 41,255,255,255,139, 82, 41,127, + 120,111,253,253,253,248,249,249,243,241,240,205,137, 89,139, 82, 41, + 139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, + 41,139, 82, 41,139, 82, 41,255,255,255,139, 82, 41,142,136,127,242, + 242,242,241,242,241,241,241,241,205,137, 89,255,247,240,253,231,214, + 253,230,212,252,228,208,251,227,203,254,243,232,205,136, 88,139, 82, + 41,255,255,255,255,255,255,139, 82, 41,177,154,132,151,138,124,150, + 137,123,148,136,121,205,137, 89,255,247,242, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92,253,242,231,205,137, 89,139, 82, 41,255,255, + 255,255,255,255,139, 82, 41,218,183,153,212,172,137,212,172,137,213, + 174,140,205,136, 88,254,247,241,252,228,209,251,226,204,249,221,196, + 247,218,192,252,242,233,205,137, 89,139, 82, 41,255,255,255,255,255, + 255,157,103, 62,197,159,132,213,181,155,213,181,155,211,179,152,204, + 135, 87,255,247,241, 93, 93, 93, 92, 92, 92, 92, 92, 92,254,249,243, + 255,247,240,205,137, 89,255,255,255,255,255,255,255,255,255,255,255, + 255,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,205,137, 89,255, + 247,240,255,247,240,255,247,240,255,247,240,255,247,240,255,247,240, + 205,137, 89,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,205,137, 89,205,137, 89,205, + 137, 89,205,137, 89,205,137, 89,205,137, 89,205,137, 89,205,137, 89, + 255,255,255,255,255,255); + +Const + stdimg_arrow_left : Array[0..137] of byte = ( + 66, 77,138, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 4, 0, 0, 0, 7, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 84, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, + 255,255, 0,255, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0, + 255, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, + 0, 0); + Const stdimg_dialog_error_32 : Array[0..3125] of byte = ( 66, 77, 54, 12, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, @@ -1082,284 +1232,97 @@ Const 255,255,255,255,255,255,255,255,255,255,255,255,255,255,214,211,210, 160,146,140,242,226,214,239,224,213,233,227,220,245,238,232,249,245, 241,252,249,247,251,250,248,224,224,223,251,249,247,252,245,242,215, - 205,202,183,175,173,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,229,227,226,130,117,114,223,206,194,236,218,203, - 242,231,223,245,236,228,245,237,230,248,243,238,250,247,244,252,249, - 247,248,246,245,252,248,246,250,244,239,251,241,237,139,127,124,209, - 205,204,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,235,233,233,129, - 116,112,213,193,179,233,210,193,231,212,194,248,243,238,240,230,221, - 240,237,233,241,239,237,238,237,237,234,233,231,228,226,226,235,234, - 232,247,241,235,248,238,232,248,237,233,139,127,123,218,214,212,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,254,254,254,142,129,124,202,177,157,226,199,177,222, - 195,169,243,234,226,250,247,246,248,247,246,239,234,231,236,231,226, - 230,226,222,229,226,222,225,223,221,226,226,226,212,210,208,242,232, - 222,245,231,224,243,230,225,133,120,117,249,249,249,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,206,202, - 200,158,136,124,222,190,165,213,178,146,220,191,164,251,249,247,240, - 230,221,238,225,213,242,230,221,243,234,224,244,235,227,245,237,230, - 245,237,230,216,213,211,206,205,205,240,227,216,236,221,207,246,232, - 224,194,180,172,193,188,185,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,154,141,137,201,167,145,208,169, - 134,211,173,140,227,204,184,237,221,207,239,226,214,242,231,221,243, - 234,225,245,237,230,246,239,232,245,237,229,242,233,223,241,231,220, - 245,236,228,237,222,209,233,215,200,234,216,200,240,225,219,148,136, - 133,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,129,114,110,220,181,158,201,154,113,216,184,155,233,215, - 198,236,220,206,238,225,212,241,228,217,242,231,222,243,234,226,245, - 236,228,245,237,230,245,236,229,241,229,218,236,221,207,233,216,200, - 231,211,192,227,203,182,252,239,235,125,113,109,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,118,104,100, - 227,182,158,205,152,111,226,202,180,233,214,198,235,219,204,237,223, - 209,239,226,214,241,230,219,242,231,222,243,233,224,243,234,224,243, - 234,225,242,231,221,236,219,205,230,210,191,227,203,182,223,196,171, - 252,239,236,118,105,101,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,128,113,109,223,177,154,212,153,114, - 228,207,187,232,214,196,234,217,202,236,222,207,238,224,211,240,227, - 216,240,229,217,242,230,220,241,230,220,241,230,219,240,229,218,237, - 223,210,226,202,180,223,196,172,221,191,166,249,234,230,127,114,110, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,149,135,131,207,164,142,221,161,125,230,202,180,232,213,195, - 234,217,201,235,219,204,237,222,208,238,225,212,239,226,215,240,227, - 216,239,227,215,239,226,214,239,226,214,238,224,210,223,197,173,218, - 188,160,224,195,173,232,214,204,148,135,131,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,196,191,189,170, - 138,124,229,173,143,224,178,149,234,213,196,234,215,199,234,218,202, - 237,221,206,237,223,209,238,223,211,238,224,212,238,224,212,238,224, - 211,236,222,208,236,220,205,219,189,162,214,179,148,236,214,198,185, - 166,155,196,191,189,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,246,245,245,130,115,110,224,175,150,223, - 159,123,230,196,174,234,214,197,234,216,201,236,219,204,236,220,206, - 236,221,207,237,222,209,237,222,208,236,220,206,235,219,204,232,213, - 195,211,175,143,217,182,153,239,220,209,130,116,111,246,245,245,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,199,192,191,154,129,117,231,183,157,222,157,120,226, - 187,161,234,213,196,234,216,200,235,218,203,236,219,205,236,220,206, - 236,219,205,235,218,202,234,217,201,217,186,156,211,173,139,243,224, - 213,163,143,131,199,192,191,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254, - 254,162,149,146,166,137,122,232,185,162,223,162,128,216,161,125,221, - 185,157,226,201,179,231,212,194,234,216,200,230,210,192,225,200,177, - 214,180,149,213,175,144,240,219,207,177,154,142,162,149,146,254,254, - 254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,252,251,251,161,149, - 146,147,127,118,221,179,158,233,184,158,222,167,134,212,156,116,206, - 152,111,204,153,111,204,157,116,214,174,141,231,202,182,231,207,193, - 155,136,127,161,149,146,252,251,251,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,199,193,192,127,112, - 108,165,139,127,207,169,149,230,192,173,236,202,183,237,204,187,232, - 201,185,212,181,165,170,148,137,128,113,109,199,193,192,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,250,250,249,206,202,200,162,150, - 146,134,119,113,120,106,102,120,106,102,134,119,113,162,150,146,206, - 202,200,250,250,249,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255); - -Const - stdimg_dialog_warning_32 : Array[0..3125] of byte = ( - 66, 77, 54, 12, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 32, 0, 0, 0, 32, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 12, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,252,252,252,244,244,244,237,237,237,235,235, - 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, - 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, - 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, - 235,235,235,235,237,237,237,242,242,242,248,248,248,254,254,254,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,239,239,239, - 222,222,222,198,198,207,190,190,201,186,186,197,186,186,197,186,186, - 197,186,186,197,186,186,197,186,186,197,186,186,197,186,186,197,186, - 186,197,186,186,197,186,186,197,186,186,197,186,186,197,186,186,197, - 186,186,197,186,186,197,186,186,197,186,186,197,186,186,197,190,190, - 201,189,189,200,197,197,206,223,223,223,246,246,246,255,255,255,255, - 255,255,255,255,255,244,244,244,178,178,210, 22, 22,165, 0, 0,159, - 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0, - 159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, - 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, - 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0,159, 0, 0, - 159, 21, 21,165,173,173,209,250,250,250,255,255,255,255,255,255,243, - 243,243, 39, 39,171, 61, 61,196,112,112,224,117,117,226,116,116,226, - 113,113,225,111,111,225,108,108,224,105,105,223,102,102,223,100,100, - 222, 97, 97,222, 94, 94,221, 92, 92,220, 89, 89,220, 86, 86,219, 83, - 83,219, 81, 81,218, 78, 78,218, 75, 75,217, 72, 72,216, 69, 69,216, - 67, 67,215, 64, 64,215, 62, 62,214, 54, 54,212, 28, 28,188, 20, 20, - 166,246,246,246,255,255,255,255,255,255,253,253,253, 15, 15,166,121, - 121,221, 20, 20,208, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, - 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0, - 204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, - 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, 0, 0,204, - 0, 0,204, 10, 10,206, 56, 56,207, 2, 2,160,247,247,251,255,255, - 255,255,255,255,255,255,255, 90, 90,194, 89, 89,200, 58, 58,216, 0, - 0,204,163,163,219,210,210,224,210,210,224,211,211,225,212,212,226, - 212,212,226,213,213,227,214,214,228,215,215,229,216,216,230,216,216, - 230,217,217,231,217,217,231,218,218,232,218,218,232,219,219,233,220, - 220,234,221,221,235,222,222,236,193,193,231, 0, 0,204, 27, 27,209, - 44, 44,192, 53, 53,181,255,255,255,255,255,255,255,255,255,255,255, - 255,221,221,242, 25, 25,168,117,117,221, 8, 8,206, 80, 80,211,224, - 224,224,225,225,225,225,225,225,226,226,226,227,227,227,227,227,227, - 228,228,228,229,229,229,230,230,230,230,230,230,231,231,231,232,232, - 232,233,233,233,234,234,234,234,234,234,235,235,235,236,236,236,237, - 237,237,105,105,219, 3, 3,205, 59, 59,211, 14, 14,166,193,193,232, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,109,109, - 201, 85, 85,197, 68, 68,218, 2, 2,204,179,179,219,224,224,224,225, - 225,225,225,225,225,226,226,226,227,227,227,227,227,227,228,228,228, - 60, 60, 60, 55, 55, 55,230,230,230,231,231,231,232,232,232,233,233, - 233,234,234,234,234,234,234,235,235,235,205,205,231, 7, 7,205, 36, - 36,211, 47, 47,188, 70, 70,186,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,234,234,247, 23, 23,169,121,121, - 220, 14, 14,207, 59, 59,209,223,223,223,224,224,224,224,224,224,225, - 225,225,226,226,226,226,226,226,227,227,227, 55, 55, 55, 53, 53, 53, - 230,230,230,230,230,230,231,231,231,232,232,232,233,233,233,234,234, - 234,234,234,234, 82, 82,215, 8, 8,206, 67, 67,210, 10, 10,163,212, - 212,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,129,129,208, 74, 74,190, 81, 81,220, 0, 0, - 204,162,162,218,223,223,223,224,224,224,224,224,224,225,225,225,226, - 226,226,226,226,226,215,215,215,215,215,215,229,229,229,230,230,230, - 230,230,230,231,231,231,232,232,232,233,233,233,186,186,227, 1, 1, - 204, 47, 47,213, 46, 46,185, 96, 96,196,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 244,244,251, 25, 25,169,121,121,218, 23, 23,209, 42, 42,208,221,221, - 223,223,223,223,224,224,224,224,224,224,225,225,225,226,226,226, 37, - 37, 37, 37, 37, 37,228,228,228,229,229,229,229,229,229,230,230,230, - 231,231,231,232,232,232, 59, 59,211, 14, 14,207, 73, 73,209, 11, 11, - 164,228,228,245,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,151,151,216, - 63, 63,185, 94, 94,222, 0, 0,204,141,141,215,223,223,223,223,223, - 223,224,224,224,224,224,224,225,225,225, 27, 27, 27, 27, 27, 27,227, - 227,227,228,228,228,229,229,229,229,229,229,230,230,230,164,164,223, - 0, 0,204, 60, 60,215, 41, 41,179,120,120,205,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,251,251,253, 35, 35,174,116,116,215, - 34, 34,211, 27, 27,206,215,215,221,223,223,223,223,223,223,224,224, - 224,224,224,224, 13, 13, 13, 13, 13, 13,226,226,226,227,227,227,228, - 228,228,229,229,229,226,226,228, 40, 40,209, 24, 24,209, 75, 75,206, - 16, 16,167,241,241,250,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,172,172,224, 49, 49,178,106,106,223, 1, 1,204, - 121,121,213,222,222,222,222,222,222,223,223,223,224,224,224, 3, 3, - 3, 3, 3, 3,225,225,225,226,226,226,227,227,227,228,228,228,140, - 140,218, 1, 1,204, 75, 75,218, 34, 34,174,144,144,213,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254, - 254,255, 49, 49,179,109,109,211, 47, 47,213, 16, 16,206,206,206,220, - 222,222,222,222,222,222,215,215,215, 0, 0, 0, 0, 0, 0,217,217, - 217,225,225,225,226,226,226,218,218,226, 25, 25,207, 36, 36,211, 74, - 74,203, 27, 27,171,249,249,253,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,193,193,232, 36, - 36,173,117,117,224, 4, 4,205,102,102,212,221,221,221,222,222,222, - 204,204,204, 0, 0, 0, 0, 0, 0,206,206,206,225,225,225,225,225, - 225,118,118,216, 4, 4,205, 87, 87,219, 27, 27,170,167,167,222,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255, 69, 69,186,100,100,205, 59, - 59,216, 7, 7,205,195,195,219,221,221,221,193,193,193, 0, 0, 0, - 0, 0, 0,195,195,195,224,224,224,206,206,223, 12, 12,205, 49, 49, - 214, 70, 70,199, 45, 45,178,254,254,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,211,211,238, 25, 25,170,124,124,224, 8, 8,206, 82, - 82,210,221,221,221,218,218,218,207,207,207,207,207,207,220,220,220, - 223,223,223, 97, 97,213, 9, 9,206, 98, 98,219, 17, 17,166,189,189, - 230,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255, 92, 92,194, 89, 89,199, 72, 72,218, 2, 2,204,180,180,217,221, - 221,221,221,221,221,222,222,222,222,222,222,192,192,220, 4, 4,204, - 64, 64,217, 65, 65,194, 68, 68,186,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,226,226,244, 20, 20, - 168,128,128,224, 15, 15,207, 63, 63,209,220,220,220,221,221,221,221, - 221,221,222,222,222, 74, 74,210, 17, 17,207,104,104,219, 11, 11,163, - 210,210,238,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,114,114,202, 79, 79,193, 85, 85, - 220, 0, 0,204,162,162,215,220,220,220,220,220,220,173,173,217, 1, - 1,204, 80, 80,220, 59, 59,189, 92, 92,194,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,238,238,249, 20, 20,167,128,128,222, 25, 25,209, 44, 44, - 207,218,218,219,220,220,220, 53, 53,208, 28, 28,210,106,106,217, 10, - 10,164,226,226,244,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 137,137,211, 67, 67,187, 99, 99,223, 0, 0,204,143,143,214,152,152, - 214, 1, 1,204, 97, 97,223, 51, 51,184,118,118,204,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,246,246,252, 25, 25,169, - 122,122,218, 36, 36,211, 21, 21,206, 23, 23,205, 42, 42,212,104,104, - 215, 14, 14,165,239,239,249,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 205,202,183,175,173,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,158,158,218, 53, 53,181,113,113,225, - 1, 1,204, 3, 3,205,113,113,225, 41, 41,177,142,142,212,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,229,227,226,130,117,114,223,206,194,236,218,203, + 242,231,223,245,236,228,245,237,230,248,243,238,250,247,244,252,249, + 247,248,246,245,252,248,246,250,244,239,251,241,237,139,127,124,209, + 205,204,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,235,233,233,129, + 116,112,213,193,179,233,210,193,231,212,194,248,243,238,240,230,221, + 240,237,233,241,239,237,238,237,237,234,233,231,228,226,226,235,234, + 232,247,241,235,248,238,232,248,237,233,139,127,123,218,214,212,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,252,252,254, 37, 37,174,111,111,213, 66, 66,217, 70, 70,218, - 96, 96,210, 25, 25,170,248,248,252,255,255,255,255,255,255,255,255, + 255,255,255,255,254,254,254,142,129,124,202,177,157,226,199,177,222, + 195,169,243,234,226,250,247,246,248,247,246,239,234,231,236,231,226, + 230,226,222,229,226,222,225,223,221,226,226,226,212,210,208,242,232, + 222,245,231,224,243,230,225,133,120,117,249,249,249,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,206,202, + 200,158,136,124,222,190,165,213,178,146,220,191,164,251,249,247,240, + 230,221,238,225,213,242,230,221,243,234,224,244,235,227,245,237,230, + 245,237,230,216,213,211,206,205,205,240,227,216,236,221,207,246,232, + 224,194,180,172,193,188,185,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,154,141,137,201,167,145,208,169, + 134,211,173,140,227,204,184,237,221,207,239,226,214,242,231,221,243, + 234,225,245,237,230,246,239,232,245,237,229,242,233,223,241,231,220, + 245,236,228,237,222,209,233,215,200,234,216,200,240,225,219,148,136, + 133,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,180, - 180,227, 22, 22,168,109,109,218,106,106,218, 20, 20,169,165,165,221, + 255,255,255,129,114,110,220,181,158,201,154,113,216,184,155,233,215, + 198,236,220,206,238,225,212,241,228,217,242,231,222,243,234,226,245, + 236,228,245,237,230,245,236,229,241,229,218,236,221,207,233,216,200, + 231,211,192,227,203,182,252,239,235,125,113,109,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,118,104,100, + 227,182,158,205,152,111,226,202,180,233,214,198,235,219,204,237,223, + 209,239,226,214,241,230,219,242,231,222,243,233,224,243,234,224,243, + 234,225,242,231,221,236,219,205,230,210,191,227,203,182,223,196,171, + 252,239,236,118,105,101,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,128,113,109,223,177,154,212,153,114, + 228,207,187,232,214,196,234,217,202,236,222,207,238,224,211,240,227, + 216,240,229,217,242,230,220,241,230,220,241,230,219,240,229,218,237, + 223,210,226,202,180,223,196,172,221,191,166,249,234,230,127,114,110, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,140,140,211, 12, - 12,165, 8, 8,163,124,124,206,255,255,255,255,255,255,255,255,255, + 255,255,149,135,131,207,164,142,221,161,125,230,202,180,232,213,195, + 234,217,201,235,219,204,237,222,208,238,225,212,239,226,215,240,227, + 216,239,227,215,239,226,214,239,226,214,238,224,210,223,197,173,218, + 188,160,224,195,173,232,214,204,148,135,131,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,196,191,189,170, + 138,124,229,173,143,224,178,149,234,213,196,234,215,199,234,218,202, + 237,221,206,237,223,209,238,223,211,238,224,212,238,224,212,238,224, + 211,236,222,208,236,220,205,219,189,162,214,179,148,236,214,198,185, + 166,155,196,191,189,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,246,245,245,130,115,110,224,175,150,223, + 159,123,230,196,174,234,214,197,234,216,201,236,219,204,236,220,206, + 236,221,207,237,222,209,237,222,208,236,220,206,235,219,204,232,213, + 195,211,175,143,217,182,153,239,220,209,130,116,111,246,245,245,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,252,252,254,251,251,253,255, + 255,255,255,255,199,192,191,154,129,117,231,183,157,222,157,120,226, + 187,161,234,213,196,234,216,200,235,218,203,236,219,205,236,220,206, + 236,219,205,235,218,202,234,217,201,217,186,156,211,173,139,243,224, + 213,163,143,131,199,192,191,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254, + 254,162,149,146,166,137,122,232,185,162,223,162,128,216,161,125,221, + 185,157,226,201,179,231,212,194,234,216,200,230,210,192,225,200,177, + 214,180,149,213,175,144,240,219,207,177,154,142,162,149,146,254,254, + 254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,252,251,251,161,149, + 146,147,127,118,221,179,158,233,184,158,222,167,134,212,156,116,206, + 152,111,204,153,111,204,157,116,214,174,141,231,202,182,231,207,193, + 155,136,127,161,149,146,252,251,251,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,199,193,192,127,112, + 108,165,139,127,207,169,149,230,192,173,236,202,183,237,204,187,232, + 201,185,212,181,165,170,148,137,128,113,109,199,193,192,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,250,250,249,206,202,200,162,150, + 146,134,119,113,120,106,102,120,106,102,134,119,113,162,150,146,206, + 202,200,250,250,249,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, @@ -1369,225 +1332,107 @@ Const 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255); Const - stdimg_document : Array[0..1061] of byte = ( - 66, 77, 38, 4, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 240, 3, 0, 0,235, 10, 0, 0,235, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 98, 98, - 98, 91, 91, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 97, 97, 97, - 255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, - 88, 88, 88, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, - 0,255,255, 0,255, 88, 88, 88,182,193,198,182,193,198,172,189,196, - 163,184,195,154,179,194,145,175,192,136,170,191,127,165,190,118,160, - 189,115,158,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, - 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,225, - 237,244,216,232,242,208,228,240,200,222,238,191,218,236,184,214,233, - 176,209,231,167,204,229,120,161,188, 48, 48, 48, 90, 90, 90,255, 0, - 255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, - 88,222,222,222,233,241,247,137,144,148,132,141,147,127,139,146,122, - 136,145,117,133,143,112,130,142,176,209,231,127,163,188, 48, 48, 48, - 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255, - 255, 0,255, 88, 88, 88,222,222,222,242,246,250,234,242,248,226,238, - 245,218,233,242,210,228,240,201,224,238,193,220,236,186,214,233,133, - 166,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, - 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,251,252,252, - 148,151,152,143,148,151,138,145,149,133,142,148,128,139,146,123,136, - 145,194,219,236,138,168,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, - 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222, - 222,222,255,255,255,252,253,253,244,248,250,235,243,248,228,238,245, - 220,234,243,212,230,241,202,223,236,144,171,188, 48, 48, 48, 90, 90, - 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0, - 255, 88, 88, 88,222,222,222,255,255,255,155,155,155,154,154,154,148, - 151,152,143,148,151,139,145,149,134,143,148,212,226,236,151,174,188, - 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255, - 255, 0,255,255, 0,255, 88, 88, 88,223,223,223,255,255,255,255,255, - 255,255,255,255,254,254,254,245,248,251,237,244,248,227,237,243,220, - 231,238,151,174,188, 48, 48, 48, 90, 90, 90,255, 0,255,255, 0,255, - 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222, - 255,255,255,155,155,155,155,155,155,155,155,155,155,155,155,246,249, - 251,236,240,244,217,224,231,175,182,190, 48, 48, 48, 90, 90, 90,255, - 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, - 88, 88,222,222,222,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,245,245,246,222,224,226,177,183,188,132,137,143, 48, 48, - 48, 90, 90, 90,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0, - 255,255, 0,255, 88, 88, 88,222,222,222,255,255,255,155,155,155,155, - 155,155,155,155,155,255,255,255,137,137,137,112,112,112,107,107,107, - 66, 66, 66, 48, 48, 48, 96, 96, 96,255, 0,255,255, 0,255, 0, 0, - 255, 0,255,255, 0,255,255, 0,255, 88, 88, 88,222,222,222,255,255, - 255,255,255,255,255,255,255,255,255,255,252,252,252,112,112,112,206, - 206,206,255,255,255,153,153,153, 48, 48, 48,135,135,135,255, 0,255, - 255, 0,255, 0, 0,255, 0,255,255, 0,255,255, 0,255, 88, 88, 88, - 222,222,222,255,255,255,255,255,255,255,255,255,255,255,255,234,234, - 234,109,109,109,255,255,255,153,153,153, 88, 88, 88,135,135,135,255, - 0,255,255, 0,255,255, 0,255, 0, 0,255, 0,255,255, 0,255,255, - 0,255, 88, 88, 88,222,222,222,222,222,222,222,222,222,222,222,222, - 222,222,222,177,183,188, 88, 88, 88,153,153,153, 88, 88, 88,135,135, - 135,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0,255, 0, - 255,255, 0,255,255, 0,255, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255, 0, 0); - -Const - stdimg_edit : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0,235, 10, 0, 0,235, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 98,146, 94, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98,146, 94, 98,146, 94, - 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255, - 255,255,255,255,160,160,160,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255, 0, 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, - 88, 88, 88,220,220,220,160,160,160,160,160,160, 0, 0, 0,160,160, - 160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, - 160,160, 0, 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, 88, 88, 88, - 220,220,220,255,255,255,255,255,255, 88, 88, 88, 48, 48, 48, 0, 0, - 64,195,195,195,220,220,220,255,255,255,255,255,255,255,255,255, 0, - 0, 0, 98,146, 94, 98,146, 94, 98,146, 94, 88, 88, 88,220,220,220, - 255,255,255,255,255,255,255,255,255, 88, 88, 88,168,220,255, 0, 88, - 192, 0, 88,192,195,195,195,220,220,220,255,255,255, 0, 0, 0, 98, - 146, 94, 98,146, 94, 98,146, 94, 88, 88, 88,220,220,220,195,195,195, - 195,195,195,195,195,195,160,160,160,168,220,255,168,220,255,168,220, - 255, 0, 88,192, 0, 88,192,160,160,160, 0, 0, 0, 98,146, 94, 98, - 146, 94, 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255, - 255,255,255,255,255,255, 88,168,255,168,220,255,168,220,255,168,220, - 255,168,220,255, 0, 0, 64, 0, 0, 0, 98,146, 94, 98,146, 94, 98, - 146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255,255, - 255,255,255,160,160,160,168,220,255,168,220,255, 0,128,255, 0,128, - 255, 0, 88,192, 48, 48, 48, 98,146, 94, 98,146, 94, 98,146, 94, 88, - 88, 88,220,220,220,195,195,195,195,195,195,195,195,195,195,195,195, - 195,195,195, 88,168,255,168,220,255, 0,128,255, 0,128,255, 0,128, - 255, 0, 88,192, 48, 48, 48, 98,146, 94, 98,146, 94, 88, 88, 88,220, - 220,220,255,255,255,255,255,255,255,255,255,255,255,255,195,195,195, - 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, - 255, 0, 88,192, 0, 0, 64, 98,146, 94, 88, 88, 88,220,220,220,255, - 255,255,255,255,255,255,255,255,255,255,255,195,195,195,255,255,255, - 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, - 255, 0, 88,192, 98,146, 94, 88, 88, 88,220,220,220,195,195,195,195, - 195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195, - 195,195,195, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 0,128, - 255, 98,146, 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255, - 255,255,255,255,255,195,195,195,255,255,255,255,255,255,255,255,255, - 255,255,255, 88,168,255, 88,168,255, 0,128,255, 0,128,255, 98,146, - 94, 88, 88, 88,220,220,220,255,255,255,255,255,255,255,255,255,255, - 255,255,195,195,195,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 88,168,255, 88,168,255, 0,128,255, 98,146, 94, 88, 88, - 88,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, - 220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, - 88, 88, 88, 88,168,255, 88,168,255, 98,146, 94, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 98,146, 94, 98,146, 94); - -Const - stdimg_edit_copy_16 : Array[0..821] of byte = ( + stdimg_menu_preferences_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,180,183, - 181,134,139,137,133,138,136,133,138,136,133,138,136,133,138,136,133, - 138,136,133,138,136,164,167,166,194,197,196,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,136,141,139,244,244, - 244,246,247,247,245,246,246,251,252,252,251,251,251,212,212,212,150, - 154,152,226,228,227,133,138,136,194,197,196,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,136,141,139,249,250,250,239,240, - 240,239,240,240,239,240,240,250,250,250,250,250,250,149,154,152,250, - 250,250,226,227,227,133,138,136,157,161,160,219,220,220,195,197,196, - 195,197,196,195,197,196,135,140,138,253,254,254,239,240,240,239,240, - 240,239,240,240,239,240,240,250,250,250,149,154,152,250,250,250,247, - 248,248,226,228,227,133,138,136,196,198,197,249,249,249,249,250,250, - 249,249,249,136,141,139,255,255,255,239,240,240,239,240,240,239,240, - 240,239,240,240,239,240,240,137,142,140,137,142,140,137,142,140,137, - 142,140,133,138,136,196,198,197,252,252,252,245,245,245,245,245,245, - 136,141,139,255,255,255,239,240,240,198,199,199,198,199,199,198,199, - 199,198,199,199,198,199,199,238,238,238,246,247,247,195,196,195,133, - 138,136,196,198,197,255,255,255,246,246,246,225,226,226,135,140,138, - 255,255,255,239,240,240,239,240,240,239,240,240,239,240,240,239,240, - 240,239,240,240,239,240,240,250,250,250,243,243,243,133,138,136,196, - 198,197,255,255,255,246,247,247,246,246,246,136,141,139,255,255,255, - 239,240,240,198,199,199,198,199,199,198,199,199,198,199,199,198,199, - 199,239,240,240,239,240,240,255,255,255,133,138,136,196,198,197,255, - 255,255,247,247,247,226,227,227,135,140,138,255,255,255,239,240,240, - 239,240,240,239,240,240,239,240,240,239,240,240,239,240,240,239,240, - 240,239,240,240,255,255,255,133,138,136,196,198,197,255,255,255,247, - 248,248,247,247,247,136,141,139,255,255,255,239,240,240,198,199,199, - 198,199,199,198,199,199,198,199,199,198,199,199,198,199,199,239,240, - 240,255,255,255,133,138,136,196,198,197,255,255,255,247,248,248,227, - 228,228,135,140,138,255,255,255,239,240,240,239,240,240,239,240,240, - 239,240,240,239,240,240,239,240,240,239,240,240,239,240,240,255,255, - 255,133,138,136,196,198,197,255,255,255,247,248,248,247,248,248,136, - 141,139,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,133,138, - 136,196,198,197,255,255,255,247,248,248,227,228,228,170,173,173,133, - 138,136,133,138,136,133,138,136,133,138,136,133,138,136,133,138,136, - 133,138,136,133,138,136,133,138,136,133,138,136,177,180,179,196,198, - 197,255,255,255,247,248,248,247,247,247,247,247,247,247,247,247,247, - 247,247,247,247,247,247,248,248,247,248,248,255,255,255,194,197,196, - 255,255,255,255,255,255,255,255,255,255,255,255,196,198,197,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,194,197,196,255,255,255, - 255,255,255,255,255,255,255,255,255,219,220,220,194,197,196,194,197, - 196,194,197,196,194,197,196,194,197,196,194,197,196,194,197,196,194, - 197,196,194,197,196,194,197,196,217,219,218,255,255,255,255,255,255, - 255,255,255,255,255,255); + 0, 0, 0,215,194,180,135, 74, 32,135, 74, 32,135, 74, 32,223,207, + 196,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 135, 74, 32,190,165,146,184,156,134,184,156,134,135, 74, 32,223,207, + 196,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,193, + 196,195,154,158,157,193,196,195,255, 0,255,255, 0,255,135, 74, 32, + 204,187,173,167,145,125,181,149,122,174,139,114,135, 74, 32,223,207, + 196,255, 0,255,255, 0,255,255, 0,255,219,220,220,133,138,136,158, + 161,160,133,138,136,255, 0,255,255, 0,255,135, 74, 32,204,187,173, + 164,141,120,162,138,116,180,149,122,179,147,124,135, 74, 32,255, 0, + 255,255, 0,255,219,220,220,133,138,136,210,211,212,194,195,196,133, + 138,136,255, 0,255,255, 0,255,232,221,213,135, 74, 32,212,200,189, + 164,141,120,164,141,120,190,165,146,135, 74, 32,255, 0,255,219,220, + 220,133,138,136,226,227,228,194,196,198,133,138,136,193,196,195,255, + 0,255,255, 0,255,255, 0,255,243,237,233,135, 74, 32,204,187,173, + 204,187,173,179,147,124,135, 74, 32,193,196,195,133,138,136,211,211, + 212,189,190,191,133,138,136,219,220,220,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,243,237,233,135, 74, 32,135, 74, 32, + 135, 74, 32,133,131,125,170,173,173,200,201,202,189,190,191,133,138, + 136,219,220,220,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 181,183,184,133,138,136,183,184,185,133,138,136,219,220,220,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,219, + 220,220,133,138,136,133,138,136,133,138,136,133,138,136,208,209,210, + 163,164,164,133,138,136,193,196,195,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,219,220,220,133,138,136,243, + 243,243,239,240,240,237,238,238,234,236,236,182,185,186,133,138,136, + 219,220,220,133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,133,138,136,245,246,246,169,172,171,133, + 138,136,247,247,247,226,227,229,170,173,173,245,246,246,255, 0,255, + 219,220,220,133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,219,220,220,133,138,136,255, 0,255,219,220,220,133, + 138,136,250,250,250,133,138,136,255, 0,255,255, 0,255,255, 0,255, + 219,220,220,133,138,136,135,140,138,179,179,179,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,133,138,136,238, + 240,240,133,138,136,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 133,138,136,240,240,240,133,138,136,179,179,179,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,133,138,136,233,235,236,133,138,136,219, + 220,220,255, 0,255,255, 0,255,255, 0,255,255, 0,255,179,179,179, + 133,138,136,238,239,239,133,138,136,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,219,220,220,133,138,136,219,220,220,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,179,179,179, + 133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); Const - stdimg_edit_cut_16 : Array[0..821] of byte = ( + stdimg_folder_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,172,172,226, 37, 37,178, 26, 26,175, 29, 29, - 174,209,209,239,255,255,255,255,255,255,255,255,255,255,255,255,172, - 172,226, 70, 70,190, 27, 27,176, 39, 39,179,209,209,239,255,255,255, - 255,255,255, 49, 49,182, 41, 41,219, 36, 36,209, 31, 31,206, 31, 31, - 177,209,209,239,255,255,255,255,255,255,209,209,239, 29, 29,177, 36, - 36,212, 34, 34,208, 31, 31,206, 39, 39,178,255,255,255,255,255,255, - 19, 19,173, 33, 33,208,255,255,255,117,117,213, 35, 35,211, 52, 52, - 184,255,255,255,255,255,255, 59, 59,187, 37, 37,214,114,114,214,255, - 255,255, 35, 35,210, 22, 22,173,255,255,255,255,255,255, 43, 43,179, - 37, 37,213,134,134,213,255,255,255, 38, 38,208, 13, 13,170,255,255, - 255,255,255,255, 5, 5,169, 38, 39,205,255,255,255,137,137,214, 34, - 34,209, 43, 43,179,255,255,255,255,255,255,172,172,226, 7, 7,168, - 35, 35,209, 73, 73,192, 26, 27,194, 1, 1,166,255,255,255,241,242, - 250, 30, 31,205, 25, 27,193, 74, 74,193, 33, 33,206, 7, 7,167,143, - 143,216,255,255,255,255,255,255,255,255,255,142,142,215, 9, 9,170, - 34, 34,210, 31, 31,206, 16, 17,184, 92, 94,196, 6, 7,169, 26, 26, - 201, 34, 34,209, 33, 33,203, 12, 12,170,171,171,225,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,127,127,210, - 33, 33,175, 6, 6,166, 70, 75,163, 2, 2,166, 25, 26,199, 37, 37, - 178,131,131,211,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,212,214,213, - 132,137,137,195,198,197,175,178,179, 52, 55,160,231,232,232,255,255, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,181,184,183,184,188,187, - 230,232,231,167,172,170,139,144,142,184,187,186,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,231,232,232,136,141,139,223,225,225,245,246,245, - 151,156,154,165,169,168,140,145,143,231,232,232,255,255,255,255,255, + 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, + 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, + 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, + 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, + 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, + 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, + 134,213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213, + 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, + 215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,215,175, + 138,215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,226, + 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,217,179,143,217,179,143,228,202,177,135, + 74, 32,135, 74, 32,230,205,181,217,179,143,217,179,143,217,179,143, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,217,179,143,230,205,181,135, 74, 32,135, + 74, 32,231,207,184,217,179,143,217,179,143,217,179,143,217,179,143, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,217,179,143,231,207,184,135, 74, 32,135, 74, 32,232, + 210,188,217,179,143,217,179,143,217,179,143,217,179,143,217,179,143, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,217,179,143,232,210,188,135, 74, 32,136, 76, 34,230,209,188,234, + 212,192,234,212,192,234,212,192,234,212,192,234,212,192,226,197,169, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, + 143,234,212,192,135, 74, 32,139, 77, 36,136, 76, 34,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,140, 82, 42,218,190,167,227,200,173, + 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,235,215, + 196,135, 74, 32,135, 74, 32,204,164,133,188,136, 95,188,136, 94,188, + 136, 94,188,136, 94,175,120, 80,144, 86, 46,220,194,172,236,217,199, + 236,217,199,236,217,199,236,217,199,236,217,199,233,214,196,138, 79, + 37,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,205, + 161,124,218,186,158,190,150,120,135, 74, 32,135, 74, 32,135, 74, 32, + 135, 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,168,147,225,210, + 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,218, + 191,169,144, 89, 49,225,210,200,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,210, + 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,225, + 210,200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,152,156,154,178,182,181,247,247,247,142,147,145,156,160,159, - 179,182,181,182,187,185,172,175,174,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,228,229,229,136, - 141,139,217,220,219,239,240,239,171,175,173,184,187,186,179,184,182, - 203,206,205,137,142,140,197,199,198,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,144,148,146,176,181,179,246, - 247,247,155,159,157,202,204,203,255,255,255,141,146,144,201,206,204, - 172,176,175,156,160,159,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,136,141,139,208,212,210,239,240,239,179, - 183,181,255,255,255,255,255,255,225,227,226,167,172,170,195,200,198, - 142,147,145,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,143,148,146,247,247,247,170,173,172,202,204,203,255, - 255,255,255,255,255,255,255,255,152,156,155,208,211,210,169,173,171, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,221,223,222,145,149,148,162,166,165,255,255,255,255,255,255,255, - 255,255,255,255,255,185,187,186,148,152,150,255,255,255,255,255,255, 255,255,255,255,255,255); Const @@ -1642,6 +1487,58 @@ Const 138,136,133,138,136,133,138,136,133,138,136,133,138,136,171,174,173, 255,255,255,255,255,255); +Const + stdimg_btn_cancel_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255, 63, 61,237, 59, 56,235,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 33, + 31,227, 30, 28,226,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 74, 71,240, 79, 76,242, 64, 62,237, 60, 57,235,255,255, + 255,255,255,255,255,255,255,255,255,255, 39, 37,229, 36, 34,228, 49, + 47,234, 31, 29,226,255,255,255,255,255,255,255,255,255, 84, 81,243, + 88, 86,245, 99, 97,250, 88, 85,246, 65, 63,237, 61, 58,236,255,255, + 255,255,255,255, 48, 45,231, 44, 42,230, 65, 63,241, 76, 74,246, 49, + 47,234, 31, 29,226,255,255,255,255,255,255, 89, 86,245, 91, 88,246, + 101, 98,250,113,112,255, 89, 86,246, 66, 64,238, 62, 59,236, 57, 55, + 235, 53, 50,233, 71, 69,242, 99, 98,255, 74, 72,244, 47, 45,233, 34, + 32,227,255,255,255,255,255,255,255,255,255, 90, 87,245, 91, 89,246, + 102, 99,250,116,113,255, 90, 88,246, 67, 65,238, 62, 60,236, 80, 77, + 244,104,103,255, 80, 78,245, 54, 52,235, 42, 39,229,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 91, 88,246, 92, 90,246, + 103,100,250,116,114,255,115,112,255,112,110,255,110,108,255, 87, 85, + 247, 63, 61,238, 50, 48,232,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 92, 89,246, 93, 91,247, + 121,118,255, 89, 86,255, 87, 84,255,114,112,255, 72, 70,240, 60, 57, + 235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 97, 94,248, 93, 90,246,125,121,255, + 94, 91,255, 91, 88,255,118,116,255, 70, 67,239, 65, 63,237,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,105,103,251,102, 99,249,112,109,251,128,126,255,126,123,255, + 124,121,255,121,119,255, 94, 92,247, 71, 68,239, 66, 64,238,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,113,110,253,110, + 107,252,119,116,253,134,130,255,118,115,252,100, 98,248, 96, 93,247, + 109,106,250,123,121,255, 96, 93,247, 72, 69,239, 67, 65,238,255,255, + 255,255,255,255,255,255,255,118,115,255,116,113,254,125,122,254,138, + 135,255,124,121,253,108,105,251, 99, 97,249, 95, 92,247, 97, 94,248, + 110,108,250,125,122,255, 97, 95,247, 73, 70,240, 68, 65,238,255,255, + 255,255,255,255,119,116,255,122,119,255,129,126,255,129,126,254,116, + 113,253,108,105,251,255,255,255,255,255,255, 96, 93,247, 98, 95,248, + 111,109,251,126,124,255, 98, 95,248, 74, 71,240, 69, 66,238,255,255, + 255,255,255,255,119,116,255,122,119,255,121,118,254,114,111,253,255, + 255,255,255,255,255,255,255,255,255,255,255, 97, 94,248,100, 97,248, + 106,104,249, 84, 81,243, 79, 77,242,255,255,255,255,255,255,255,255, + 255,255,255,255,119,116,255,119,116,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 98, 95,248, 93, 91,247, + 89, 86,245,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 99, 96,248,255,255,255, + 255,255,255,255,255,255); + Const stdimg_edit_paste_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, @@ -1695,223 +1592,105 @@ Const 255, 0,255,255, 0,255); Const - stdimg_ellipse : Array[0..181] of byte = ( - 66, 77,182, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 10, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0, - 229,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0,229, 0, - 0,255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0, 0, 0, - 0, 0,255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0,255, - 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0, 0, 0, 0, 0, - 255, 0,229, 0, 0, 0, 0, 0, 0,255, 0,229, 0, 0,255, 0,229, - 255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0,229,255, 0, - 229,255, 0,229,255, 0,229,255, 0,229, 0, 0); - -Const - stdimg_executable_16 : Array[0..821] of byte = ( + stdimg_help_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, - 54,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218,199,195,195,159, - 157,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,120, 72, 54,218,199,195,188,151,145,204,176,172,221,202, - 200,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54, - 218,199,195,181,142,133,182,144,135,183,145,137,217,197,193,190,154, - 148,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,120, 72, 54,218,199,195,174,136,122, - 175,135,122,176,137,124,193,162,152,216,196,191,188,153,144,181,143, - 133,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,120, 72, 54,218,199,195,201,177,167,200,176,165,187,155,143, - 183,149,136,171,131,116,198,170,161,194,163,153,175,136,123,177,137, - 125,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,207,185,175,207,186,176,208,187,177,209,187,178,202,178,167, - 187,156,142,205,181,171,209,188,179,173,134,119,171,130,115,172,132, - 117,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,204,182,171,205,183,172,206,184,173,206,185,174,199,174,162, - 176,140,124,191,162,149,203,179,169,170,130,113,153,111, 86,120, 72, - 54,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,202,180,167,203,180,168,203,181,169,204,182,170,176,142,124, - 180,148,131,177,144,127,153,111, 86,120, 72, 54,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,200,177,163,200,178,164,201,178,165,186,158,141,150,106, 81, - 153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,198,174,159,198,175,160,186,159,141,144,100, 72,120, 72, 54, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,195,171,155,159,122, 95,120, 72, 54,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, - 199,195,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255,192,161,139,164,117, 85,142, 85, 45,142, 85, 45,165,119, 87,193, + 161,139,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,198,169,149,147, 91, 53,203,175, + 155,229,214,203,248,244,241,249,245,242,232,219,209,211,186,167,149, + 94, 56,199,171,151,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,163,116, 84,175,134,105,243,237,233,221,201,186,199,165, + 139,187,145,113,193,153,121,213,183,159,233,218,205,248,243,239,183, + 145,117,166,120, 88,255, 0,255,255, 0,255,255, 0,255,199,170,150, + 174,133,105,243,238,233,183,143,114,165,114, 76,179,135,101,255,255, + 255,255,255,255,193,151,116,197,155,120,215,185,160,249,245,241,180, + 140,112,199,171,151,255, 0,255,255, 0,255,146, 91, 52,242,235,230, + 177,135,105,157,103, 64,163,111, 73,178,132, 98,255,255,255,255,255, + 255,189,146,111,193,150,114,197,155,120,214,183,157,247,241,237,147, + 93, 54,255, 0,255,192,161,139,195,166,145,211,188,173,148, 92, 51, + 154,100, 60,161,108, 69,169,120, 82,200,168,143,204,173,148,183,137, + 101,187,143,107,191,147,112,193,150,115,231,215,201,207,181,161,193, + 161,139,162,115, 83,221,204,192,175,134,106,145, 88, 47,151, 96, 56, + 157,103, 64,167,118, 81,228,212,200,229,214,202,180,134, 98,182,135, + 99,185,139,103,186,142,106,209,178,155,230,215,204,165,118, 86,141, + 83, 43,245,240,237,148, 94, 56,142, 83, 42,148, 91, 51,153, 98, 58, + 159,105, 66,243,237,232,255,255,255,208,181,160,176,127, 90,178,131, + 94,180,133, 96,189,148,117,248,243,240,142, 84, 45,141, 83, 43,245, + 240,237,147, 92, 54,138, 79, 37,144, 86, 45,149, 93, 52,154, 99, 59, + 181,139,109,252,251,249,254,254,254,193,157,130,172,122, 84,173,124, + 86,183,141,108,247,243,239,142, 84, 44,162,115, 83,221,204,192,172, + 130,101,135, 74, 32,139, 80, 39,144, 86, 45,149, 92, 52,153, 98, 58, + 194,161,137,255,255,255,243,236,232,165,114, 75,166,115, 77,195,161, + 134,225,210,198,164,117, 85,192,161,139,195,165,144,208,185,169,135, + 74, 32,135, 74, 32,159,110, 75,160,111, 77,148, 91, 50,168,122, 89, + 255,255,255,253,252,251,161,109, 70,159,106, 67,218,198,183,198,170, + 149,192,161,139,255, 0,255,146, 92, 53,241,234,229,165,120, 88,135, + 74, 32,176,136,108,254,253,253,233,222,214,246,242,239,255,255,255, + 220,202,189,152, 96, 56,179,137,107,242,235,230,145, 91, 52,255, 0, + 255,255, 0,255,198,169,149,173,131,103,242,235,231,166,120, 89,156, + 105, 71,222,206,194,247,243,240,241,234,230,208,184,167,160,111, 77, + 173,130,100,243,237,232,171,128, 98,198,169,149,255, 0,255,255, 0, + 255,255, 0,255,163,116, 84,170,127, 97,240,232,227,208,185,169,172, + 130,101,150, 96, 59,150, 96, 59,172,130,101,209,186,170,240,233,228, + 170,128, 98,163,116, 84,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,198,169,149,145, 91, 52,193,162,141,219,201,189,244, + 239,235,244,239,235,219,201,189,193,163,141,145, 90, 51,199,170,150, 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255,255, 0,255,255, 0,255,192,161,139,162,115, 83,141, 83, 43,141, + 83, 43,162,115, 83,192,161,139,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255); Const - stdimg_folder_16 : Array[0..821] of byte = ( + stdimg_list_remove_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, - 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, - 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, - 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, - 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, - 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, - 134,213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213, - 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, - 215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,215,175, - 138,215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,226, - 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,217,179,143,217,179,143,228,202,177,135, - 74, 32,135, 74, 32,230,205,181,217,179,143,217,179,143,217,179,143, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,217,179,143,230,205,181,135, 74, 32,135, - 74, 32,231,207,184,217,179,143,217,179,143,217,179,143,217,179,143, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,231,207,184,135, 74, 32,135, 74, 32,232, - 210,188,217,179,143,217,179,143,217,179,143,217,179,143,217,179,143, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,232,210,188,135, 74, 32,136, 76, 34,230,209,188,234, - 212,192,234,212,192,234,212,192,234,212,192,234,212,192,226,197,169, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,234,212,192,135, 74, 32,139, 77, 36,136, 76, 34,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,140, 82, 42,218,190,167,227,200,173, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,235,215, - 196,135, 74, 32,135, 74, 32,204,164,133,188,136, 95,188,136, 94,188, - 136, 94,188,136, 94,175,120, 80,144, 86, 46,220,194,172,236,217,199, - 236,217,199,236,217,199,236,217,199,236,217,199,233,214,196,138, 79, - 37,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,205, - 161,124,218,186,158,190,150,120,135, 74, 32,135, 74, 32,135, 74, 32, - 135, 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,168,147,225,210, - 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,218, - 191,169,144, 89, 49,225,210,200,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,210, - 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,225, - 210,200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); - -Const - stdimg_folder_home_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, - 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, - 217,181,149,221,186,154, 98,173,106, 89,163, 97, 74,135, 79,117,122, - 118,121,120,121,126,126,126,118,118,118,103,130,106, 95,165,103, 72, - 146, 79, 83,137, 86,217,181,149,138, 79, 37,135, 74, 32,223,192,162, - 213,172,134,195,229,197,142,200,143,101,160,107,216,226,216,149,147, - 149,167,167,167,134,132,134,202,236,206,104,181,114,132,188,135,172, - 203,171,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, - 215,175,138,215,175,138,171,172,172,246,245,246,136,136,136,157,157, - 157,127,127,127,254,254,255,130,127,127,215,175,138,215,175,138,226, - 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, - 217,179,143,170,174,177,252,250,248,130,131,131,115,115,115,126,126, - 126,255,255,255,112,116,124,217,179,143,217,179,143,228,202,177,135, - 74, 32,135, 74, 32,230,205,181,217,179,143,217,179,143, 88,152,197, - 94,150,192,218,222,224,245,243,241,237,238,238,247,244,242,193,201, - 212, 60, 97,147, 56, 92,143,217,179,143,230,205,181,135, 74, 32,135, - 74, 32,231,207,184,217,179,143,217,179,143,103,160,205,100,162,205, - 92,149,191,212,215,217,254,248,243,188,202,213, 69,120,167, 91,139, - 179, 71,112,157,217,179,143,231,207,184,135, 74, 32,135, 74, 32,232, - 210,188,217,179,143,217,179,143,217,179,143, 99,156,203, 94,158,204, - 94,150,192,161,185,202, 79,140,186,106,157,196, 78,125,169,217,179, - 143,217,179,143,232,210,188,135, 74, 32,136, 76, 34,230,209,188,234, - 212,192,234,212,192,234,212,192,234,212,192, 95,154,202,102,163,207, - 93,151,194,111,168,206, 78,132,177,217,179,143,217,179,143,217,179, - 143,234,212,192,135, 74, 32,139, 77, 36,136, 76, 34,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,140, 82, 42, 84,138,186, 79,134,180, - 77,125,171,217,179,143,217,179,143,217,179,143,217,179,143,235,215, - 196,135, 74, 32,135, 74, 32,204,164,133,188,136, 95,188,136, 94,188, - 136, 94,188,136, 94,175,120, 80,144, 86, 46,220,194,172,236,217,199, - 236,217,199,236,217,199,236,217,199,236,217,199,233,214,196,138, 79, - 37,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,205, - 161,124,218,186,158,190,150,120,135, 74, 32,135, 74, 32,135, 74, 32, - 135, 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,168,147,225,210, - 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,218, - 191,169,144, 89, 49,225,210,200,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,210, - 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,225, - 210,200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); - -Const - stdimg_folder_new_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, - 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, - 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, - 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, - 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, - 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, - 134,213,172,134,213,172,134,212,172,134,212,172,134,212,172,134,213, - 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, - 215,175,138,215,175,138,215,175,138,215,175,138,215,175,138,213,175, - 138,210,177,142,207,178,144,206,178,145,207,178,144,212,176,140,224, - 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, - 217,179,143,217,179,143,217,179,143,213,180,145,196,186,158,180,192, - 170,164,199,184,163,199,184,170,197,179,188,190,165,212,205,184,133, - 78, 38,135, 74, 32,230,205,181,217,179,143,217,179,143,217,179,143, - 217,179,143,212,180,146,187,190,165,144,206,198, 9,212,234, 95,222, - 232, 95,223,233, 10,212,236,128,212,211,169,216,209,124,104, 74,135, - 74, 32,231,207,184,217,179,143,217,179,143,217,179,143,214,179,144, - 192,188,161,139,206,200, 7,212,235,234,251,252, 4,212,237, 4,212, - 237,234,251,253, 7,212,237,111,226,235,107,153,141,135, 74, 32,232, - 210,188,217,179,143,217,179,143,216,179,143,208,182,149,165,197,181, - 89,219,229, 4,212,237,252,254,254,230,250,252,230,250,252,231,250, - 252, 4,213,237, 78,228,246, 92,189,192,136, 76, 34,230,209,188,234, - 212,192,234,212,192,233,212,192,216,214,198,146,220,221, 63,222,240, - 2,212,237,231,251,253,230,250,253,230,250,253,230,249,252, 1,212, - 237, 57,225,245, 86,202,209,139, 77, 36,136, 76, 34,135, 74, 32,135, - 74, 32,134, 74, 32,127, 92, 57, 97,161,154, 3,211,236,230,250,252, - 230,250,253,230,250,253,230,250,253,230,250,253,230,250,252, 4,213, - 237, 84,197,202,135, 74, 32,204,164,133,188,136, 95,188,136, 94,187, - 136, 94,178,143,106,123,167,154, 3,210,234,231,250,252,230,250,253, - 230,250,253,230,250,253,230,250,253,230,250,252, 4,213,236, 93,177, - 176,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,200, - 163,127,178,196,180, 8,210,233, 1,211,236, 0,212,237,237,251,253, - 237,251,253, 0,212,237, 1,212,237, 6,210,233,146,193,189,225,210, - 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,203, - 194,176,108,139,122, 80,218,232, 33,218,241, 0,212,237, 0,212,237, - 25,218,241, 70,227,245,157,241,251,231,252,254,255,255,255,225,210, - 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,134, 75, 33,207, - 211,204,190,245,252,129,235,248, 95,229,246, 90,229,246,118,234,248, - 183,244,252,234,252,254,253,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,182,132, 93,164,101, 52,164,101, 52, + 164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, + 52,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, + 255,255,255,255,255,164,101, 52,229,204,180,219,183,149,219,182,148, + 218,180,146,218,179,144,217,173,134,216,170,131,215,168,127,215,166, + 125,224,190,159,164,101, 52,255,255,255,255,255,255,255,255,255,255, + 255,255,164,101, 52,232,211,192,231,209,187,231,209,188,230,206,183, + 230,206,183,230,206,183,230,206,183,230,205,182,230,204,181,230,204, + 182,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,182, + 132, 93,164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52, + 164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52,182,132, + 93,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255); @@ -1969,398 +1748,380 @@ Const 255,255,255,255,255,255); Const - stdimg_folder_open_file_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 165,129,103,139, 82, 41,139, 82, 41,157,108, 74,157,108, 74,157,108, - 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157,108, 74,157, - 108, 74,139, 82, 41,145,110, 84,255,255,255,255,255,255,139, 82, 41, - 209,165,123,210,165,124,210,165,124,210,165,124,210,165,124,210,165, - 124,210,165,124,210,165,124,210,165,124,210,165,124,210,165,124,209, - 165,123,139, 82, 41,255,255,255,255,255,255,157,104, 63,208,161,116, - 207,159,114,207,159,114,207,159,114,207,159,114,207,159,114,207,159, - 114,207,159,114,207,159,114,207,159,114,207,159,114,208,161,116,139, - 82, 41,255,255,255,139, 82, 41,196,151,112,208,162,119,207,160,117, - 207,160,117,207,160,117,207,160,117,207,160,117,207,160,117,207,160, - 117,207,160,117,207,160,117,207,160,117,208,162,119,196,151,112,139, - 82, 41,139, 82, 41,206,164,127,210,165,123,209,164,122,209,164,122, - 209,164,122,209,164,122,209,164,122,209,164,122,209,164,122,209,164, - 122,209,164,122,209,164,122,210,166,124,212,169,129,139, 82, 41,139, - 82, 41,215,180,148,220,186,153,220,186,153,220,186,153,220,185,152, - 216,179,143,212,169,130,211,168,127,211,168,127,211,168,127,211,168, - 127,211,168,127,212,168,128,209,169,133,139, 82, 41,139, 82, 41,139, - 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41, - 210,173,142,218,180,145,217,179,145,217,179,145,217,179,145,217,179, - 145,217,180,145,217,183,152,139, 82, 41,255,255,255,139, 82, 41,127, - 120,111,253,253,253,248,249,249,243,241,240,205,137, 89,139, 82, 41, - 139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, - 41,139, 82, 41,139, 82, 41,255,255,255,139, 82, 41,142,136,127,242, - 242,242,241,242,241,241,241,241,205,137, 89,255,247,240,253,231,214, - 253,230,212,252,228,208,251,227,203,254,243,232,205,136, 88,139, 82, - 41,255,255,255,255,255,255,139, 82, 41,177,154,132,151,138,124,150, - 137,123,148,136,121,205,137, 89,255,247,242, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92,253,242,231,205,137, 89,139, 82, 41,255,255, - 255,255,255,255,139, 82, 41,218,183,153,212,172,137,212,172,137,213, - 174,140,205,136, 88,254,247,241,252,228,209,251,226,204,249,221,196, - 247,218,192,252,242,233,205,137, 89,139, 82, 41,255,255,255,255,255, - 255,157,103, 62,197,159,132,213,181,155,213,181,155,211,179,152,204, - 135, 87,255,247,241, 93, 93, 93, 92, 92, 92, 92, 92, 92,254,249,243, - 255,247,240,205,137, 89,255,255,255,255,255,255,255,255,255,255,255, - 255,139, 82, 41,139, 82, 41,139, 82, 41,139, 82, 41,205,137, 89,255, - 247,240,255,247,240,255,247,240,255,247,240,255,247,240,255,247,240, - 205,137, 89,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,205,137, 89,205,137, 89,205, - 137, 89,205,137, 89,205,137, 89,205,137, 89,205,137, 89,205,137, 89, - 255,255,255,255,255,255); - -Const - stdimg_folder_up_16 : Array[0..821] of byte = ( + stdimg_edit_cut_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0, 0, 0,255,255,255,172,172,226, 37, 37,178, 26, 26,175, 29, 29, + 174,209,209,239,255,255,255,255,255,255,255,255,255,255,255,255,172, + 172,226, 70, 70,190, 27, 27,176, 39, 39,179,209,209,239,255,255,255, + 255,255,255, 49, 49,182, 41, 41,219, 36, 36,209, 31, 31,206, 31, 31, + 177,209,209,239,255,255,255,255,255,255,209,209,239, 29, 29,177, 36, + 36,212, 34, 34,208, 31, 31,206, 39, 39,178,255,255,255,255,255,255, + 19, 19,173, 33, 33,208,255,255,255,117,117,213, 35, 35,211, 52, 52, + 184,255,255,255,255,255,255, 59, 59,187, 37, 37,214,114,114,214,255, + 255,255, 35, 35,210, 22, 22,173,255,255,255,255,255,255, 43, 43,179, + 37, 37,213,134,134,213,255,255,255, 38, 38,208, 13, 13,170,255,255, + 255,255,255,255, 5, 5,169, 38, 39,205,255,255,255,137,137,214, 34, + 34,209, 43, 43,179,255,255,255,255,255,255,172,172,226, 7, 7,168, + 35, 35,209, 73, 73,192, 26, 27,194, 1, 1,166,255,255,255,241,242, + 250, 30, 31,205, 25, 27,193, 74, 74,193, 33, 33,206, 7, 7,167,143, + 143,216,255,255,255,255,255,255,255,255,255,142,142,215, 9, 9,170, + 34, 34,210, 31, 31,206, 16, 17,184, 92, 94,196, 6, 7,169, 26, 26, + 201, 34, 34,209, 33, 33,203, 12, 12,170,171,171,225,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,127,127,210, + 33, 33,175, 6, 6,166, 70, 75,163, 2, 2,166, 25, 26,199, 37, 37, + 178,131,131,211,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,212,214,213, + 132,137,137,195,198,197,175,178,179, 52, 55,160,231,232,232,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 198,167,146,138, 78, 37,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, - 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,169,148,138, 78, 37, - 217,181,149,221,186,154,221,186,154,221,186,154,221,186,154,221,186, - 154,221,186,154,221,186,154,221,186,154,221,186,154,221,186,154,221, - 186,154,221,186,154,217,181,149,138, 79, 37,135, 74, 32,223,192,162, - 213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213,172, - 134,213,172,134,213,172,134,213,172,134,213,172,134,213,172,134,213, - 172,134,223,192,162,135, 74, 32,135, 74, 32,226,197,170,215,175,138, - 215,175,138,215,175,138,143, 85, 42,143, 85, 42,143, 85, 42,143, 85, - 42,143, 85, 42,143, 85, 42,215,175,138,215,175,138,215,175,138,226, - 197,170,135, 74, 32,135, 74, 32,228,202,177,217,179,143,217,179,143, - 217,179,143,143, 85, 42,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,217,179,143,217,179,143,228,202,177,135, - 74, 32,135, 74, 32,230,205,181,217,179,143,143, 85, 42,205,164,128, - 143, 85, 42,205,164,128,143, 85, 42,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,217,179,143,230,205,181,135, 74, 32,135, - 74, 32,231,207,184,217,179,143,182,133, 95,143, 85, 42,143, 85, 42, - 143, 85, 42,182,133, 95,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,217,179,143,231,207,184,135, 74, 32,135, 74, 32,232, - 210,188,217,179,143,217,179,143,205,164,128,143, 85, 42,205,164,128, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,217,179,143,232,210,188,135, 74, 32,136, 76, 34,230,209,188,234, - 212,192,234,212,192,234,212,192,234,212,192,234,212,192,226,197,169, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,217,179, - 143,234,212,192,135, 74, 32,139, 77, 36,136, 76, 34,135, 74, 32,135, - 74, 32,135, 74, 32,135, 74, 32,140, 82, 42,218,190,167,227,200,173, - 217,179,143,217,179,143,217,179,143,217,179,143,217,179,143,235,215, - 196,135, 74, 32,135, 74, 32,204,164,133,188,136, 95,188,136, 94,188, - 136, 94,188,136, 94,175,120, 80,144, 86, 46,220,194,172,236,217,199, - 236,217,199,236,217,199,236,217,199,236,217,199,233,214,196,138, 79, - 37,135, 74, 32,209,176,151,218,186,158,205,161,124,205,161,123,205, - 161,124,218,186,158,190,150,120,135, 74, 32,135, 74, 32,135, 74, 32, - 135, 74, 32,135, 74, 32,135, 74, 32,138, 78, 37,198,168,147,225,210, - 200,144, 89, 49,218,191,169,236,217,200,236,217,200,236,217,200,218, - 191,169,144, 89, 49,225,210,200,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,210, - 200,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,225, - 210,200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,181,184,183,184,188,187, + 230,232,231,167,172,170,139,144,142,184,187,186,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,231,232,232,136,141,139,223,225,225,245,246,245, + 151,156,154,165,169,168,140,145,143,231,232,232,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,152,156,154,178,182,181,247,247,247,142,147,145,156,160,159, + 179,182,181,182,187,185,172,175,174,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,228,229,229,136, + 141,139,217,220,219,239,240,239,171,175,173,184,187,186,179,184,182, + 203,206,205,137,142,140,197,199,198,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,144,148,146,176,181,179,246, + 247,247,155,159,157,202,204,203,255,255,255,141,146,144,201,206,204, + 172,176,175,156,160,159,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,136,141,139,208,212,210,239,240,239,179, + 183,181,255,255,255,255,255,255,225,227,226,167,172,170,195,200,198, + 142,147,145,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,143,148,146,247,247,247,170,173,172,202,204,203,255, + 255,255,255,255,255,255,255,255,152,156,155,208,211,210,169,173,171, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,221,223,222,145,149,148,162,166,165,255,255,255,255,255,255,255, + 255,255,255,255,255,185,187,186,148,152,150,255,255,255,255,255,255, 255,255,255,255,255,255); Const - stdimg_font_16 : Array[0..821] of byte = ( + stdimg_menu_save_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,216,171,142,205,149,112,189,115, 66,183,104, 53,181,104, + 53,180,103, 52,178,102, 52,176,101, 51,174,100, 51,172, 99, 50,170, + 98, 50,169, 97, 50,168, 96, 49,167, 97, 50,171,105, 60,188,134, 97, + 195,125, 79,235,198,173,234,197,173,254,251,248,254,251,248,254,251, + 248,254,251,248,254,251,248,254,251,248,254,251,248,254,251,248,254, + 251,248,254,251,248,200,154,124,199,152,121,173,107, 64,186,108, 56, + 237,202,179,224,162,122,254,250,247, 98,192,136, 98,192,136, 98,192, + 136, 98,192,136, 98,192,136, 98,192,136, 98,192,136, 98,192,136,253, + 249,246,202,141,101,201,155,124,167, 97, 50,187,108, 56,238,204,182, + 225,162,122,254,250,247,191,220,194,191,220,194,191,220,194,191,220, + 194,191,220,194,191,220,194,191,220,194,191,220,194,253,249,246,205, + 144,104,204,158,129,168, 97, 50,187,107, 56,239,206,184,225,162,121, + 254,250,247, 98,192,136, 98,192,136, 98,192,136, 98,192,136, 98,192, + 136, 98,192,136, 98,192,136, 98,192,136,253,249,246,207,147,106,206, + 163,132,170, 97, 50,186,106, 54,239,208,187,226,162,122,254,251,248, + 254,251,248,254,251,248,254,251,248,254,251,248,254,251,248,254,251, + 248,254,251,248,254,251,248,254,251,248,211,150,109,210,167,138,171, + 98, 50,187,106, 54,240,210,190,226,163,122,226,163,122,225,163,122, + 226,163,123,225,163,123,224,161,120,222,159,119,221,159,118,220,157, + 116,217,155,114,216,153,113,214,153,112,213,171,142,173, 99, 51,187, + 106, 54,242,213,194,227,163,122,227,163,122,226,163,123,226,163,123, + 226,164,123,225,162,121,224,161,120,222,160,119,222,158,117,220,157, + 116,218,155,115,217,155,115,218,176,149,175,100, 51,187,106, 54,242, + 216,197,227,164,123,227,163,122,227,164,122,226,164,123,226,163,123, + 225,163,123,225,162,121,223,160,119,222,159,118,221,158,116,219,156, + 114,220,157,116,221,181,154,177,101, 52,187,107, 54,244,217,199,230, + 166,125,200,140,100,201,141,101,201,142,103,203,146,108,203,146,109, + 202,144,105,200,140,101,200,140,100,200,140,100,200,140,100,218,156, + 116,225,186,159,179,102, 52,187,108, 55,244,220,201,231,167,125,249, + 236,225,249,236,225,249,237,227,252,244,238,253,250,247,253,247,243, + 250,237,229,247,231,219,247,229,217,246,229,216,222,160,119,228,190, + 164,180,103, 52,189,110, 58,245,221,204,231,168,126,250,240,232,250, + 240,232,201,141,102,250,240,233,253,248,243,254,250,248,252,244,239, + 249,233,223,247,231,219,247,229,217,224,162,120,231,194,169,182,104, + 53,192,116, 66,246,223,208,232,168,126,252,246,241,252,246,241,200, + 140,100,250,241,233,251,244,238,253,250,247,253,249,246,250,240,232, + 248,232,221,247,230,219,225,163,122,239,213,195,183,106, 54,198,130, + 85,246,223,209,233,170,128,254,250,246,253,250,246,200,140,100,251, + 243,238,251,241,234,252,246,242,254,251,248,252,246,241,249,236,226, + 248,231,219,238,208,186,236,208,189,189,116, 67,214,165,133,246,224, + 209,247,224,209,254,251,248,254,251,247,253,249,246,252,245,240,250, + 240,234,251,242,237,253,249,246,253,250,247,251,241,235,248,233,223, + 236,209,190,205,146,106,226,197,177,225,189,166,217,171,141,201,137, + 94,192,117, 67,189,110, 58,187,108, 55,187,107, 54,187,106, 54,187, + 106, 54,188,108, 57,189,110, 59,187,109, 58,191,116, 68,201,141,101, + 231,206,188,255,255,255); + +Const + stdimg_arrow_up : Array[0..149] of byte = ( + 66, 77,150, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 7, 0, 0, 0, 4, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 96, 0, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, + 255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, + 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, + 0, 0,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0); + +Const + stdimg_executable_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,128,128,128,135,135,135,133, - 133,133,133,133,133,128,128,128,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 88, 88, 88,102,102,102,108,108,108, 99, - 99, 99, 83, 83, 83,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255, 81, 81, 81, 84, 84, 84, 81, 81, 81,255, + 255,255, 0,255,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255, 60, 77,162, 76, 89,162, 77, 90,161, 74, 87,161, 73, 84, - 156,255, 0,255, 80, 80, 77, 45, 45, 45, 74, 74, 74,255, 0,255,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, + 54,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 36, 59,219, 0, 43,255, 0, 47,255, 0, 39,239, 45, 62,197,255, 0, - 255, 65, 65, 63, 7, 7, 7, 60, 60, 60,255, 0,255,255, 0,255,255, + 255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218,199,195,195,159, + 157,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,120, 72, 54,218,199,195,188,151,145,204,176,172,221,202, + 200,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54, + 218,199,195,181,142,133,182,144,135,183,145,137,217,197,193,190,154, + 148,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,120, 72, 54,218,199,195,174,136,122, + 175,135,122,176,137,124,193,162,152,216,196,191,188,153,144,181,143, + 133,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,120, 72, 54,218,199,195,201,177,167,200,176,165,187,155,143, + 183,149,136,171,131,116,198,170,161,194,163,153,175,136,123,177,137, + 125,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,207,185,175,207,186,176,208,187,177,209,187,178,202,178,167, + 187,156,142,205,181,171,209,188,179,173,134,119,171,130,115,172,132, + 117,153,111, 86,120, 72, 54,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,204,182,171,205,183,172,206,184,173,206,185,174,199,174,162, + 176,140,124,191,162,149,203,179,169,170,130,113,153,111, 86,120, 72, + 54,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,202,180,167,203,180,168,203,181,169,204,182,170,176,142,124, + 180,148,131,177,144,127,153,111, 86,120, 72, 54,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,200,177,163,200,178,164,201,178,165,186,158,141,150,106, 81, + 153,111, 86,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,198,174,159,198,175,160,186,159,141,144,100, 72,120, 72, 54, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,195,171,155,159,122, 95,120, 72, 54,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,218, + 199,195,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,120, 72, 54,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 19, 38,213, 0, 32,255, 80, 88,168,255, 0,255,255, 0,255, 55, 55, - 55, 0, 0, 0, 58, 58, 58,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 28, 37,212, - 0, 16,255, 86, 89,166,255, 0,255,255, 0,255, 55, 55, 55, 1, 1, - 1, 58, 58, 58,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255, 27, 28,213, 0, 3,255, - 85, 85,168,255, 0,255,255, 0,255, 55, 55, 55, 0, 0, 0, 58, 58, - 58,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255, 27, 27,213, 0, 0,255, 84, 84,166, - 255, 0,255,255, 0,255, 57, 57, 57, 11, 11, 11, 60, 60, 60,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255, 27, 27,220, 3, 4,166, 62, 62, 88,255, 0,255, - 255, 0,255, 71, 71, 71, 49, 49, 49, 71, 71, 71,255, 0,255,255, 0, - 255,100,100,100,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255, 27, 27,224, 19, 19,138, 52, 52, 32,255, 0,255,255, 0,255, - 78, 78, 78, 93, 93, 93, 76, 76, 76,255, 0,255,255, 0,255, 40, 40, - 40,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 29, - 29,225, 24, 24,153,113,113, 93, 65, 65, 65, 71, 71, 71, 84, 84, 81, - 139,139,138, 75, 75, 75, 74, 74, 74, 66, 66, 66,113,113,113,255, 0, - 255, 78, 78,167, 88, 88,152,255, 0,255,255, 0,255, 48, 48,225, 37, - 38,161,103,103, 98,114,114,111,106,106,103,106,106,115,112,112,115, - 111,111,111,105,105,105,113,113,113,113,113,113,255, 0,255, 83, 83, - 197, 45, 45,204,255, 0,255,255, 0,255, 59, 60,212, 81, 83,247, 72, - 72,146,255, 0,255,255, 0,255, 43, 44,213,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,105,105,181,113,114, - 255, 76, 76,207, 77, 77,191, 97, 98,244,127,128,255, 79, 79,220, 83, - 84,188, 87, 87,223,104,105,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,123,123,178, 80, 80,215, 84, 84, - 223, 80, 80,228, 81, 81,220, 74, 74,218, 79, 79,223, 77, 77,228, 83, - 83,239, 67, 68,231,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255); Const - stdimg_help_16 : Array[0..821] of byte = ( + stdimg_search_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,192,161,139,164,117, 85,142, 85, 45,142, 85, 45,165,119, 87,193, - 161,139,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,198,169,149,147, 91, 53,203,175, - 155,229,214,203,248,244,241,249,245,242,232,219,209,211,186,167,149, - 94, 56,199,171,151,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,163,116, 84,175,134,105,243,237,233,221,201,186,199,165, - 139,187,145,113,193,153,121,213,183,159,233,218,205,248,243,239,183, - 145,117,166,120, 88,255, 0,255,255, 0,255,255, 0,255,199,170,150, - 174,133,105,243,238,233,183,143,114,165,114, 76,179,135,101,255,255, - 255,255,255,255,193,151,116,197,155,120,215,185,160,249,245,241,180, - 140,112,199,171,151,255, 0,255,255, 0,255,146, 91, 52,242,235,230, - 177,135,105,157,103, 64,163,111, 73,178,132, 98,255,255,255,255,255, - 255,189,146,111,193,150,114,197,155,120,214,183,157,247,241,237,147, - 93, 54,255, 0,255,192,161,139,195,166,145,211,188,173,148, 92, 51, - 154,100, 60,161,108, 69,169,120, 82,200,168,143,204,173,148,183,137, - 101,187,143,107,191,147,112,193,150,115,231,215,201,207,181,161,193, - 161,139,162,115, 83,221,204,192,175,134,106,145, 88, 47,151, 96, 56, - 157,103, 64,167,118, 81,228,212,200,229,214,202,180,134, 98,182,135, - 99,185,139,103,186,142,106,209,178,155,230,215,204,165,118, 86,141, - 83, 43,245,240,237,148, 94, 56,142, 83, 42,148, 91, 51,153, 98, 58, - 159,105, 66,243,237,232,255,255,255,208,181,160,176,127, 90,178,131, - 94,180,133, 96,189,148,117,248,243,240,142, 84, 45,141, 83, 43,245, - 240,237,147, 92, 54,138, 79, 37,144, 86, 45,149, 93, 52,154, 99, 59, - 181,139,109,252,251,249,254,254,254,193,157,130,172,122, 84,173,124, - 86,183,141,108,247,243,239,142, 84, 44,162,115, 83,221,204,192,172, - 130,101,135, 74, 32,139, 80, 39,144, 86, 45,149, 92, 52,153, 98, 58, - 194,161,137,255,255,255,243,236,232,165,114, 75,166,115, 77,195,161, - 134,225,210,198,164,117, 85,192,161,139,195,165,144,208,185,169,135, - 74, 32,135, 74, 32,159,110, 75,160,111, 77,148, 91, 50,168,122, 89, - 255,255,255,253,252,251,161,109, 70,159,106, 67,218,198,183,198,170, - 149,192,161,139,255, 0,255,146, 92, 53,241,234,229,165,120, 88,135, - 74, 32,176,136,108,254,253,253,233,222,214,246,242,239,255,255,255, - 220,202,189,152, 96, 56,179,137,107,242,235,230,145, 91, 52,255, 0, - 255,255, 0,255,198,169,149,173,131,103,242,235,231,166,120, 89,156, - 105, 71,222,206,194,247,243,240,241,234,230,208,184,167,160,111, 77, - 173,130,100,243,237,232,171,128, 98,198,169,149,255, 0,255,255, 0, - 255,255, 0,255,163,116, 84,170,127, 97,240,232,227,208,185,169,172, - 130,101,150, 96, 59,150, 96, 59,172,130,101,209,186,170,240,233,228, - 170,128, 98,163,116, 84,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,198,169,149,145, 91, 52,193,162,141,219,201,189,244, - 239,235,244,239,235,219,201,189,193,163,141,145, 90, 51,199,170,150, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,192,161,139,162,115, 83,141, 83, 43,141, - 83, 43,162,115, 83,192,161,139,255, 0,255,255, 0,255,255, 0,255, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,100,148,186, 34, + 103,157,129,168,198,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,111,156,194, 85,141,188,137,181,221, 24, + 95,151,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,123,164,202,100,151,197,157,193,228,102,153,199, 49,113,165,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,233,207,186, + 219,178,146,211,166,128,208,161,124,210,166,133,174,161,153,117,162, + 204,171,203,232,118,164,206, 64,123,175,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,232,202,176,232,201,174,245,225,205, + 247,229,211,247,229,209,243,221,200,223,186,156,199,168,145,134,174, + 213, 80,135,187,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,241,219,200,237,208,183,248,232,217,245,222,200,243,216,189, + 243,214,187,244,219,194,247,228,210,223,187,157,160,151,149,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,238, + 206,178,247,231,215,246,225,204,244,219,194,244,218,192,243,216,189, + 243,215,187,244,219,194,243,222,201,210,168,135,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,240,206,175,249, + 236,223,245,223,200,245,221,198,244,220,195,244,218,193,243,217,190, + 243,215,189,248,230,211,211,166,128,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,244,211,181,249,237,225,246, + 225,204,245,223,201,245,222,199,244,220,196,244,219,194,244,218,192, + 248,231,214,215,171,135,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,248,219,193,249,235,222,247,231,214,246, + 225,204,245,224,202,245,222,200,245,221,197,246,225,203,245,226,208, + 223,185,153,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,252,234,216,248,226,204,250,238,227,247,231,214,246, + 226,206,246,225,203,246,227,208,249,234,221,236,207,181,236,212,191, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,251,228,206,249,226,205,250,236,222,249,238,226,249, + 237,226,248,233,218,240,213,189,237,208,183,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,252,234,217,250,221,194,246,214,185,244,211,181,243, + 212,184,245,224,205,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255); Const - stdimg_hidden : Array[0..821] of byte = ( + stdimg_menu_quit_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 15, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255, - 255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, - 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, - 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255, - 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, - 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255, - 255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 0, 0, 0); - -Const - stdimg_link : Array[0..449] of byte = ( - 66, 77,194, 1, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 11, 0, 0, 0, 11, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 140, 1, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255, - 255,255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255, - 255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255, - 255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255, - 255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, - 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128, - 128,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, - 128,128,128,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, - 0, 0,128,128,128,255,255,255,255,255,255,255,255,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 0, 0, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 128,128, 0, 0, 0, 0, 0, 0); + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31, + 163, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31,163, 31, + 31,163, 31, 31,163, 31, 31,163,255, 0,255,255, 0,255,255, 0,255, + 33, 33,176, 6, 5,193, 0, 0,194, 0, 0,201, 0, 0,206, 0, 0, + 217, 24, 24,228, 26, 26,234, 12, 15,235, 6, 12,236, 26, 36,239, 36, + 48,241, 50, 67,251, 42, 47,189,255, 0,255,255, 0,255, 16, 16,173, + 0, 0,181, 0, 0,190, 0, 0,195,108,108,225,216,216,249,255,255, + 255,255,255,255,227,227,253,133,136,243, 24, 34,233, 31, 43,235, 45, + 60,239, 39, 46,196,255, 0,255,255, 0,255, 16, 16,170, 0, 0,181, + 1, 1,187,142,142,229,255,255,255,223,223,246,144,144,233,139,139, + 235,212,212,246,255,255,255,173,177,248, 32, 44,235, 42, 57,239, 38, + 45,195,255, 0,255,255, 0,255, 18, 18,168, 1, 1,179,105,105,214, + 255,255,255,173,173,233, 10, 10,206, 0, 0,213, 0, 0,221, 2, 2, + 224,149,151,238,255,255,255,147,153,246, 29, 43,237, 37, 44,193,255, + 0,255,255, 0,255, 23, 23,166, 23, 23,185,211,211,242,246,246,252, + 51, 51,207, 30, 30,212, 31, 31,218, 19, 19,222, 0, 0,227, 7, 10, + 227,228,228,250,235,236,254, 41, 53,238, 34, 40,192,255, 0,255,255, + 0,255, 27, 27,164, 51, 51,190,239,239,250,220,220,246, 44, 44,203, + 54, 54,212, 50, 50,217, 54, 54,223, 57, 56,230, 18, 19,230,181,182, + 247,255,255,255, 51, 60,238, 30, 35,190,255, 0,255,255, 0,255, 31, + 31,163, 58, 58,188,227,227,245,239,239,251, 67, 67,206, 61, 61,210, + 155,155,235,158,158,239, 73, 73,227, 74, 74,233,222,222,252,239,240, + 253, 30, 36,234, 28, 31,189,255, 0,255,255, 0,255, 36, 36,162, 65, + 65,188,170,170,222,255,255,255,159,159,229, 74, 74,208,238,238,251, + 244,244,253, 84, 84,224,149,149,239,255,255,255,197,197,244, 14, 16, + 231, 22, 23,187,255, 0,255,255, 0,255, 40, 40,162, 89, 89,193, 97, + 97,194,221,221,238,255,255,255,147,147,224,225,225,247,230,230,249, + 160,160,235,255,255,255,233,233,246,131,131,230, 99, 99,237, 23, 23, + 185,255, 0,255,255, 0,255, 46, 46,163,107,107,195,100,100,195,113, + 113,198,175,175,215,133,133,212,231,231,248,233,233,250,165,165,225, + 208,208,232,135,135,222,123,123,229,141,141,234, 53, 53,186,255, 0, + 255,255, 0,255, 55, 55,165,120,120,195,118,118,196,118,118,200,113, + 113,199,123,123,207,241,241,251,246,246,253,131,131,216,128,128,215, + 137,137,224,143,143,225,150,150,229, 68, 68,186,255, 0,255,255, 0, + 255, 84, 84,167,172,172,222,170,170,219,172,172,222,175,175,225,179, + 179,229,176,176,228,179,179,231,189,189,237,191,191,238,195,195,239, + 197,197,240,209,209,247,163,163,193,255, 0,255,255, 0,255,255, 0, + 255,103,103,175,100,100,172,100,100,171,101,101,172,101,101,172,101, + 101,173,102,102,173,102,102,173,102,102,173,103,103,173,104,104,173, + 104,104,175,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); Const - stdimg_list_add_16 : Array[0..821] of byte = ( + stdimg_menu_exit_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,165,193,214,128,167,197, 99,148,184, 22, 94,147, 29, 99,151, + 153,153,153,113,113,113, 84, 84, 84, 81, 81, 81, 79, 79, 79, 76, 76, + 76, 74, 74, 74, 71, 71, 71, 69, 69, 69, 37,103,157, 50,116,168, 61, + 124,175, 71,132,181, 78,138,186, 62,126,173, 32,101,152,255,255,255, + 255,255,255, 88, 88, 88,162,162,162,162,162,162,163,163,163,164,164, + 164,164,164,164,165,165,165, 47,111,165,120,171,210,120,171,211,115, + 167,209,105,160,205, 64,127,174, 35,103,154,255,255,255,255,255,255, + 92, 92, 92,161,161,161, 60,115, 64,160,161,161,163,163,163,163,163, + 163,164,164,164, 54,116,170,125,175,212, 91,154,201, 84,149,199, 88, + 150,200, 65,128,174, 38,105,157,255,255,255,255,255,255, 96, 96, 96, + 160,160,160, 61,118, 65, 54,113, 57,162,162,162,162,162,162,163,163, + 163, 61,121,176,130,179,215, 98,159,204, 90,154,201, 94,155,202, 67, + 129,175, 44,109,160, 55,130, 62, 52,126, 59, 49,121, 55, 46,117, 52, + 73,145, 80, 70,143, 76, 57,115, 61,161,161,161,162,162,162, 69,126, + 180,136,183,217,103,163,207, 97,158,204, 99,159,204, 69,131,177, 49, + 113,164, 59,135, 66,137,203,146,132,200,141,128,198,136,123,195,131, + 119,193,127, 71,143, 77, 59,116, 63,161,161,161, 76,132,186,141,187, + 219,110,168,209,102,166,209, 95,180,223, 71,133,177, 55,117,169, 62, + 139, 70,143,206,153,125,198,135,120,195,129,115,192,124,116,192,124, + 121,194,129, 73,144, 79, 84,127, 87, 84,137,191,148,191,221,117,173, + 212, 99,184,225, 75,212,255, 66,139,184, 61,122,173, 65,144, 74,148, + 210,159,145,208,154,141,205,150,137,203,146,132,200,141, 81,152, 88, + 65,124, 70,159,159,159, 90,142,196,152,195,224,124,179,215,116,175, + 214, 94,196,237, 75,136,179, 69,127,178, 68,148, 77, 66,145, 75, 63, + 141, 72, 61,137, 69, 93,164,101, 90,160, 97, 69,131, 75,158,158,158, + 158,158,158, 96,146,201,158,199,226,131,184,218,125,180,215,126,179, + 215, 79,137,180, 75,132,183,255,255,255,255,255,255,119,119,119,154, + 154,154, 61,138, 69, 73,138, 79,156,156,156,157,157,157,157,157,157, + 102,150,204,162,203,227,137,189,220,131,185,218,132,185,218, 81,139, + 181, 82,137,188,255,255,255,255,255,255,122,122,122,153,153,153, 82, + 145, 89,153,154,153,155,155,155,156,156,156,156,156,156,108,154,208, + 167,206,229,143,193,223,137,189,220,139,189,220, 83,141,182, 90,142, + 194,255,255,255,255,255,255,125,125,125,153,153,153,153,153,153,154, + 154,154,154,154,154,155,155,155,155,155,155,111,157,211,170,209,231, + 171,209,231,152,199,225,145,194,222, 86,143,183, 96,147,198,255,255, + 255,255,255,255,128,128,128,126,126,126,124,124,124,122,122,122,119, + 119,119,117,117,117,114,114,114,113,158,212,111,158,214,135,178,220, + 171,211,232,169,208,230, 88,144,184,103,151,203,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,132,172,220,109,156,212, + 133,177,218, 90,145,185,109,156,207,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,182,132, - 93,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,164,101, 52,230,206, - 183,230,206,183,164,101, 52,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,164,101, 52,230,206,183,217,173, - 134,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,164,101, 52,230,206,183,217,173,134,164,101, - 52,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,182,132, 93,164,101, 52,164,101, 52, - 164,101, 52,164,101, 52,217,173,134,217,173,134,164,101, 52,164,101, - 52,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, - 255,255,255,255,255,164,101, 52,229,204,180,219,183,149,219,182,148, - 218,180,146,218,179,144,217,173,134,216,170,131,215,168,127,215,166, - 125,224,190,159,164,101, 52,255,255,255,255,255,255,255,255,255,255, - 255,255,164,101, 52,232,211,192,231,209,187,231,209,188,230,206,183, - 230,206,183,230,206,183,230,206,183,230,205,182,230,204,181,230,204, - 182,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,182, - 132, 93,164,101, 52,164,101, 52,164,101, 52,164,101, 52,230,206,183, - 230,206,183,164,101, 52,164,101, 52,164,101, 52,164,101, 52,182,132, - 93,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,164,101, 52,230,206,183,230,206,183, - 164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,164,101, 52,230,206,183,230,206,183,164,101, 52, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,164,101, 52,230,206,183,230,206,183,164,101, 52,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,182, - 132, 93,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,177,202,232, + 108,156,211,112,158,210); Const - stdimg_list_remove_16 : Array[0..821] of byte = ( + stdimg_bookmark_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,182,132, 93,164,101, 52,164,101, 52, - 164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, - 52,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, - 255,255,255,255,255,164,101, 52,229,204,180,219,183,149,219,182,148, - 218,180,146,218,179,144,217,173,134,216,170,131,215,168,127,215,166, - 125,224,190,159,164,101, 52,255,255,255,255,255,255,255,255,255,255, - 255,255,164,101, 52,232,211,192,231,209,187,231,209,188,230,206,183, - 230,206,183,230,206,183,230,206,183,230,205,182,230,204,181,230,204, - 182,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,182, - 132, 93,164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52, - 164,101, 52,164,101, 52,164,101, 52,164,101, 52,164,101, 52,182,132, - 93,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,223,209,197,157,105, 71,135, 74, 32,135, 74, + 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32, + 255, 0,255,150, 96, 59,168,109, 61,215,169,130,182,134, 96,162,115, + 77,166,122, 85,172,129, 95,177,136,103,181,143,111,185,149,118,189, + 155,126,194,160,133,197,165,139,200,169,144,135, 74, 32,255, 0,255, + 135, 74, 32,188,132, 80,216,169,130,179,130, 90,156,107, 66,147,110, + 75,127,111, 86,166,120, 82,169,124, 87,151,124, 95,150,128,101,179, + 137,103,182,141,108,199,167,142,135, 74, 32,255, 0,255,135, 74, 32, + 188,132, 80,216,169,130,179,130, 90,156,107, 66, 26,104,116, 12,108, + 126, 37,107,116, 68,110,109, 9,103,121, 8,102,120,149,130,106,182, + 141,108,198,165,139,135, 74, 32,255, 0,255,135, 74, 32,188,132, 80, + 216,169,130,179,130, 90,156,107, 66, 23,106,120, 64,207,227, 50,182, + 202, 38,157,176, 72,221,240, 18,114,131,145,129,105,182,141,108,197, + 163,137,135, 74, 32,255, 0,255,135, 74, 32,188,132, 80,216,169,130, + 179,130, 90,156,107, 66, 35,106,115, 52,186,206, 79,233,252, 79,233, + 252, 78,231,250, 3, 99,118,162,133,104,182,141,108,195,161,134,135, + 74, 32,255, 0,255,135, 74, 32,188,132, 80,216,169,130,179,130, 90, + 68,104, 99, 19,118,136, 73,224,242, 79,233,252, 79,233,252, 79,232, + 251, 36,151,170, 33,109,119,169,138,108,194,159,131,135, 74, 32,255, + 0,255,135, 74, 32,188,132, 80,216,169,130,162,127, 93, 3, 98,118, + 60,198,216,113,232,247,194,247,254,215,250,254,135,239,252, 74,216, + 235, 19,121,140,108,122,112,193,157,128,135, 74, 32,255, 0,255,135, + 74, 32,188,132, 80,216,169,130,179,130, 90, 68,104,100, 24,106,119, + 3, 97,119,147,221,232,223,250,253, 10,106,125, 18,106,122, 43,111, + 121,163,137,109,191,155,126,135, 74, 32,255, 0,255,135, 74, 32,188, + 132, 80,216,169,130,179,130, 90,156,107, 66,159,111, 71,111,109, 90, + 47,135,150,122,198,210, 62,112,114,175,133, 98,179,137,103,182,141, + 108,190,153,123,135, 74, 32,255, 0,255,135, 74, 32,188,132, 80,216, + 169,130,179,130, 90,156,107, 66,159,111, 71,162,115, 77, 38,106,115, + 13,102,120,146,123, 95,175,133, 98,179,137,103,182,141,108,189,151, + 120,135, 74, 32,255, 0,255,135, 74, 32,182,128, 81,183,136,102,172, + 124, 92,166,122, 89,167,122, 89,167,123, 89,169,126, 92,170,128, 94, + 174,131, 96,175,133, 98,179,137,103,182,141,108,187,149,118,135, 74, + 32,255, 0,255,135, 74, 32,156,104, 67,153, 98, 60,156,102, 64,153, + 102, 63,159,110, 72,166,119, 84,170,126, 90,172,129, 93,174,131, 96, + 176,135,100,179,137,103,182,141,108,186,146,115,135, 74, 32,255, 0, + 255,135, 74, 32,150, 92, 47,203,188,176,236,233,230,249,246,244,249, + 247,244,250,247,245,250,247,245,250,247,245,250,248,245,250,248,246, + 251,248,246,251,248,246,251,249,247,135, 74, 32,255, 0,255,150, 96, + 59,160,101, 54,213,202,193,210,217,213,214,220,217,218,224,221,222, + 228,225,227,231,229,231,235,233,235,239,237,240,242,241,244,246,245, + 249,250,249,253,253,253,135, 74, 32,255, 0,255,223,209,197,157,105, + 71,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, + 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32,135, 74, 32, + 135, 74, 32,135, 74, 32); Const stdimg_menu_check_16 : Array[0..821] of byte = ( @@ -2401,278 +2162,620 @@ Const 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); + +Const + stdimg_btn_close_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,183,183,183,174,174,174, 48,113,169, 44,110,166, 40,107, + 163, 36,104,160, 33,102,158, 29, 99,155, 26, 97,153, 23, 95,151, 20, + 92,148, 17, 91,147,108,108,108,108,108,108,255,255,255,255,255,255, + 255,255,255,255,255,255, 54,117,173,134,182,216,131,179,215,129,178, + 214,125,175,213,123,173,212,121,171,211,118,170,210,116,168,209, 21, + 93,149,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 60,121,177,139,185,218,102,162,206, 98,160,205, 95,157, + 203, 91,154,201, 88,151,200, 84,149,199,119,171,211, 25, 96,152,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 66,125,181,143,189,220,108,167,208,103,164,207,100,161,205, 96,158, + 204, 92,155,202, 89,153,201,123,173,212, 30,100,156,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 72,130,186, + 147,192,221,113,171,210,109,168,209,105,165,207,102,162,206, 98,159, + 204, 94,156,203,127,176,213, 35,103,159,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 78,134,190,152,195,223, + 119,175,213,115,172,211,111,169,210,107,167,208, 91,183,227, 84,194, + 237,129,180,215, 40,107,163,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 83,138,194,156,198,225,124,179,215, + 121,177,213,117,173,212,113,171,210, 95,186,228, 75,212,255,124,187, + 224, 46,111,167,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255, 89,142,198,160,201,227,130,184,217,126,181,216, + 122,178,214,119,175,213,115,172,211,109,171,212,140,186,218, 51,115, + 171,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255, 94,145,201,164,204,228,135,187,219,132,185,218,128,182,216, + 124,179,215,121,176,213,116,173,212,143,189,220, 57,119,175,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 99, + 149,205,168,207,229,140,191,221,136,189,220,133,186,219,129,183,217, + 126,180,215,122,178,214,148,193,221, 63,124,180,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,103,152,208,171, + 209,231,144,194,223,141,192,222,138,190,220,135,187,219,131,184,218, + 128,182,216,153,196,224, 69,128,184,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,107,155,211,174,212,232,171, + 211,232,170,209,231,168,207,229,165,205,228,162,203,228,160,201,226, + 157,199,225, 75,132,188,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,110,157,213,108,155,211,105,154,210,102, + 151,207, 99,149,205, 96,147,203, 92,144,200, 89,142,198, 85,139,195, + 81,136,192,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_bevel : Array[0..1709] of byte = ( + 66, 77,174, 6, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 120, 6, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,200,208,212, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, + 255,128,128,128,200,208,212,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, + 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, 0,255, + 255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,255,255, + 255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255, + 255,255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, + 200,208,212,200,208,212,128,128,128,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,200,208,212,128, + 128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255, + 128,128,128,255,255,255,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,128,128,128,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,255,255,255, + 200,208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, + 0,255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128, + 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,255,255,255,200,208,212,128,128,128,255,255,255,255, 0,255,255, + 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,128,128,128,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,255,255,255,200,208,212,128,128,128,255,255,255, + 255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255, + 255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,255,255,255,200,208,212,128,128, + 128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128, + 128,128,255,255,255,200,208,212,200,208,212,200,208,212,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0, + 255, 0,255,128,128,128,255,255,255,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, + 200,208,212,200,208,212,128,128,128,255,255,255,255, 0,255,255, 0, + 255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,255, + 255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, + 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255, + 200,208,212,255,255,255,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,128,128,128,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128, + 255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128, + 128,255,255,255,200,208,212,255,255,255,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,128,128,128,200,208,212,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, + 0,255,128,128,128,255,255,255,200,208,212,255,255,255,200,208,212, + 200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,128,128,128,255,255,255,255, 0,255,255, 0,255, + 0, 0, 0,255, 0,255,128,128,128,255,255,255,200,208,212,255,255, + 255,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,128, + 128,128,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, + 200,208,212,200,208,212,200,208,212,128,128,128,255,255,255,255, 0, + 255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128,255,255,255,200, + 208,212,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,128,128,128,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,128,128,128,255, + 255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0,255,128,128,128, + 255,255,255,200,208,212,200,208,212,200,208,212,200,208,212,200,208, + 212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212,200, + 208,212,200,208,212,200,208,212,200,208,212,200,208,212,200,208,212, + 128,128,128,255,255,255,255, 0,255,255, 0,255, 0, 0, 0,255, 0, + 255,128,128,128,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,200,208,212,255,255,255,255, 0,255,255, 0,255, 0, + 0, 0,255, 0,255,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,200,208,212,255, 0,255, + 255, 0,255, 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255, 0, 0, 0); Const - stdimg_menu_exit_16 : Array[0..821] of byte = ( + stdimg_choice_no_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,165,193,214,128,167,197, 99,148,184, 22, 94,147, 29, 99,151, - 153,153,153,113,113,113, 84, 84, 84, 81, 81, 81, 79, 79, 79, 76, 76, - 76, 74, 74, 74, 71, 71, 71, 69, 69, 69, 37,103,157, 50,116,168, 61, - 124,175, 71,132,181, 78,138,186, 62,126,173, 32,101,152,255,255,255, - 255,255,255, 88, 88, 88,162,162,162,162,162,162,163,163,163,164,164, - 164,164,164,164,165,165,165, 47,111,165,120,171,210,120,171,211,115, - 167,209,105,160,205, 64,127,174, 35,103,154,255,255,255,255,255,255, - 92, 92, 92,161,161,161, 60,115, 64,160,161,161,163,163,163,163,163, - 163,164,164,164, 54,116,170,125,175,212, 91,154,201, 84,149,199, 88, - 150,200, 65,128,174, 38,105,157,255,255,255,255,255,255, 96, 96, 96, - 160,160,160, 61,118, 65, 54,113, 57,162,162,162,162,162,162,163,163, - 163, 61,121,176,130,179,215, 98,159,204, 90,154,201, 94,155,202, 67, - 129,175, 44,109,160, 55,130, 62, 52,126, 59, 49,121, 55, 46,117, 52, - 73,145, 80, 70,143, 76, 57,115, 61,161,161,161,162,162,162, 69,126, - 180,136,183,217,103,163,207, 97,158,204, 99,159,204, 69,131,177, 49, - 113,164, 59,135, 66,137,203,146,132,200,141,128,198,136,123,195,131, - 119,193,127, 71,143, 77, 59,116, 63,161,161,161, 76,132,186,141,187, - 219,110,168,209,102,166,209, 95,180,223, 71,133,177, 55,117,169, 62, - 139, 70,143,206,153,125,198,135,120,195,129,115,192,124,116,192,124, - 121,194,129, 73,144, 79, 84,127, 87, 84,137,191,148,191,221,117,173, - 212, 99,184,225, 75,212,255, 66,139,184, 61,122,173, 65,144, 74,148, - 210,159,145,208,154,141,205,150,137,203,146,132,200,141, 81,152, 88, - 65,124, 70,159,159,159, 90,142,196,152,195,224,124,179,215,116,175, - 214, 94,196,237, 75,136,179, 69,127,178, 68,148, 77, 66,145, 75, 63, - 141, 72, 61,137, 69, 93,164,101, 90,160, 97, 69,131, 75,158,158,158, - 158,158,158, 96,146,201,158,199,226,131,184,218,125,180,215,126,179, - 215, 79,137,180, 75,132,183,255,255,255,255,255,255,119,119,119,154, - 154,154, 61,138, 69, 73,138, 79,156,156,156,157,157,157,157,157,157, - 102,150,204,162,203,227,137,189,220,131,185,218,132,185,218, 81,139, - 181, 82,137,188,255,255,255,255,255,255,122,122,122,153,153,153, 82, - 145, 89,153,154,153,155,155,155,156,156,156,156,156,156,108,154,208, - 167,206,229,143,193,223,137,189,220,139,189,220, 83,141,182, 90,142, - 194,255,255,255,255,255,255,125,125,125,153,153,153,153,153,153,154, - 154,154,154,154,154,155,155,155,155,155,155,111,157,211,170,209,231, - 171,209,231,152,199,225,145,194,222, 86,143,183, 96,147,198,255,255, - 255,255,255,255,128,128,128,126,126,126,124,124,124,122,122,122,119, - 119,119,117,117,117,114,114,114,113,158,212,111,158,214,135,178,220, - 171,211,232,169,208,230, 88,144,184,103,151,203,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,132,172,220,109,156,212, - 133,177,218, 90,145,185,109,156,207,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,177,202,232, - 108,156,211,112,158,210); + 0, 0, 0,255, 0,255,255, 0,255, 98, 98,162,164,164,178,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,152,152,171,101,101,160,255, 0,255,255, 0,255, + 255, 0,255, 48, 48,162, 55, 55,241, 19, 19,202,152,152,172,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,135, + 135,164, 17, 17,205, 48, 48,234, 61, 61,154,255, 0,255,255, 0,255, + 8, 8,224, 72, 72,245, 76, 76,240, 5, 5,200,135,135,163,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,116,116,157, 5, 5,205, 90, + 90,239, 90, 90,244, 9, 9,217,255, 0,255,255, 0,255, 34, 34,254, + 55, 55,255, 89, 89,255, 74, 74,237, 5, 5,199,119,119,156,255, 0, + 255,255, 0,255, 98, 98,152, 8, 8,206, 90, 90,237,115,115,255, 85, + 85,255, 54, 54,253,255, 0,255,255, 0,255, 29, 29,255, 43, 43,255, + 57, 57,255, 86, 86,255, 69, 69,235, 5, 5,196,102,102,148, 85, 85, + 147, 9, 9,203, 84, 84,237,106,106,255, 80, 80,255, 65, 65,255, 52, + 52,255,255, 0,255,255, 0,255,255, 0,255, 30, 30,255, 43, 43,255, + 53, 53,255, 74, 74,255, 55, 55,232, 1, 1,187, 6, 6,192, 68, 68, + 237, 88, 88,255, 71, 71,255, 62, 62,255, 54, 54,249,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255, 31, 31,251, 47, 47,255, + 60, 60,255, 78, 78,255, 49, 49,232, 55, 55,237, 75, 75,255, 56, 56, + 255, 50, 50,255, 55, 55,241,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255, 77, 77,238, 97, 97,255, + 96, 96,255, 96, 96,255, 98, 98,255, 98, 98,255, 91, 91,255, 73, 73, + 227,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255, 43, 43,156, 61, 61,244, 99, 99,255, + 99, 99,255,100,100,255,100,100,255, 54, 54,237, 75, 75,146,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255, 47, 47,123, 0, 0,166, 49, 49,242,107,107,255,106,106,255, + 106,106,255,105,105,255, 33, 33,230, 0, 0,152, 82, 82,127,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 43, 43,115, 0, + 0,164, 55, 55,243,121,121,255,120,120,255,121,121,255,121,121,255, + 120,120,255,116,116,255, 38, 38,229, 0, 0,146, 82, 82,123,255, 0, + 255,255, 0,255,255, 0,255, 45, 45,112, 0, 0,156, 66, 66,242,138, + 138,255,137,137,255,136,136,255,102,102,209,103,103,224,141,141,255, + 136,136,255,132,132,255, 42, 42,227, 0, 0,139, 91, 91,128,255, 0, + 255,255, 0,255, 0, 0,156, 73, 73,242,155,155,255,153,153,255,153, + 153,255,115,115,207,255, 0,255,255, 0,255,110,110,228,158,158,255, + 153,153,255,148,148,255, 47, 47,229, 13, 13,130,255, 0,255,255, 0, + 255, 85, 85,254,174,174,255,169,169,255,168,168,255,119,119,205,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,118,118,228,175,175,255, + 169,169,255,169,169,255, 60, 60,222,255, 0,255,255, 0,255,127,127, + 208,187,187,255,187,187,255,122,122,207,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,126,126,228,200,200,255, + 164,164,255,152,152,199,255, 0,255,255, 0,255,255, 0,255,126,126, + 210,127,127,214,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,121,121,231,154,154,197, + 255, 0,255,255, 0,255); Const - stdimg_menu_preferences_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,215,194,180,135, 74, 32,135, 74, 32,135, 74, 32,223,207, - 196,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 135, 74, 32,190,165,146,184,156,134,184,156,134,135, 74, 32,223,207, - 196,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,193, - 196,195,154,158,157,193,196,195,255, 0,255,255, 0,255,135, 74, 32, - 204,187,173,167,145,125,181,149,122,174,139,114,135, 74, 32,223,207, - 196,255, 0,255,255, 0,255,255, 0,255,219,220,220,133,138,136,158, - 161,160,133,138,136,255, 0,255,255, 0,255,135, 74, 32,204,187,173, - 164,141,120,162,138,116,180,149,122,179,147,124,135, 74, 32,255, 0, - 255,255, 0,255,219,220,220,133,138,136,210,211,212,194,195,196,133, - 138,136,255, 0,255,255, 0,255,232,221,213,135, 74, 32,212,200,189, - 164,141,120,164,141,120,190,165,146,135, 74, 32,255, 0,255,219,220, - 220,133,138,136,226,227,228,194,196,198,133,138,136,193,196,195,255, - 0,255,255, 0,255,255, 0,255,243,237,233,135, 74, 32,204,187,173, - 204,187,173,179,147,124,135, 74, 32,193,196,195,133,138,136,211,211, - 212,189,190,191,133,138,136,219,220,220,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,243,237,233,135, 74, 32,135, 74, 32, - 135, 74, 32,133,131,125,170,173,173,200,201,202,189,190,191,133,138, - 136,219,220,220,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + stdimg_radiobuttons : Array[0..2213] of byte = ( + 66, 77,166, 8, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 60, 0, 0, 0, 12, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 112, 8, 0, 0,196, 14, 0, 0,196, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 181,183,184,133,138,136,183,184,185,133,138,136,219,220,220,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,219, - 220,220,133,138,136,133,138,136,133,138,136,133,138,136,208,209,210, - 163,164,164,133,138,136,193,196,195,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,219,220,220,133,138,136,243, - 243,243,239,240,240,237,238,238,234,236,236,182,185,186,133,138,136, - 219,220,220,133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,133,138,136,245,246,246,169,172,171,133, - 138,136,247,247,247,226,227,229,170,173,173,245,246,246,255, 0,255, - 219,220,220,133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,219,220,220,133,138,136,255, 0,255,219,220,220,133, - 138,136,250,250,250,133,138,136,255, 0,255,255, 0,255,255, 0,255, - 219,220,220,133,138,136,135,140,138,179,179,179,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,133,138,136,238, - 240,240,133,138,136,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 133,138,136,240,240,240,133,138,136,179,179,179,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,133,138,136,233,235,236,133,138,136,219, - 220,220,255, 0,255,255, 0,255,255, 0,255,255, 0,255,179,179,179, - 133,138,136,238,239,239,133,138,136,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,219,220,220,133,138,136,219,220,220,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,179,179,179, - 133,138,136,219,220,220,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255,255,255,255,255,255,255,255,255,255,255,255, 0,255,255, 0, 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); + 255, 0,255,255, 0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255,255,255,255,255,255,191,191,191,191,191,191,191,191,191, + 191,191,191,255,255,255,255,255,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255,255,255,255,255,255,191,191,191,191,191,191,191, + 191,191,191,191,191,255,255,255,255,255,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255,255,255,255,255,255,191,191,191,191,191, + 191,191,191,191,191,191,191,255,255,255,255,255,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255,255,255,255,255,255,191,191,191, + 191,191,191,191,191,191,191,191,191,255,255,255,255,255,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255,255,255,255,255,255,191, + 191,191,191,191,191,191,191,191,191,191,191,255,255,255,255,255,255, + 255, 0,255,255, 0,255,255, 0,255,127,127,127,191,191,191,191,191, + 191,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,191, + 191,191,255,255,255,255, 0,255,255, 0,255,127,127,127,191,191,191, + 191,191,191,255,255,255,255,255,255,255,255,255,255,255,255,191,191, + 191,191,191,191,255,255,255,255, 0,255,255, 0,255,127,127,127,191, + 191,191,191,191,191,127,127,127,127,127,127,127,127,127,127,127,127, + 191,191,191,191,191,191,255,255,255,255, 0,255,255, 0,255,127,127, + 127,191,191,191,191,191,191,127,127,127,127,127,127,127,127,127,127, + 127,127,191,191,191,191,191,191,255,255,255,255, 0,255,255, 0,255, + 127,127,127,191,191,191,191,191,191,127,127,127,127,127,127,127,127, + 127,127,127,127,191,191,191,191,191,191,255,255,255,255, 0,255,255, + 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, 0, + 255,255, 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255, + 255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, + 255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, + 191,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 191,191,191,255,255,255,255, 0,255,127,127,127, 0, 0, 0,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0, + 255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255, + 255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, + 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255,127,127, + 127, 0, 0, 0,127,127,127,127,127,127,127,127,127, 0, 0, 0, 0, + 0, 0,127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, + 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, + 255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191, + 191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, + 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, + 127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127, + 127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, + 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, + 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,255,255,255,191,191,191,255,255,255,127, + 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255,255, + 255,127,127,127, 0, 0, 0,127,127,127,127,127,127, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,191,191,191, + 255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, + 191,191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255, + 255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, + 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, + 127,127,127,127,127,127,127,127,127, 0, 0, 0, 0, 0, 0,127,127, + 127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, + 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255,255, 0, + 255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, 0,255, + 255, 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, + 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255,255, + 255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191, + 255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, + 191,191,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, + 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, + 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, + 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255,127,127, + 127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, + 127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255, + 127,127,127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,127,127, + 127,127,127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, + 0,255,127,127,127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127, + 127,127,127,127,127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0, + 255,255, 0,255,255, 0,255,127,127,127,127,127,127, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127, + 127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127, + 127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127, + 127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127, + 127,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, + 127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,127,127,127,127,127,127,127,127,127,127,127, + 127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127,127,127,127, + 127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127,127, + 127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127, + 127,127,127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127, + 127,127,127,127,127,127,127,127,127,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255); Const - stdimg_menu_quit_16 : Array[0..821] of byte = ( + stdimg_refresh_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31, - 163, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31,163, 31, 31,163, 31, - 31,163, 31, 31,163, 31, 31,163,255, 0,255,255, 0,255,255, 0,255, - 33, 33,176, 6, 5,193, 0, 0,194, 0, 0,201, 0, 0,206, 0, 0, - 217, 24, 24,228, 26, 26,234, 12, 15,235, 6, 12,236, 26, 36,239, 36, - 48,241, 50, 67,251, 42, 47,189,255, 0,255,255, 0,255, 16, 16,173, - 0, 0,181, 0, 0,190, 0, 0,195,108,108,225,216,216,249,255,255, - 255,255,255,255,227,227,253,133,136,243, 24, 34,233, 31, 43,235, 45, - 60,239, 39, 46,196,255, 0,255,255, 0,255, 16, 16,170, 0, 0,181, - 1, 1,187,142,142,229,255,255,255,223,223,246,144,144,233,139,139, - 235,212,212,246,255,255,255,173,177,248, 32, 44,235, 42, 57,239, 38, - 45,195,255, 0,255,255, 0,255, 18, 18,168, 1, 1,179,105,105,214, - 255,255,255,173,173,233, 10, 10,206, 0, 0,213, 0, 0,221, 2, 2, - 224,149,151,238,255,255,255,147,153,246, 29, 43,237, 37, 44,193,255, - 0,255,255, 0,255, 23, 23,166, 23, 23,185,211,211,242,246,246,252, - 51, 51,207, 30, 30,212, 31, 31,218, 19, 19,222, 0, 0,227, 7, 10, - 227,228,228,250,235,236,254, 41, 53,238, 34, 40,192,255, 0,255,255, - 0,255, 27, 27,164, 51, 51,190,239,239,250,220,220,246, 44, 44,203, - 54, 54,212, 50, 50,217, 54, 54,223, 57, 56,230, 18, 19,230,181,182, - 247,255,255,255, 51, 60,238, 30, 35,190,255, 0,255,255, 0,255, 31, - 31,163, 58, 58,188,227,227,245,239,239,251, 67, 67,206, 61, 61,210, - 155,155,235,158,158,239, 73, 73,227, 74, 74,233,222,222,252,239,240, - 253, 30, 36,234, 28, 31,189,255, 0,255,255, 0,255, 36, 36,162, 65, - 65,188,170,170,222,255,255,255,159,159,229, 74, 74,208,238,238,251, - 244,244,253, 84, 84,224,149,149,239,255,255,255,197,197,244, 14, 16, - 231, 22, 23,187,255, 0,255,255, 0,255, 40, 40,162, 89, 89,193, 97, - 97,194,221,221,238,255,255,255,147,147,224,225,225,247,230,230,249, - 160,160,235,255,255,255,233,233,246,131,131,230, 99, 99,237, 23, 23, - 185,255, 0,255,255, 0,255, 46, 46,163,107,107,195,100,100,195,113, - 113,198,175,175,215,133,133,212,231,231,248,233,233,250,165,165,225, - 208,208,232,135,135,222,123,123,229,141,141,234, 53, 53,186,255, 0, - 255,255, 0,255, 55, 55,165,120,120,195,118,118,196,118,118,200,113, - 113,199,123,123,207,241,241,251,246,246,253,131,131,216,128,128,215, - 137,137,224,143,143,225,150,150,229, 68, 68,186,255, 0,255,255, 0, - 255, 84, 84,167,172,172,222,170,170,219,172,172,222,175,175,225,179, - 179,229,176,176,228,179,179,231,189,189,237,191,191,238,195,195,239, - 197,197,240,209,209,247,163,163,193,255, 0,255,255, 0,255,255, 0, - 255,103,103,175,100,100,172,100,100,171,101,101,172,101,101,172,101, - 101,173,102,102,173,102,102,173,102,102,173,103,103,173,104,104,173, - 104,104,175,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 0, 0, 0,255, 0,255,197,157,126,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,225,205,189,189,144,108,174,118, 73,166,105, 57,176, + 122, 79,196,156,124,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,164,101, 52,203,167,139,255, 0,255,225,204,188,172,113, + 68,184,134, 93,206,166,132,216,182,151,219,185,153,211,172,138,195, + 149,111,169,109, 63,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 165,104, 56,185,136, 96,180,129, 88,180,128, 86,227,202,180,236,218, + 201,231,209,188,227,201,176,222,190,160,210,171,136,206,165,130,211, + 174,142,169,110, 64,255, 0,255,255, 0,255,255, 0,255,167,105, 58, + 241,228,216,212,178,149,244,233,224,243,232,221,237,220,204,210,173, + 143,179,125, 83,166,104, 56,166,105, 57,166,106, 58,169,109, 61,176, + 120, 76,197,157,125,255, 0,255,255, 0,255,166,104, 57,246,238,230, + 245,236,227,245,237,228,230,210,193,179,126, 84,185,136, 97,255, 0, + 255,255, 0,255,217,191,171,175,117, 74,182,124, 79,167,107, 59,167, + 107, 59,255, 0,255,255, 0,255,165,104, 55,246,238,230,235,215,196, + 234,217,201,164,102, 53,217,191,171,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,173,115, 70,225,196,174,200,158,124,164,101, 52,255, + 0,255,255, 0,255,165,103, 54,245,237,229,246,237,229,245,236,228, + 215,184,157,177,122, 79,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,165,103, 54,255, 0,255,255, + 0,255,166,105, 57,164,102, 53,164,102, 53,165,102, 54,165,103, 54, + 165,103, 55,189,143,108,255, 0,255,255, 0,255,255, 0,255,255, 0, 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); + 255, 0,255,198,158,128,164,101, 52,175,120, 76,178,123, 82,178,123, + 82,178,124, 82,164,101, 52,255, 0,255,255, 0,255,165,103, 54,217, + 189,167,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,187,139,102,209,174,145,246,238,231,242,230,219,246,238, + 230,167,108, 61,255, 0,255,255, 0,255,164,102, 54,168,108, 61,221, + 187,162,174,118, 75,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 221,197,179,164,102, 53,233,215,199,235,216,198,245,236,227,168,109, + 62,255, 0,255,255, 0,255,170,111, 65,171,112, 65,169,109, 61,170, + 112, 66,213,184,162,255, 0,255,255, 0,255,183,134, 95,188,141,103, + 235,219,205,245,235,226,246,238,230,246,238,230,169,109, 62,255, 0, + 255,255, 0,255,202,164,135,192,145,106,197,152,114,168,107, 60,164, + 102, 53,168,108, 60,186,139,101,217,187,161,241,228,216,242,230,219, + 243,232,221,206,168,137,234,216,200,169,110, 63,255, 0,255,255, 0, + 255,255, 0,255,169,111, 65,211,173,140,220,189,157,221,190,161,229, + 203,180,233,211,191,238,221,204,240,226,213,231,210,191,178,124, 82, + 187,141,104,174,117, 73,165,104, 55,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,169,109, 63,193,146,107,211,176,143,223,194,168,222, + 193,168,212,177,147,188,140,102,170,112, 67,224,202,185,255, 0,255, + 219,194,174,164,101, 52,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,200,161,132,178,125, 83,168,108, 61,176,120, 77,190, + 145,110,225,205,189,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 212,182,159,255, 0,255); Const - stdimg_menu_save_16 : Array[0..821] of byte = ( + stdimg_list_add_16 : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0,215, 13, 0, 0,215, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,182,132, + 93,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,164,101, 52,230,206, + 183,230,206,183,164,101, 52,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,164,101, 52,230,206,183,217,173, + 134,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,164,101, 52,230,206,183,217,173,134,164,101, + 52,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,182,132, 93,164,101, 52,164,101, 52, + 164,101, 52,164,101, 52,217,173,134,217,173,134,164,101, 52,164,101, + 52,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255,255, + 255,255,255,255,255,164,101, 52,229,204,180,219,183,149,219,182,148, + 218,180,146,218,179,144,217,173,134,216,170,131,215,168,127,215,166, + 125,224,190,159,164,101, 52,255,255,255,255,255,255,255,255,255,255, + 255,255,164,101, 52,232,211,192,231,209,187,231,209,188,230,206,183, + 230,206,183,230,206,183,230,206,183,230,205,182,230,204,181,230,204, + 182,164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,182, + 132, 93,164,101, 52,164,101, 52,164,101, 52,164,101, 52,230,206,183, + 230,206,183,164,101, 52,164,101, 52,164,101, 52,164,101, 52,182,132, + 93,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,164,101, 52,230,206,183,230,206,183, + 164,101, 52,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,164,101, 52,230,206,183,230,206,183,164,101, 52, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,164,101, 52,230,206,183,230,206,183,164,101, 52,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,182, + 132, 93,164,101, 52,164,101, 52,182,132, 93,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255); + +Const + stdimg_edit_copy_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,216,171,142,205,149,112,189,115, 66,183,104, 53,181,104, - 53,180,103, 52,178,102, 52,176,101, 51,174,100, 51,172, 99, 50,170, - 98, 50,169, 97, 50,168, 96, 49,167, 97, 50,171,105, 60,188,134, 97, - 195,125, 79,235,198,173,234,197,173,254,251,248,254,251,248,254,251, - 248,254,251,248,254,251,248,254,251,248,254,251,248,254,251,248,254, - 251,248,254,251,248,200,154,124,199,152,121,173,107, 64,186,108, 56, - 237,202,179,224,162,122,254,250,247, 98,192,136, 98,192,136, 98,192, - 136, 98,192,136, 98,192,136, 98,192,136, 98,192,136, 98,192,136,253, - 249,246,202,141,101,201,155,124,167, 97, 50,187,108, 56,238,204,182, - 225,162,122,254,250,247,191,220,194,191,220,194,191,220,194,191,220, - 194,191,220,194,191,220,194,191,220,194,191,220,194,253,249,246,205, - 144,104,204,158,129,168, 97, 50,187,107, 56,239,206,184,225,162,121, - 254,250,247, 98,192,136, 98,192,136, 98,192,136, 98,192,136, 98,192, - 136, 98,192,136, 98,192,136, 98,192,136,253,249,246,207,147,106,206, - 163,132,170, 97, 50,186,106, 54,239,208,187,226,162,122,254,251,248, - 254,251,248,254,251,248,254,251,248,254,251,248,254,251,248,254,251, - 248,254,251,248,254,251,248,254,251,248,211,150,109,210,167,138,171, - 98, 50,187,106, 54,240,210,190,226,163,122,226,163,122,225,163,122, - 226,163,123,225,163,123,224,161,120,222,159,119,221,159,118,220,157, - 116,217,155,114,216,153,113,214,153,112,213,171,142,173, 99, 51,187, - 106, 54,242,213,194,227,163,122,227,163,122,226,163,123,226,163,123, - 226,164,123,225,162,121,224,161,120,222,160,119,222,158,117,220,157, - 116,218,155,115,217,155,115,218,176,149,175,100, 51,187,106, 54,242, - 216,197,227,164,123,227,163,122,227,164,122,226,164,123,226,163,123, - 225,163,123,225,162,121,223,160,119,222,159,118,221,158,116,219,156, - 114,220,157,116,221,181,154,177,101, 52,187,107, 54,244,217,199,230, - 166,125,200,140,100,201,141,101,201,142,103,203,146,108,203,146,109, - 202,144,105,200,140,101,200,140,100,200,140,100,200,140,100,218,156, - 116,225,186,159,179,102, 52,187,108, 55,244,220,201,231,167,125,249, - 236,225,249,236,225,249,237,227,252,244,238,253,250,247,253,247,243, - 250,237,229,247,231,219,247,229,217,246,229,216,222,160,119,228,190, - 164,180,103, 52,189,110, 58,245,221,204,231,168,126,250,240,232,250, - 240,232,201,141,102,250,240,233,253,248,243,254,250,248,252,244,239, - 249,233,223,247,231,219,247,229,217,224,162,120,231,194,169,182,104, - 53,192,116, 66,246,223,208,232,168,126,252,246,241,252,246,241,200, - 140,100,250,241,233,251,244,238,253,250,247,253,249,246,250,240,232, - 248,232,221,247,230,219,225,163,122,239,213,195,183,106, 54,198,130, - 85,246,223,209,233,170,128,254,250,246,253,250,246,200,140,100,251, - 243,238,251,241,234,252,246,242,254,251,248,252,246,241,249,236,226, - 248,231,219,238,208,186,236,208,189,189,116, 67,214,165,133,246,224, - 209,247,224,209,254,251,248,254,251,247,253,249,246,252,245,240,250, - 240,234,251,242,237,253,249,246,253,250,247,251,241,235,248,233,223, - 236,209,190,205,146,106,226,197,177,225,189,166,217,171,141,201,137, - 94,192,117, 67,189,110, 58,187,108, 55,187,107, 54,187,106, 54,187, - 106, 54,188,108, 57,189,110, 59,187,109, 58,191,116, 68,201,141,101, - 231,206,188,255,255,255); + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,180,183, + 181,134,139,137,133,138,136,133,138,136,133,138,136,133,138,136,133, + 138,136,133,138,136,164,167,166,194,197,196,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,136,141,139,244,244, + 244,246,247,247,245,246,246,251,252,252,251,251,251,212,212,212,150, + 154,152,226,228,227,133,138,136,194,197,196,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,136,141,139,249,250,250,239,240, + 240,239,240,240,239,240,240,250,250,250,250,250,250,149,154,152,250, + 250,250,226,227,227,133,138,136,157,161,160,219,220,220,195,197,196, + 195,197,196,195,197,196,135,140,138,253,254,254,239,240,240,239,240, + 240,239,240,240,239,240,240,250,250,250,149,154,152,250,250,250,247, + 248,248,226,228,227,133,138,136,196,198,197,249,249,249,249,250,250, + 249,249,249,136,141,139,255,255,255,239,240,240,239,240,240,239,240, + 240,239,240,240,239,240,240,137,142,140,137,142,140,137,142,140,137, + 142,140,133,138,136,196,198,197,252,252,252,245,245,245,245,245,245, + 136,141,139,255,255,255,239,240,240,198,199,199,198,199,199,198,199, + 199,198,199,199,198,199,199,238,238,238,246,247,247,195,196,195,133, + 138,136,196,198,197,255,255,255,246,246,246,225,226,226,135,140,138, + 255,255,255,239,240,240,239,240,240,239,240,240,239,240,240,239,240, + 240,239,240,240,239,240,240,250,250,250,243,243,243,133,138,136,196, + 198,197,255,255,255,246,247,247,246,246,246,136,141,139,255,255,255, + 239,240,240,198,199,199,198,199,199,198,199,199,198,199,199,198,199, + 199,239,240,240,239,240,240,255,255,255,133,138,136,196,198,197,255, + 255,255,247,247,247,226,227,227,135,140,138,255,255,255,239,240,240, + 239,240,240,239,240,240,239,240,240,239,240,240,239,240,240,239,240, + 240,239,240,240,255,255,255,133,138,136,196,198,197,255,255,255,247, + 248,248,247,247,247,136,141,139,255,255,255,239,240,240,198,199,199, + 198,199,199,198,199,199,198,199,199,198,199,199,198,199,199,239,240, + 240,255,255,255,133,138,136,196,198,197,255,255,255,247,248,248,227, + 228,228,135,140,138,255,255,255,239,240,240,239,240,240,239,240,240, + 239,240,240,239,240,240,239,240,240,239,240,240,239,240,240,255,255, + 255,133,138,136,196,198,197,255,255,255,247,248,248,247,248,248,136, + 141,139,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,133,138, + 136,196,198,197,255,255,255,247,248,248,227,228,228,170,173,173,133, + 138,136,133,138,136,133,138,136,133,138,136,133,138,136,133,138,136, + 133,138,136,133,138,136,133,138,136,133,138,136,177,180,179,196,198, + 197,255,255,255,247,248,248,247,247,247,247,247,247,247,247,247,247, + 247,247,247,247,247,247,248,248,247,248,248,255,255,255,194,197,196, + 255,255,255,255,255,255,255,255,255,255,255,255,196,198,197,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,194,197,196,255,255,255, + 255,255,255,255,255,255,255,255,255,219,220,220,194,197,196,194,197, + 196,194,197,196,194,197,196,194,197,196,194,197,196,194,197,196,194, + 197,196,194,197,196,194,197,196,217,219,218,255,255,255,255,255,255, + 255,255,255,255,255,255); Const - stdimg_menu_save_all_16 : Array[0..821] of byte = ( + stdimg_about_16 : Array[0..821] of byte = ( 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,225,188,172,225,188,172,225,188,172,225,188,172,225,188,172,225, + 188,172,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,225,188,172,228,195,181,241,224, + 216,250,243,240,255,255,255,254,253,252,250,243,240,241,224,216,228, + 195,181,225,188,172,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,225,188,172,237,214,205,254,253,252,247,243,239,218,196, + 179,202,169,144,204,173,148,225,204,189,249,246,243,254,253,252,237, + 214,205,225,188,172,255, 0,255,255, 0,255,255, 0,255,225,188,172, + 237,214,205,255,255,255,223,205,191,181,138,105,182,139,107,186,144, + 113,189,150,119,194,155,124,200,163,135,234,220,209,255,255,255,237, + 214,205,225,188,172,255, 0,255,255, 0,255,228,195,181,254,253,252, + 220,201,187,170,123, 87,174,128, 94,205,177,155,251,249,247,255,255, + 255,217,193,175,194,155,125,198,161,132,234,220,209,254,253,252,228, + 195,181,255, 0,255,225,188,172,241,224,216,245,239,235,165,116, 81, + 166,118, 81,171,123, 88,174,128, 93,243,236,231,255,255,255,186,144, + 113,190,149,119,194,155,125,200,164,135,249,246,243,241,224,216,225, + 188,172,225,188,172,250,243,240,202,173,153,158,106, 70,162,111, 75, + 166,117, 81,170,123, 88,243,236,230,255,255,255,182,139,106,186,144, + 112,190,149,118,193,155,125,225,205,189,250,243,240,225,188,172,225, + 188,172,254,253,252,169,125, 93,154,101, 63,159,107, 69,162,111, 76, + 166,117, 82,242,235,229,255,255,255,178,134,100,182,139,106,186,144, + 112,190,150,119,205,173,148,254,253,252,225,188,172,225,188,172,254, + 253,252,166,121, 87,151, 96, 57,154,101, 63,158,106, 69,162,112, 75, + 241,234,229,255,255,255,175,128, 94,178,134,101,182,139,106,186,145, + 112,202,169,144,254,253,252,225,188,172,225,188,172,250,243,240,195, + 164,143,146, 91, 50,151, 95, 57,155,101, 63,189,153,127,234,222,214, + 254,254,254,171,123, 88,174,128, 94,178,133,100,182,138,106,218,196, + 179,250,243,240,225,188,172,225,188,172,241,224,216,243,236,232,147, + 90, 52,147, 90, 50,151, 96, 57,155,101, 63,158,107, 69,162,111, 75, + 166,118, 82,171,122, 88,174,128, 94,181,138,106,247,243,239,241,224, + 216,225,188,172,255, 0,255,228,195,181,254,253,252,210,186,170,143, + 85, 44,147, 90, 50,151, 96, 57,215,194,179,232,220,211,163,112, 76, + 166,118, 81,171,123, 88,223,205,192,254,253,252,228,195,181,255, 0, + 255,255, 0,255,225,188,172,237,214,205,255,255,255,210,186,170,147, + 91, 52,147, 90, 51,220,201,187,237,228,221,159,107, 69,166,117, 81, + 220,201,187,255,255,255,237,214,205,225,188,172,255, 0,255,255, 0, + 255,255, 0,255,225,188,172,237,214,205,254,253,252,243,236,232,195, + 164,142,166,120, 88,169,125, 93,202,173,153,245,239,235,254,253,252, + 237,214,205,225,188,172,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,225,188,172,228,195,181,241,224,216,250,243,240,255, + 255,255,254,253,252,250,243,240,241,224,216,228,195,181,225,188,172, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,225,188,172,225,188,172,225,188,172,225, + 188,172,225,188,172,225,188,172,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); + +Const + stdimg_hidden : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 15, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,202,138, - 97,195,132, 88,211,139,104,225,143,112,220,141,108,218,139,109,215, - 138,110,205,139,108,171,109, 68,166, 95, 46,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,198,131, 85,239,206, - 186,221,255,255,135,238,199,162,244,215,162,246,215,140,238,199,224, - 255,255,221,162,133,171,106, 62,255,255,255,255,255,255,255,255,255, - 255,255,255,208,153,117,203,148,110,195,127, 81,239,182,154,234,243, - 232, 81,191,132,111,201,152,113,201,153, 84,191,132,228,244,233,221, - 156,123,170,105, 58,255,255,255,255,255,255,255,255,255,255,255,255, - 205,147,107,241,212,195,196,129, 84,234,182,151,243,243,234,237,241, - 230,239,241,230,239,240,230,237,241,229,243,245,237,213,156,121,176, - 112, 68,255,255,255,255,255,255,213,163,131,208,158,123,199,131, 88, - 238,180,153,201,139, 97,230,181,146,226,167,129,225,167,129,222,163, - 125,220,161,123,219,159,121,217,158,119,212,154,115,187,126, 87,255, - 255,255,255,255,255,210,157,121,242,216,201,201,145,106,225,190,159, - 202,141,101,234,184,153,221,165,126,221,166,128,219,163,124,217,160, - 122,217,160,121,216,159,120,216,158,120,191,132, 93,255,255,255,255, - 255,255,208,154,118,242,197,175,205,153,115,215,184,148,200,136, 93, - 239,191,161,253,252,250,254,252,251,254,253,253,254,253,252,253,251, - 250,253,252,251,221,168,133,193,127, 83,255,255,255,255,255,255,208, - 156,120,238,197,173,207,155,119,235,192,164,199,134, 91,239,192,158, - 255,255,255,204,147,110,255,255,255,255,255,255,255,251,247,255,248, - 241,228,175,140,199,138, 97,255,255,255,255,255,255,212,164,130,235, - 197,169,204,142,101,238,190,161,204,141,101,243,205,176,255,255,255, - 227,199,179,255,255,255,255,255,255,255,255,255,255,255,255,234,191, - 161,201,137, 96,255,255,255,255,255,255,213,165,134,238,199,175,202, - 140, 99,237,191,158,212,151,110,212,158,123,208,152,113,214,164,130, - 205,142,104,205,144,105,208,154,117,209,153,115,200,139, 98,238,220, - 208,255,255,255,255,255,255,212,161,127,242,205,181,210,156,121,244, - 211,186,255,255,255,231,206,189,255,255,254,255,255,255,251,246,242, - 248,241,237,237,199,173,208,152,117,255,255,255,255,255,255,255,255, - 255,255,255,255,211,160,126,242,205,179,218,165,129,212,160,126,214, - 166,131,219,176,146,211,157,123,211,158,123,211,159,123,209,154,117, - 207,154,118,240,225,214,255,255,255,255,255,255,255,255,255,255,255, - 255,215,165,134,246,216,193,255,255,255,233,211,195,255,255,255,255, - 255,255,255,255,255,255,255,255,238,205,181,212,162,130,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,221,173, - 141,221,179,151,218,174,143,223,183,156,216,166,136,216,168,137,218, - 175,146,219,175,145,212,164,131,241,227,217,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255, + 255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, + 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, + 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255, + 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, + 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255, + 255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255); + 255,255,255, 0, 0, 0); Const stdimg_menu_saveas_16 : Array[0..821] of byte = ( @@ -2727,239 +2830,188 @@ Const 231,206,188,255,255,255); Const - stdimg_radiobuttons : Array[0..2213] of byte = ( - 66, 77,166, 8, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 60, 0, 0, 0, 12, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 112, 8, 0, 0,196, 14, 0, 0,196, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255,255,255,255,255,255,191,191,191,191,191,191,191,191,191, - 191,191,191,255,255,255,255,255,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255,255,255,255,255,255,191,191,191,191,191,191,191, - 191,191,191,191,191,255,255,255,255,255,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255,255,255,255,255,255,191,191,191,191,191, - 191,191,191,191,191,191,191,255,255,255,255,255,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255,255,255,255,255,255,191,191,191, - 191,191,191,191,191,191,191,191,191,255,255,255,255,255,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255,255,255,255,255,255,191, - 191,191,191,191,191,191,191,191,191,191,191,255,255,255,255,255,255, - 255, 0,255,255, 0,255,255, 0,255,127,127,127,191,191,191,191,191, - 191,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,191, - 191,191,255,255,255,255, 0,255,255, 0,255,127,127,127,191,191,191, - 191,191,191,255,255,255,255,255,255,255,255,255,255,255,255,191,191, - 191,191,191,191,255,255,255,255, 0,255,255, 0,255,127,127,127,191, - 191,191,191,191,191,127,127,127,127,127,127,127,127,127,127,127,127, - 191,191,191,191,191,191,255,255,255,255, 0,255,255, 0,255,127,127, - 127,191,191,191,191,191,191,127,127,127,127,127,127,127,127,127,127, - 127,127,191,191,191,191,191,191,255,255,255,255, 0,255,255, 0,255, - 127,127,127,191,191,191,191,191,191,127,127,127,127,127,127,127,127, - 127,127,127,127,191,191,191,191,191,191,255,255,255,255, 0,255,255, - 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, 0, - 255,255, 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255, - 255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127,127, + stdimg_link : Array[0..449] of byte = ( + 66, 77,194, 1, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 11, 0, 0, 0, 11, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 140, 1, 0, 0, 18, 11, 0, 0, 18, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255, + 255,255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255,255,255, + 255, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255,255,255, + 255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128,128,255, + 255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, + 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,128,128, + 128,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, + 128,128,128,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, + 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, + 0, 0,128,128,128,255,255,255,255,255,255,255,255,255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, + 0, 0, 0, 0,128,128,128,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0, 0, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128, 0, 0, 0, 0, 0, 0); + +Const + stdimg_checkboxes : Array[0..2601] of byte = ( + 66, 77, 42, 10, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 65, 0, 0, 0, 13, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 244, 9, 0, 0,196, 14, 0, 0,196, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 0,127,127,127,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,255,255,255, + 127,127,127,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,255,255,255,127,127,127,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,255,255,255,127,127,127,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,255,255,255,127,127, + 127,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, + 255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, + 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127, 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, - 255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127, + 255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127,127, 0, + 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255, + 255,127,127,127, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0, 0,255, + 255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255, + 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, + 127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,127,127,127,127,127, + 127, 52, 52, 52, 52, 52, 52,127,127,127,191,191,191,255,255,255,127, + 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, + 191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255, + 255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, + 0, 0, 0, 0, 0, 0,255,255,255,191,191,191,255,255,255,127,127, + 127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191, + 255,255,255,127,127,127, 0, 0, 0,127,127,127, 52, 52, 52, 52, 52, + 52, 52, 52, 52,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52,127, + 127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127,127, + 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255, + 255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, + 255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, + 0,127,127,127,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52,127,127,127,127,127,127,191,191,191,255,255,255, + 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, + 191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0, + 255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, + 0,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,127, + 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191, - 191,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127, + 191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127, + 127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52,127,127,127,127,127,127, + 127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 191,191,191,255,255,255,255, 0,255,127,127,127, 0, 0, 0,255,255, + 127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127,127, + 127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191,191, + 255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, + 255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, + 0, 0,127,127,127,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52,127,127,127,127,127,127,191,191,191,255,255, + 255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 191,191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0, - 255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255, - 255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, - 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255,127,127, - 127, 0, 0, 0,127,127,127,127,127,127,127,127,127, 0, 0, 0, 0, - 0, 0,127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, + 255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, + 0,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,191,191,191,255,255,255, 127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255, - 255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, + 191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, 52, 52, 52, + 52, 52, 52, 52, 52, 52,127,127,127, 52, 52, 52, 52, 52, 52, 52, 52, + 52,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0,127, + 127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,191, - 191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, - 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, + 191,255,255,255,127,127,127, 0, 0, 0,255,255,255, 0, 0, 0, 0, + 0, 0,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, + 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127, - 127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127, - 127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0,127, + 127,127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, + 0, 0, 0,127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,127,127, + 127,127,127,127, 52, 52, 52, 52, 52, 52,127,127,127,191,191,191,255, + 255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127, 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, - 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, - 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,255,255,255,191,191,191,255,255,255,127, - 127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255,255, - 255,127,127,127, 0, 0, 0,127,127,127,127,127,127, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,191,191,191, - 255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, - 191,191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255,255,255, + 127,191,191,191,255,255,255, 0,127,127,127, 0, 0, 0,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,191,191,191,255,255,255,127,127,127, 0, 0, 0,255,255,255,255, - 255,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255, - 255,255,255,191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127, + 255,255,255,255,255,255,255,191,191,191,255,255,255,127,127,127, 0, + 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,191,191,191,255,255, + 255,127,127,127, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 191,191,191,255,255,255,127,127,127, 0, 0, 0,127,127,127,127,127, 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, 127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, 0, 0, - 127,127,127,127,127,127,127,127,127, 0, 0, 0, 0, 0, 0,127,127, - 127,127,127,127,127,127,127,191,191,191,255,255,255,127,127,127, 0, - 0, 0,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,191,191,191,255,255,255,255, 0, - 255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, 0,255, - 255, 0,255,127,127,127, 0, 0, 0,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,191,191,191,255,255,255,255, - 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,191,191,191,255,255, - 255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,191,191,191, - 255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,191, - 191,191,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, - 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255,127,127,127, 0, - 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, - 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255,127,127, - 127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,127,127,127,127, - 127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, 0,255, - 127,127,127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,127,127, - 127,127,127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0,255,255, - 0,255,127,127,127, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127, - 127,127,127,127,127,127, 0, 0, 0, 0, 0, 0,255,255,255,255, 0, - 255,255, 0,255,255, 0,255,127,127,127,127,127,127, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127,127,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127,127,127, - 127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127, - 127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,127,127, - 127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127, - 127,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, - 127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,127,127,127,127,127,127,127,127,127,127,127, - 127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127,127,127,127, - 127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127,127,127, - 127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127,127,127, - 127,127,127,127,127,127,127,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,127,127,127, - 127,127,127,127,127,127,127,127,127,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255); - -Const - stdimg_refresh_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,197,157,126,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,225,205,189,189,144,108,174,118, 73,166,105, 57,176, - 122, 79,196,156,124,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,164,101, 52,203,167,139,255, 0,255,225,204,188,172,113, - 68,184,134, 93,206,166,132,216,182,151,219,185,153,211,172,138,195, - 149,111,169,109, 63,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 165,104, 56,185,136, 96,180,129, 88,180,128, 86,227,202,180,236,218, - 201,231,209,188,227,201,176,222,190,160,210,171,136,206,165,130,211, - 174,142,169,110, 64,255, 0,255,255, 0,255,255, 0,255,167,105, 58, - 241,228,216,212,178,149,244,233,224,243,232,221,237,220,204,210,173, - 143,179,125, 83,166,104, 56,166,105, 57,166,106, 58,169,109, 61,176, - 120, 76,197,157,125,255, 0,255,255, 0,255,166,104, 57,246,238,230, - 245,236,227,245,237,228,230,210,193,179,126, 84,185,136, 97,255, 0, - 255,255, 0,255,217,191,171,175,117, 74,182,124, 79,167,107, 59,167, - 107, 59,255, 0,255,255, 0,255,165,104, 55,246,238,230,235,215,196, - 234,217,201,164,102, 53,217,191,171,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,173,115, 70,225,196,174,200,158,124,164,101, 52,255, - 0,255,255, 0,255,165,103, 54,245,237,229,246,237,229,245,236,228, - 215,184,157,177,122, 79,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,165,103, 54,255, 0,255,255, - 0,255,166,105, 57,164,102, 53,164,102, 53,165,102, 54,165,103, 54, - 165,103, 55,189,143,108,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,198,158,128,164,101, 52,175,120, 76,178,123, 82,178,123, - 82,178,124, 82,164,101, 52,255, 0,255,255, 0,255,165,103, 54,217, - 189,167,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,187,139,102,209,174,145,246,238,231,242,230,219,246,238, - 230,167,108, 61,255, 0,255,255, 0,255,164,102, 54,168,108, 61,221, - 187,162,174,118, 75,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 221,197,179,164,102, 53,233,215,199,235,216,198,245,236,227,168,109, - 62,255, 0,255,255, 0,255,170,111, 65,171,112, 65,169,109, 61,170, - 112, 66,213,184,162,255, 0,255,255, 0,255,183,134, 95,188,141,103, - 235,219,205,245,235,226,246,238,230,246,238,230,169,109, 62,255, 0, - 255,255, 0,255,202,164,135,192,145,106,197,152,114,168,107, 60,164, - 102, 53,168,108, 60,186,139,101,217,187,161,241,228,216,242,230,219, - 243,232,221,206,168,137,234,216,200,169,110, 63,255, 0,255,255, 0, - 255,255, 0,255,169,111, 65,211,173,140,220,189,157,221,190,161,229, - 203,180,233,211,191,238,221,204,240,226,213,231,210,191,178,124, 82, - 187,141,104,174,117, 73,165,104, 55,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,169,109, 63,193,146,107,211,176,143,223,194,168,222, - 193,168,212,177,147,188,140,102,170,112, 67,224,202,185,255, 0,255, - 219,194,174,164,101, 52,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,200,161,132,178,125, 83,168,108, 61,176,120, 77,190, - 145,110,225,205,189,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 212,182,159,255, 0,255); - -Const - stdimg_search_16 : Array[0..821] of byte = ( - 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, - 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,100,148,186, 34, - 103,157,129,168,198,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,111,156,194, 85,141,188,137,181,221, 24, - 95,151,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,123,164,202,100,151,197,157,193,228,102,153,199, 49,113,165,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,233,207,186, - 219,178,146,211,166,128,208,161,124,210,166,133,174,161,153,117,162, - 204,171,203,232,118,164,206, 64,123,175,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,232,202,176,232,201,174,245,225,205, - 247,229,211,247,229,209,243,221,200,223,186,156,199,168,145,134,174, - 213, 80,135,187,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,241,219,200,237,208,183,248,232,217,245,222,200,243,216,189, - 243,214,187,244,219,194,247,228,210,223,187,157,160,151,149,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,238, - 206,178,247,231,215,246,225,204,244,219,194,244,218,192,243,216,189, - 243,215,187,244,219,194,243,222,201,210,168,135,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,240,206,175,249, - 236,223,245,223,200,245,221,198,244,220,195,244,218,193,243,217,190, - 243,215,189,248,230,211,211,166,128,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,244,211,181,249,237,225,246, - 225,204,245,223,201,245,222,199,244,220,196,244,219,194,244,218,192, - 248,231,214,215,171,135,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,248,219,193,249,235,222,247,231,214,246, - 225,204,245,224,202,245,222,200,245,221,197,246,225,203,245,226,208, - 223,185,153,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,252,234,216,248,226,204,250,238,227,247,231,214,246, - 226,206,246,225,203,246,227,208,249,234,221,236,207,181,236,212,191, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,251,228,206,249,226,205,250,236,222,249,238,226,249, - 237,226,248,233,218,240,213,189,237,208,183,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,252,234,217,250,221,194,246,214,185,244,211,181,243, - 212,184,245,224,205,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, - 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, - 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, - 255, 0,255,255, 0,255); + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,191,191,191,255,255,255, 0, + 127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, + 191,191,255,255,255,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,191,191,191,255,255,255,127,127,127, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,191,191,191,255,255,255,127,127, + 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,191,191, + 255,255,255,127,127,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,191,191,191,255,255,255, 0,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,255,255,255,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,255, + 255,255,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,255,255,255,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,255,255,255,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,255,255,255, + 0); -- cgit v1.2.3-70-g09d2 From 112a8ddcc19a4f4f6e51b5ba3212b8779899b95a Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 30 Sep 2010 22:35:10 +0200 Subject: This patch gives UTF8Insert more descriptive parameter names --- src/corelib/fpg_stringutils.pas | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_stringutils.pas b/src/corelib/fpg_stringutils.pas index 54bfd6b8..e4d75f86 100644 --- a/src/corelib/fpg_stringutils.pas +++ b/src/corelib/fpg_stringutils.pas @@ -37,7 +37,7 @@ function UTF8Length(const s: string): integer; function UTF8Length(p: PChar; ByteCount: integer): integer; function UTF8Pos(const SearchForText, SearchInText: string): integer; procedure UTF8Delete(var S: string; Index, Size: integer); -procedure UTF8Insert(const Source: string; var S: string; Index: integer); +procedure UTF8Insert(const SubStr: string; var AText: string; Index: integer); function UTF8CharAtByte(const s: string; const BytePos: integer; out aChar: string): integer; @@ -274,16 +274,16 @@ begin S := b + e; end; -procedure UTF8Insert(const Source: string; var S: string; Index: integer); +procedure UTF8Insert(const SubStr: string; var AText: string; Index: integer); var b: string; e: string; begin - if UTF8Length(Source) = 0 then + if UTF8Length(SubStr) = 0 then Exit; //==> - b := UTF8Copy(S, 1, Index-1); // beginning string - e := UTF8Copy(S, Index, UTF8Length(S)-Index+1); // ending string - S := b + Source + e; + b := UTF8Copy(AText, 1, Index-1); // beginning string + e := UTF8Copy(AText, Index, UTF8Length(AText)-Index+1); // ending string + AText := b + SubStr + e; end; function UTF8CharAtByte(const s: string; const BytePos: integer; out aChar: string): integer; -- cgit v1.2.3-70-g09d2 From fe9eb4c712a6d62f03529d1bfeab83d7bbaf7eec Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 12:29:42 +0200 Subject: uidesigner: Added TfpgColorWheel and TfpgValueBar to component palette. --- src/corelib/predefinedcolors.inc | 1 + uidesigner/icons.inc | 104 +++++++++++++++++++++++++++++++++++++++ uidesigner/images/colorwheel.bmp | Bin 0 -> 822 bytes uidesigner/images/valuebar.bmp | Bin 0 -> 822 bytes uidesigner/vfddesigner.pas | 2 +- uidesigner/vfdwidgets.pas | 29 +++++++++++ 6 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 uidesigner/images/colorwheel.bmp create mode 100644 uidesigner/images/valuebar.bmp (limited to 'src') diff --git a/src/corelib/predefinedcolors.inc b/src/corelib/predefinedcolors.inc index ae14ff4a..2774a403 100644 --- a/src/corelib/predefinedcolors.inc +++ b/src/corelib/predefinedcolors.inc @@ -29,6 +29,7 @@ clMoneyGreen = TfpgColor($C0DCC0); clSkyBlue = TfpgColor($A6CAF0); clMedGray = TfpgColor($A0A0A4); + clUIDesignerGreen = TfpgColor($C0E0C0); diff --git a/uidesigner/icons.inc b/uidesigner/icons.inc index 20efd4dd..1f55a115 100644 --- a/uidesigner/icons.inc +++ b/uidesigner/icons.inc @@ -3217,3 +3217,107 @@ Const 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, 255,255, 0,255,255, 0,255, 0, 0, 0); + +Const + stdimg_vfd_colorwheel : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 93, 93,255,115,114,244,131,137,218,135,157,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 70, 70,255, 92, 93,255,114, + 114,255,137,137,246,154,158,219,157,178,193,154,198,166,148,216,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 70, 70,255, 92, 92,255,115,115,255,137,137,255,159, + 159,248,176,181,222,177,201,195,173,219,168,164,238,141,141,240,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,219, 70, 60, + 238, 92, 86,255,115,114,255,137,137,255,159,159,255,181,182,250,200, + 203,223,198,222,196,191,240,169,169,244,143,143,241,116,117,237,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,196, 91, 70,215,114, 97, + 235,137,125,254,158,158,255,181,181,255,204,203,251,223,226,225,219, + 245,199,198,248,171,171,244,145,145,241,118,119,238,255, 0,255,255, + 0,255,255, 0,255,153, 92, 55,174,113, 78,193,136,102,212,158,132, + 232,181,164,251,203,201,255,226,226,254,246,248,227,227,251,200,200, + 248,174,173,244,147,147,241,120,120,238, 93, 94,234,255, 0,255,255, + 0,255,132,114, 58,151,136, 81,170,158,106,189,180,133,209,203,166, + 229,226,202,248,248,241,255,255,255,229,229,251,202,202,248,176,175, + 244,149,149,241,122,122,237, 96, 96,234,255, 0,255,255, 0,255,109, + 136, 58,127,158, 79,148,180,105,167,203,133,186,225,164,206,247,200, + 225,255,225,244,255,244,231,231,251,204,204,249,177,177,245,150,151, + 241,124,124,238, 97, 97,234,255, 0,255,255, 0,255, 86,157, 53,106, + 180, 74,124,203,100,144,225,127,164,248,159,183,255,183,203,255,202, + 222,255,222,219,233,238,206,206,249,179,179,245,152,153,241,126,126, + 238,100, 99,235,255, 0,255,255, 0,255,255, 0,255, 83,203, 65,102, + 225, 90,121,247,118,141,255,141,160,255,160,180,255,180,199,255,199, + 200,234,216,194,208,232,181,181,245,154,154,242,128,128,239,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255, 60,225, 53, 79,247, 77, 98, + 255, 99,119,255,119,138,255,137,157,255,157,177,255,176,182,237,194, + 177,210,210,169,183,225,156,156,241,129,130,239,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255, 57,255, 57, 76,255, 76, 95, + 255, 95,115,255,115,135,255,134,154,255,154,162,239,172,160,212,189, + 154,185,205,144,158,220,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255, 53,255, 53, 73,255, 73, 93, + 255, 92,111,255,112,131,255,131,142,240,149,143,213,166,139,188,182, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 69,255, 70, 89, + 255, 89,108,255,109,121,243,127,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); + +Const + stdimg_vfd_valuebar : Array[0..821] of byte = ( + 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 19, 11, 0, 0, 19, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,242,209, + 0,243,209, 0,242,209, 0,242,209, 0,243,209, 0,242,210, 0,242, + 210, 0,243,209, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,231,199, 0,231,199, + 0,231,198, 0,230,199, 0,230,199, 0,231,198, 0,231,199, 0,231, + 198, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,219,188, 0,220,188, 0,219,188, + 0,219,188, 0,219,188, 0,220,188, 0,219,188, 0,219,188, 0,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255, + 0, 0, 0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,255, 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0, + 196,167, 0,196,167, 0,196,167, 0,196,167, 0,196,167, 0,195,167, + 0,195,167, 0,196,167, 0,196,167, 0,196,167, 0,192,192,192,255, + 0,255,255, 0,255,255, 0,255,255, 0,255, 0, 0, 0,196,167, 0, + 196,167, 0,196,167, 0,196,167, 0,196,167, 0,196,167, 0,196,167, + 0,196,167, 0,196,167, 0,196,167, 0,192,192,192,255, 0,255,255, + 0,255,255, 0,255,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,192,192,192,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,255, 0,255,161,135, 0,161,135, 0, + 161,135, 0,161,136, 0,161,135, 0,161,135, 0,161,135, 0,161,136, + 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,255, 0,255,149,125, 0,150,125, 0,150,125, 0, + 149,124, 0,150,125, 0,150,124, 0,149,125, 0,150,125, 0,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,255, 0,255,137,114, 0,138,114, 0,137,114, 0,138,114, 0, + 137,115, 0,138,114, 0,138,114, 0,138,115, 0,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, + 0,255,126,104, 0,126,104, 0,126,104, 0,126,103, 0,126,103, 0, + 126,103, 0,126,103, 0,126,104, 0,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,115, + 93, 0,115, 93, 0,115, 93, 0,114, 93, 0,114, 93, 0,115, 93, 0, + 115, 93, 0,115, 93, 0,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,102, 83, 0,103, + 83, 0,103, 83, 0,103, 82, 0,103, 82, 0,103, 82, 0,103, 83, 0, + 102, 83, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255,255, 0,255, 91, 72, 0, 91, 72, 0, 91, + 72, 0, 92, 72, 0, 91, 72, 0, 91, 72, 0, 91, 72, 0, 91, 72, 0, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255,255, 0,255, 80, 62, 0, 80, 61, 0, 79, 61, 0, 79, + 62, 0, 80, 61, 0, 80, 62, 0, 80, 62, 0, 79, 61, 0,255, 0,255, + 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0, + 255,255, 0,255, 68, 51, 0, 68, 51, 0, 68, 51, 0, 68, 51, 0, 68, + 50, 0, 68, 51, 0, 68, 51, 0, 68, 51, 0,255, 0,255,255, 0,255, + 255, 0,255,255, 0,255); diff --git a/uidesigner/images/colorwheel.bmp b/uidesigner/images/colorwheel.bmp new file mode 100644 index 00000000..b4d8bf6b Binary files /dev/null and b/uidesigner/images/colorwheel.bmp differ diff --git a/uidesigner/images/valuebar.bmp b/uidesigner/images/valuebar.bmp new file mode 100644 index 00000000..904c0455 Binary files /dev/null and b/uidesigner/images/valuebar.bmp differ diff --git a/uidesigner/vfddesigner.pas b/uidesigner/vfddesigner.pas index b55bc475..74499d3b 100644 --- a/uidesigner/vfddesigner.pas +++ b/uidesigner/vfddesigner.pas @@ -1496,7 +1496,7 @@ constructor TOtherWidget.Create(AOwner: TComponent); begin inherited; wgClassName := 'TfpgWidget'; - FBackgroundColor := $C0E0C0; + FBackgroundColor := clUIDesignerGreen; FFont := fpgStyle.DefaultFont; FWidth := 120; FHeight := 32; diff --git a/uidesigner/vfdwidgets.pas b/uidesigner/vfdwidgets.pas index 1713336a..b1b9392d 100644 --- a/uidesigner/vfdwidgets.pas +++ b/uidesigner/vfdwidgets.pas @@ -64,6 +64,7 @@ uses fpg_popupcalendar, fpg_gauge, fpg_editbtn, + fpg_ColorWheel, vfdpropeditgrid, vfdmain; @@ -294,6 +295,16 @@ begin 'vfd.editfont', @stdimg_vfd_editfont, sizeof(stdimg_vfd_editfont), 0, 0); + + fpgImages.AddMaskedBMP( + 'vfd.colorwheel', @stdimg_vfd_colorwheel, + sizeof(stdimg_vfd_colorwheel), + 0, 0); + + fpgImages.AddMaskedBMP( + 'vfd.valuebar', @stdimg_vfd_valuebar, + sizeof(stdimg_vfd_valuebar), + 0, 0); end; procedure AddWidgetPosProps(wgc: TVFDWidgetClass); @@ -763,6 +774,24 @@ begin wc.WidgetIconName := 'vfd.editfont'; RegisterVFDWidget(wc); + // Color wheel + wc := TVFDWidgetClass.Create(TfpgColorWheel); + wc.NameBase := 'ColorWheel'; + wc.AddProperty('MarginWidth', TPropertyInteger, 'The margin that will not be painted on four sides of widget'); + wc.AddProperty('CursorSize', TPropertyInteger, 'Size of cross-hair in color wheel'); + wc.AddProperty('WhiteAreaPercent', TPropertyInteger, 'The percentage of the centre of the wheel which is white'); + wc.WidgetIconName := 'vfd.colorwheel'; + RegisterVFDWidget(wc); + + // Value Bar - works in accordance with color wheel + wc := TVFDWidgetClass.Create(TfpgValueBar); + wc.NameBase := 'ValueBar'; + wc.AddProperty('MarginWidth', TPropertyInteger, 'The margin that will not be painted on four sides of widget'); + wc.AddProperty('CursorHeight', TPropertyInteger, 'Size of selection cursor'); + wc.AddProperty('Value', TPropertyFloat, ''); + wc.WidgetIconName := 'vfd.valuebar'; + RegisterVFDWidget(wc); + // Other - do not delete!!! this should be the last... wc := TVFDWidgetClass.Create(TOtherWidget); wc.NameBase := 'Custom'; -- cgit v1.2.3-70-g09d2 From 75da40a254a6d3c44b6d6fec6c4b0c7a96555acc Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 12:31:12 +0200 Subject: fpg_colorwheel: Improved the look of components while on Designer Form. For speed reasons we paint a basic look of the components while busy in UI Designer. --- src/gui/fpg_colorwheel.pas | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_colorwheel.pas b/src/gui/fpg_colorwheel.pas index 43ebb8a9..22ab15cc 100644 --- a/src/gui/fpg_colorwheel.pas +++ b/src/gui/fpg_colorwheel.pas @@ -197,12 +197,16 @@ begin // but draw an outline Canvas.SetLineStyle(1, lsDash); Canvas.DrawRectangle(GetClientRect); + Canvas.SetLineStyle(1, lsSolid); + Canvas.Color := clUIDesignerGreen; + Canvas.FillArc(FMarginWidth, FMarginWidth, DrawWidth, DrawHeight, 0, 360); Canvas.Color := clHilite1; - Canvas.DrawArc(Width div 2, Height div 2, DrawWidth div 2 + 1, - DrawHeight div 2 + 1, 45, 180); + Canvas.DrawArc(FMarginWidth, FMarginWidth, DrawWidth, DrawHeight, 45, 180); Canvas.Color := clShadow1; - Canvas.DrawArc(Width div 2, Height div 2, DrawWidth div 2 + 1, - DrawHeight div 2 + 1, 225, 180); + Canvas.DrawArc(FMarginWidth, FMarginWidth, DrawWidth, DrawHeight, 225, 180); + Canvas.TextColor := clShadow1; + Canvas.DrawText(5, 5, Name + ': ' + ClassName); + DrawCursor; Exit; //==> end; @@ -427,13 +431,19 @@ begin begin // when designing just draw // a rectangle to indicate + Canvas.Color := clBlack; Canvas.SetLineStyle(1, lsDash); Canvas.DrawRectangle(GetClientRect); if (Width < MarginWidth * 2) or (Height < MarginWidth * 2) then Exit; //==> r := GetClientRect; - InflateRect(r, FMarginWidth, FMarginWidth); + InflateRect(r, -FMarginWidth, -FMarginWidth); + Canvas.Color := clShadow1; + Canvas.SetLineStyle(1, lsSolid); Canvas.DrawRectangle(r); + Canvas.TextColor := clShadow1; + Canvas.DrawText(5, 5, Width, Height, Name + ': ' + ClassName, TextFlagsDflt + [txtWrap]); + DrawCursor; exit; end; -- cgit v1.2.3-70-g09d2 From cf2ba4e5e0ff0ed49b4f1271c8acc27cbde4ee2e Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 12:32:43 +0200 Subject: bugfix: SpinEdit sometimes caused an AV because fpgCaret could not paint --- src/corelib/fpg_main.pas | 1 + src/gui/fpg_spinedit.pas | 5 +---- 2 files changed, 2 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index fa6b44d5..faaad5fd 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -2215,6 +2215,7 @@ procedure TfpgCaret.UnSetCaret(ACanvas: TfpgCanvas); begin if (FCanvas = ACanvas) or (ACanvas = nil) then begin + FTimer.Enabled := False; FEnabled := False; FCanvas := nil; end; diff --git a/src/gui/fpg_spinedit.pas b/src/gui/fpg_spinedit.pas index ce768120..52bd7873 100644 --- a/src/gui/fpg_spinedit.pas +++ b/src/gui/fpg_spinedit.pas @@ -327,10 +327,7 @@ end; procedure TfpgAbstractSpinEdit.HandlePaint; begin - Canvas.Clear(BackgroundColor); - if FButtonUp.HasHandle then - fpgPostMessage(self, FButtonUp, FPGM_PAINT); -// FButtonDown.Invalidate; + Canvas.Clear(BackgroundColor); end; procedure TfpgAbstractSpinEdit.HandleResize(AWidth, AHeight: TfpgCoord); -- cgit v1.2.3-70-g09d2 From b30ec9d88c58e8c4a565b1feffe9ef2d1710fd1e Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 12:34:59 +0200 Subject: minor code formatting --- src/gui/colordialog.inc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/gui/colordialog.inc b/src/gui/colordialog.inc index 6914257e..d34d58ca 100644 --- a/src/gui/colordialog.inc +++ b/src/gui/colordialog.inc @@ -43,11 +43,11 @@ type pnlColorPreview: TfpgBevel; {@VFD_HEAD_END: ColorSelectDialog} FViaRGB: Boolean; // to prevent recursive changes - function GetSelectedColor: TfpgColor; - procedure SetSelectedColor(const AValue: TfpgColor); - procedure ColorChanged(Sender: TObject); - procedure RGBChanged(Sender: TObject); - procedure UpdateRGBComponents; + function GetSelectedColor: TfpgColor; + procedure SetSelectedColor(const AValue: TfpgColor); + procedure ColorChanged(Sender: TObject); + procedure RGBChanged(Sender: TObject); + procedure UpdateRGBComponents; public constructor Create(AOwner: TComponent); override; procedure AfterCreate; override; -- cgit v1.2.3-70-g09d2 From 79babc6044a13a83a0503f88be0d6b4b6ab681b4 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 13:06:57 +0200 Subject: new function introduced: fpgIsNamedColor() Then name says it all. --- src/corelib/fpg_main.pas | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index faaad5fd..2277c764 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -379,6 +379,7 @@ procedure fpgDeleteFirstMessage; function fpgColorToRGB(col: TfpgColor): TfpgColor; function fpgGetNamedColor(col: TfpgColor): TfpgColor; procedure fpgSetNamedColor(colorid, rgbvalue: longword); +function fpgIsNamedColor(col: TfpgColor): boolean; function fpgGetNamedFontDesc(afontid: string): string; procedure fpgSetNamedFont(afontid, afontdesc: string); function fpgGetNamedFontList: TStringlist; @@ -1059,6 +1060,11 @@ begin fpgNamedColors[i] := rgbvalue; end; +function fpgIsNamedColor(col: TfpgColor): boolean; +begin + Result := (col and cl_BaseNamedColor) <> 0; +end; + function fpgGetNamedFontDesc(afontid: string): string; var n: integer; -- cgit v1.2.3-70-g09d2 From 3f5a719c9ff49083147230979fea496818b27fdc Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 13:15:50 +0200 Subject: minor improvement to fpgGetNamedColor - now using fpgIsNamedColor internally. --- src/corelib/fpg_main.pas | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index 2277c764..39d767bf 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -1047,7 +1047,10 @@ end; function fpgGetNamedColor(col: TfpgColor): TfpgColor; begin - Result := fpgNamedColors[col and $FF]; + if fpgIsNamedColor(col) then + Result := col // nothing to do, it is already a named color + else + Result := fpgNamedColors[col and $FF]; end; procedure fpgSetNamedColor(colorid, rgbvalue: longword); -- cgit v1.2.3-70-g09d2 From e31ce507d2c6a86da481ca47bbf0ab6e0efd8964 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 13:26:16 +0200 Subject: color dialog: The PageControl and Tabsheets now have meaningful names. --- src/gui/colordialog.inc | 55 +++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/src/gui/colordialog.inc b/src/gui/colordialog.inc index d34d58ca..19163aa3 100644 --- a/src/gui/colordialog.inc +++ b/src/gui/colordialog.inc @@ -25,9 +25,9 @@ type TfpgColorSelectDialog = class(TfpgBaseDialog) private {@VFD_HEAD_BEGIN: ColorSelectDialog} - PageControl1: TfpgPageControl; - TabSheet1: TfpgTabSheet; - TabSheet2: TfpgTabSheet; + pcColorSelect: TfpgPageControl; + tsColorWheel: TfpgTabSheet; + tsColorNames: TfpgTabSheet; ComboBox1: TfpgComboBox; ColorListBox1: TfpgColorListBox; Label1: TfpgLabel; @@ -135,15 +135,15 @@ begin {%region 'Auto-generated GUI code' -fold} {@VFD_BODY_BEGIN: ColorSelectDialog} Name := 'ColorSelectDialog'; - SetPosition(316, 186, 328, 375); + SetPosition(340, 164, 328, 375); WindowTitle := 'Color Select Dialog'; Hint := ''; WindowPosition := wpOneThirdDown; - PageControl1 := TfpgPageControl.Create(self); - with PageControl1 do + pcColorSelect := TfpgPageControl.Create(self); + with pcColorSelect do begin - Name := 'PageControl1'; + Name := 'pcColorSelect'; SetPosition(4, 4, 320, 332); Anchors := [anLeft,anRight,anTop,anBottom]; ActivePageIndex := 0; @@ -151,23 +151,23 @@ begin TabOrder := 1; end; - TabSheet1 := TfpgTabSheet.Create(PageControl1); - with TabSheet1 do + tsColorWheel := TfpgTabSheet.Create(pcColorSelect); + with tsColorWheel do begin - Name := 'TabSheet1'; + Name := 'tsColorWheel'; SetPosition(3, 24, 314, 305); Text := 'Color Wheel'; end; - TabSheet2 := TfpgTabSheet.Create(PageControl1); - with TabSheet2 do + tsColorNames := TfpgTabSheet.Create(pcColorSelect); + with tsColorNames do begin - Name := 'TabSheet2'; + Name := 'tsColorNames'; SetPosition(3, 24, 314, 305); Text := 'Predefined'; end; - ComboBox1 := TfpgComboBox.Create(TabSheet2); + ComboBox1 := TfpgComboBox.Create(tsColorNames); with ComboBox1 do begin Name := 'ComboBox1'; @@ -178,21 +178,18 @@ begin TabOrder := 1; end; - ColorListBox1 := TfpgColorListBox.Create(TabSheet2); + ColorListBox1 := TfpgColorListBox.Create(tsColorNames); with ColorListBox1 do begin Name := 'ColorListBox1'; SetPosition(8, 72, 299, 224); Anchors := [anLeft,anRight,anTop,anBottom]; - ColorPalette := cpStandardColors; FontDesc := '#List'; Hint := ''; - HotTrack := False; - PopupFrame := False; TabOrder := 2; end; - Label1 := TfpgLabel.Create(TabSheet2); + Label1 := TfpgLabel.Create(tsColorNames); with Label1 do begin Name := 'Label1'; @@ -202,7 +199,7 @@ begin Text := 'Select a color palette'; end; - Label2 := TfpgLabel.Create(TabSheet2); + Label2 := TfpgLabel.Create(tsColorNames); with Label2 do begin Name := 'Label2'; @@ -212,14 +209,14 @@ begin Text := 'Available colors:'; end; - ColorWheel := TfpgColorWheel.Create(TabSheet1); + ColorWheel := TfpgColorWheel.Create(tsColorWheel); with ColorWheel do begin Name := 'ColorWheel'; SetPosition(8, 8, 204, 204); end; - ValueBar := TfpgValueBar.Create(TabSheet1); + ValueBar := TfpgValueBar.Create(tsColorWheel); with ValueBar do begin Name := 'ValueBar'; @@ -227,7 +224,7 @@ begin OnChange := @ColorChanged; end; - edR := TfpgSpinEdit.Create(TabSheet1); + edR := TfpgSpinEdit.Create(tsColorWheel); with edR do begin Name := 'edR'; @@ -237,7 +234,7 @@ begin OnChange := @RGBChanged; end; - edG := TfpgSpinEdit.Create(TabSheet1); + edG := TfpgSpinEdit.Create(tsColorWheel); with edG do begin Name := 'edG'; @@ -247,7 +244,7 @@ begin OnChange := @RGBChanged; end; - edB := TfpgSpinEdit.Create(TabSheet1); + edB := TfpgSpinEdit.Create(tsColorWheel); with edB do begin Name := 'edB'; @@ -257,7 +254,7 @@ begin OnChange := @RGBChanged; end; - Label3 := TfpgLabel.Create(TabSheet1); + Label3 := TfpgLabel.Create(tsColorWheel); with Label3 do begin Name := 'Label3'; @@ -268,7 +265,7 @@ begin Text := 'Red'; end; - Label4 := TfpgLabel.Create(TabSheet1); + Label4 := TfpgLabel.Create(tsColorWheel); with Label4 do begin Name := 'Label4'; @@ -279,7 +276,7 @@ begin Text := 'Green'; end; - Label5 := TfpgLabel.Create(TabSheet1); + Label5 := TfpgLabel.Create(tsColorWheel); with Label5 do begin Name := 'Label5'; @@ -290,7 +287,7 @@ begin Text := 'Blue'; end; - pnlColorPreview := TfpgBevel.Create(TabSheet1); + pnlColorPreview := TfpgBevel.Create(tsColorWheel); with pnlColorPreview do begin Name := 'pnlColorPreview'; -- cgit v1.2.3-70-g09d2 From 24ece8d5d3a175673e4a8a6b6378d9446e349aa0 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 15:06:57 +0200 Subject: Set default property values for TfpgWindowBase --- src/corelib/fpg_base.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index fb8ecdd1..c08bea71 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -488,8 +488,8 @@ type property Height: TfpgCoord read FHeight write SetHeight; property MinWidth: TfpgCoord read FMinWidth write FMinWidth; property MinHeight: TfpgCoord read FMinHeight write FMinHeight; - property MaxWidth: TfpgCoord read FMaxWidth write FMaxWidth; - property MaxHeight: TfpgCoord read FMaxHeight write FMaxHeight; + property MaxWidth: TfpgCoord read FMaxWidth write FMaxWidth default 0; + property MaxHeight: TfpgCoord read FMaxHeight write FMaxHeight default 0; property Canvas: TfpgCanvasBase read GetCanvas; property Parent: TfpgWindowBase read GetParent write SetParent; property MouseCursor: TMouseCursor read FMouseCursor write SetMouseCursor; -- cgit v1.2.3-70-g09d2 From 00e67ca53e5194919ab7b1b0b7d0d0d4946ee622 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 15:08:59 +0200 Subject: published Enabled property on all (most) components * Now the UI Designer can work with that property too * A few other components got one or two other properties published too. --- src/gui/fpg_button.pas | 1 + src/gui/fpg_checkbox.pas | 1 + src/gui/fpg_colorwheel.pas | 2 ++ src/gui/fpg_combobox.pas | 1 + src/gui/fpg_edit.pas | 5 +++++ src/gui/fpg_editbtn.pas | 44 +++++++++++++++++++++++-------------------- src/gui/fpg_grid.pas | 1 + src/gui/fpg_label.pas | 1 + src/gui/fpg_listbox.pas | 2 ++ src/gui/fpg_listview.pas | 1 + src/gui/fpg_memo.pas | 1 + src/gui/fpg_panel.pas | 3 +++ src/gui/fpg_popupcalendar.pas | 1 + src/gui/fpg_progressbar.pas | 1 + src/gui/fpg_radiobutton.pas | 1 + src/gui/fpg_tab.pas | 3 +++ src/gui/fpg_trackbar.pas | 1 + src/gui/fpg_tree.pas | 1 + 18 files changed, 51 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_button.pas b/src/gui/fpg_button.pas index f2bda769..2c2959f1 100644 --- a/src/gui/fpg_button.pas +++ b/src/gui/fpg_button.pas @@ -133,6 +133,7 @@ type property Default; property Down; property Embedded; + property Enabled; property Flat; property FontDesc; property GroupIndex; diff --git a/src/gui/fpg_checkbox.pas b/src/gui/fpg_checkbox.pas index a075a4cd..156459b4 100644 --- a/src/gui/fpg_checkbox.pas +++ b/src/gui/fpg_checkbox.pas @@ -68,6 +68,7 @@ type property BackgroundColor; property BoxLayout; property Checked; + property Enabled; property FontDesc; property Height; property Hint; diff --git a/src/gui/fpg_colorwheel.pas b/src/gui/fpg_colorwheel.pas index 22ab15cc..c2282e95 100644 --- a/src/gui/fpg_colorwheel.pas +++ b/src/gui/fpg_colorwheel.pas @@ -63,6 +63,7 @@ type procedure SetSelectedColor(const NewColor: TfpgColor); published property BackgroundColor; + property Enabled; property ValueBar: TfpgValueBar Read FValueBar Write SetValueBar; property MarginWidth: longint Read FMarginWidth Write SetMarginWidth default 5; property CursorSize: longint Read FCursorSize Write SetCursorSize default 5; @@ -99,6 +100,7 @@ type procedure SetHS(Hue: longint; Sat: double); published property BackgroundColor; + property Enabled; property Value: double Read FValue Write SetValue; property SelectedColor: TfpgColor Read GetSelectedColor; property MarginWidth: longint Read FMarginWidth Write SetMarginWidth; diff --git a/src/gui/fpg_combobox.pas b/src/gui/fpg_combobox.pas index 632a4918..26ae8b0c 100644 --- a/src/gui/fpg_combobox.pas +++ b/src/gui/fpg_combobox.pas @@ -137,6 +137,7 @@ type published property BackgroundColor default clBoxColor; property DropDownCount; + property Enabled; property ExtraHint; property FocusItem; property FontDesc; diff --git a/src/gui/fpg_edit.pas b/src/gui/fpg_edit.pas index a3207f6a..8e5ec641 100644 --- a/src/gui/fpg_edit.pas +++ b/src/gui/fpg_edit.pas @@ -163,6 +163,7 @@ type property AutoSize; property BackgroundColor default clBoxColor; property BorderStyle; + property Enabled; property ExtraHint; property FontDesc; property HeightMargin; @@ -258,6 +259,7 @@ type property Text; published property CustomThousandSeparator; + property Enabled; property Hint; property NegativeColor; property ParentShowHint; @@ -298,6 +300,7 @@ type property CustomDecimalSeparator; property CustomThousandSeparator; property Decimals: integer read FDecimals write SetDecimals default -1; + property Enabled; property FixedDecimals: boolean read FFixedDecimals write SetFixedDecimals default False; property Hint; property NegativeColor; @@ -337,6 +340,7 @@ type property CustomDecimalSeparator; property CustomThousandSeparator; property Decimals: integer read FDecimals write SetDecimals default 2; + property Enabled; property Hint; property NegativeColor; property ParentShowHint; @@ -344,6 +348,7 @@ type property ShowHint; property ShowThousand default True; property TabOrder; + property TextColor; property Value: Currency read GetValue write SetValue; property OnChange; property OnEnter; diff --git a/src/gui/fpg_editbtn.pas b/src/gui/fpg_editbtn.pas index 70c6da00..2d972744 100644 --- a/src/gui/fpg_editbtn.pas +++ b/src/gui/fpg_editbtn.pas @@ -70,14 +70,15 @@ type public constructor Create(AOwner: TComponent); override; published - property ExtraHint; - property FileName: TfpgString read GetFileName write SetFileName; - property InitialDir: TfpgString read FInitialDir write FInitialDir; - property Filter: TfpgString read FFilter write SetFilter; - property ReadOnly; - property TabOrder; - property OnButtonClick; - property OnShowHint; + property Enabled; + property ExtraHint; + property FileName: TfpgString read GetFileName write SetFileName; + property InitialDir: TfpgString read FInitialDir write FInitialDir; + property Filter: TfpgString read FFilter write SetFilter; + property ReadOnly; + property TabOrder; + property OnButtonClick; + property OnShowHint; end; @@ -92,13 +93,14 @@ type public constructor Create(AOwner: TComponent); override; published - property Directory: TfpgString read GetDirectory write SetDirectory; - property ExtraHint; - property RootDirectory: TfpgString read FRootDirectory write FRootDirectory; - property ReadOnly; - property TabOrder; - property OnButtonClick; - property OnShowHint; + property Directory: TfpgString read GetDirectory write SetDirectory; + property Enabled; + property ExtraHint; + property RootDirectory: TfpgString read FRootDirectory write FRootDirectory; + property ReadOnly; + property TabOrder; + property OnButtonClick; + property OnShowHint; end; @@ -111,11 +113,13 @@ type public constructor Create(AOwner: TComponent); override; published - property FontDesc: TfpgString read GetFontDesc write SetFontDesc; - property ReadOnly; - property TabOrder; - property OnButtonClick; - property OnShowHint; + property Enabled; + property ExtraHint; + property FontDesc: TfpgString read GetFontDesc write SetFontDesc; + property ReadOnly; + property TabOrder; + property OnButtonClick; + property OnShowHint; end; diff --git a/src/gui/fpg_grid.pas b/src/gui/fpg_grid.pas index 112a1f33..51ef8646 100644 --- a/src/gui/fpg_grid.pas +++ b/src/gui/fpg_grid.pas @@ -133,6 +133,7 @@ type property ColumnWidth; property DefaultColWidth; property DefaultRowHeight; + property Enabled; property FocusCol; property FocusRow; property FontDesc; diff --git a/src/gui/fpg_label.pas b/src/gui/fpg_label.pas index eeecf9b6..88986549 100644 --- a/src/gui/fpg_label.pas +++ b/src/gui/fpg_label.pas @@ -71,6 +71,7 @@ type property Alignment; property AutoSize; property BackgroundColor; + property Enabled; property FontDesc; property Height; property Hint; diff --git a/src/gui/fpg_listbox.pas b/src/gui/fpg_listbox.pas index 179e0e81..6aea07ba 100644 --- a/src/gui/fpg_listbox.pas +++ b/src/gui/fpg_listbox.pas @@ -135,6 +135,7 @@ type property AutoHeight; property BackgroundColor default clListBox; property DragToReorder; + property Enabled; property FocusItem; property FontDesc; property Hint; @@ -197,6 +198,7 @@ type property Color; property ColorPalette; property DragToReorder; + property Enabled; property FocusItem; property FontDesc; property Hint; diff --git a/src/gui/fpg_listview.pas b/src/gui/fpg_listview.pas index 12ed4364..b79d0ab0 100644 --- a/src/gui/fpg_listview.pas +++ b/src/gui/fpg_listview.pas @@ -250,6 +250,7 @@ type function NewItem: TfpgLVItem; published property Columns: TfpgLVColumns read FColumns; + property Enabled; property HScrollBar: TfpgScrollBar read FHScrollBar; property ItemHeight: Integer read GetItemHeight; property ItemIndex: Integer read FItemIndex write SetItemIndex; diff --git a/src/gui/fpg_memo.pas b/src/gui/fpg_memo.pas index 0cf0f469..d01e757c 100644 --- a/src/gui/fpg_memo.pas +++ b/src/gui/fpg_memo.pas @@ -125,6 +125,7 @@ type property PopupMenu: TfpgPopupMenu read FPopupMenu write FPopupMenu; published property BackgroundColor default clBoxColor; + property Enabled; property FontDesc: string read GetFontDesc write SetFontDesc; property Hint; property Lines: TStringList read FLines; diff --git a/src/gui/fpg_panel.pas b/src/gui/fpg_panel.pas index 1446283f..c3f42e5d 100644 --- a/src/gui/fpg_panel.pas +++ b/src/gui/fpg_panel.pas @@ -75,6 +75,7 @@ type published property BackgroundColor; property BorderStyle; + property Enabled; property Height; property Hint; property Left; @@ -132,6 +133,7 @@ type property Alignment: TAlignment read GetAlignment write SetAlignment default taCenter; property BackgroundColor; property BorderStyle; + property Enabled; property FontDesc: string read GetFontDesc write SetFontDesc; property Height; property Hint; @@ -183,6 +185,7 @@ type property Alignment: TAlignment read GetAlignment write SetAlignment default taLeftJustify; property BackgroundColor; property BorderStyle; + property Enabled; property FontDesc: string read GetFontDesc write SetFontDesc; property Height; property Hint; diff --git a/src/gui/fpg_popupcalendar.pas b/src/gui/fpg_popupcalendar.pas index af27568b..30171661 100644 --- a/src/gui/fpg_popupcalendar.pas +++ b/src/gui/fpg_popupcalendar.pas @@ -227,6 +227,7 @@ type property DateFormat: string read FDateFormat write SetDateFormat; property DateValue: TDateTime read FDate write SetDateValue; property DayColor: TfpgColor read FDayColor write SetDayColor; + property Enabled; property FontDesc; property Hint; property HolidayColor: TfpgColor read FHolidayColor write SetHolidayColor; diff --git a/src/gui/fpg_progressbar.pas b/src/gui/fpg_progressbar.pas index ee6b2405..031117fb 100644 --- a/src/gui/fpg_progressbar.pas +++ b/src/gui/fpg_progressbar.pas @@ -61,6 +61,7 @@ type TfpgProgressBar = class(TfpgCustomProgressBar) published property BackgroundColor default $c4c4c4; + property Enabled; property Hint; property ShowCaption; property Max; diff --git a/src/gui/fpg_radiobutton.pas b/src/gui/fpg_radiobutton.pas index 9410a000..61c8df6e 100644 --- a/src/gui/fpg_radiobutton.pas +++ b/src/gui/fpg_radiobutton.pas @@ -64,6 +64,7 @@ type property AutoSize: boolean read FAutoSize write SetAutoSize default False; property BackgroundColor; property Checked: boolean read FChecked write SetChecked default False; + property Enabled; property FontDesc: string read GetFontDesc write SetFontDesc; property Hint; property BoxLayout: TBoxLayout read GetBoxLayout write SetBoxLayout default tbLeftBox; diff --git a/src/gui/fpg_tab.pas b/src/gui/fpg_tab.pas index 9999fa83..b33862c5 100644 --- a/src/gui/fpg_tab.pas +++ b/src/gui/fpg_tab.pas @@ -71,6 +71,8 @@ type property PageControl: TfpgPageControl read FPageControl write SetPageControl; property TabVisible: boolean read FTabVisible write FTabVisible; published + property BackgroundColor; + property Enabled; property Text: string read GetText write SetText; property OnPaint; end; @@ -145,6 +147,7 @@ type published property ActivePageIndex: integer read GetActivePageIndex write SetActivePageIndex; property BackgroundColor; + property Enabled; property FixedTabWidth: integer read FFixedTabWidth write SetFixedTabWidth default 0; property FixedTabHeight: integer read FFixedTabHeight write SetFixedTabHeight default 21; property Hint; diff --git a/src/gui/fpg_trackbar.pas b/src/gui/fpg_trackbar.pas index 524a4c4c..204b4407 100644 --- a/src/gui/fpg_trackbar.pas +++ b/src/gui/fpg_trackbar.pas @@ -116,6 +116,7 @@ type destructor Destroy; override; published property BackgroundColor; + property Enabled; property Position: integer read FPosition write SetTBPosition default 0; property ScrollStep: integer read FScrollStep write FScrollStep default 1; property Min: integer read FMin write SetMin default 0; diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index b7dc5991..7e028c79 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -236,6 +236,7 @@ type property PopupMenu: TfpgPopupMenu read FPopupMenu write FPopupMenu; published property DefaultColumnWidth: word read FDefaultColumnWidth write SetDefaultColumnWidth default 15; + property Enabled; property FontDesc: string read GetFontDesc write SetFontDesc; property IndentNodeWithNoImage: boolean read FIndentNodeWithNoImage write SetIndentNodeWithNoImage default True; property NoImageIndent: integer read FNoImageIndent write FNoImageIndent default 16; -- cgit v1.2.3-70-g09d2 From 5b97fce2e1442ca77c58bee193a41aa0a20e9e28 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 15:09:48 +0200 Subject: minor bugfix in TfpgBaseNumericEdit. Setting NegativeColor doesn't cause a repaint --- src/gui/fpg_edit.pas | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/gui/fpg_edit.pas b/src/gui/fpg_edit.pas index 8e5ec641..3c7e45d7 100644 --- a/src/gui/fpg_edit.pas +++ b/src/gui/fpg_edit.pas @@ -1651,6 +1651,7 @@ procedure TfpgBaseNumericEdit.SetNegativeColor(const AValue: TfpgColor); begin if FNegativeColor=AValue then exit; FNegativeColor:=AValue; + FormatEdit; end; procedure TfpgBaseNumericEdit.SetThousandSeparator(const AValue: TfpgChar); -- cgit v1.2.3-70-g09d2 From 70bd8e2d539c594b44d26bcf151af0b00b663854 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 16:38:19 +0200 Subject: bugfix for ID: 3064350 from SourceForge. * A default font size is now set. * The Writeln() statement is now hidden under IFDEF's like it was supposed to be. --- src/corelib/fpg_main.pas | 4 ++-- src/gui/fpg_dialogs.pas | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index 39d767bf..e9b0aaba 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -1079,9 +1079,9 @@ begin Exit; //==> end; - {.$IFDEF DEBUG} + {$IFDEF DEBUG} Writeln('GetNamedFontDesc error: "' + afontid + '" is missing. Default is used.'); - {.$ENDIF} + {$ENDIF} Result := FPG_DEFAULT_FONT_DESC; end; diff --git a/src/gui/fpg_dialogs.pas b/src/gui/fpg_dialogs.pas index 0b5fd01c..a190cf43 100644 --- a/src/gui/fpg_dialogs.pas +++ b/src/gui/fpg_dialogs.pas @@ -916,6 +916,7 @@ begin Items.Add('48'); Items.Add('64'); Items.Add('72'); + FocusItem := 4; // 10 point font OnChange := @OnParamChange; end; -- cgit v1.2.3-70-g09d2 From d9016ba784d73d9835fac6c135001f9f2aae9a9a Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 16:39:05 +0200 Subject: Fix compilation under Windows. Force DeleteFile() from Sysutils, not Windows API. --- src/corelib/fpg_utils.pas | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/fpg_utils.pas b/src/corelib/fpg_utils.pas index 3300a07f..822051a5 100644 --- a/src/corelib/fpg_utils.pas +++ b/src/corelib/fpg_utils.pas @@ -132,7 +132,9 @@ end; function fpgDeleteFile(const FileName: TfpgString): Boolean; begin - Result := DeleteFile(fpgToOSEncoding(FileName)); + { Don't remove 'SysUtils.' prefix, it is required under Windows, other + FPC tries to use Windows.DeleteFile API - which is wrong } + Result := SysUtils.DeleteFile(fpgToOSEncoding(FileName)); end; function fpgDirectoryExists(const ADirectory: TfpgString): Boolean; -- cgit v1.2.3-70-g09d2 From 04b2ad65aeda3ce01ea96180b6e414a095e23c30 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 17:03:46 +0200 Subject: fixed issue ID: 3030971 from SourceForge. When the date/time changes to an earlier date while an fpGUI application is running, all timers stopped firing. Under Windows all timers are reset. TODO: Found out what happens under Linux and how we can detected a date/time change. --- src/corelib/fpg_main.pas | 9 +++++++++ src/corelib/gdi/fpg_gdi.pas | 9 +++++++++ 2 files changed, 18 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index e9b0aaba..2fe5f200 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -387,6 +387,7 @@ function fpgGetNamedFontList: TStringlist; // Timers rountines procedure fpgInitTimers; procedure fpgCheckTimers; +procedure fpgResetAllTimers; function fpgClosestTimer(ctime: TDateTime; amaxtime: integer): integer; function fpgGetTickCount: DWord; @@ -512,6 +513,14 @@ begin end; end; +procedure fpgResetAllTimers; +var + i: integer; +begin + for i := 0 to fpgTimers.Count-1 do + TfpgTimer(fpgTimers[i]).Reset; +end; + function fpgClosestTimer(ctime: TDateTime; amaxtime: integer): integer; var i: integer; diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index f877c3b5..a9aa34a1 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -968,6 +968,15 @@ begin Result := 0; end; + WM_TIMECHANGE: + begin + {$IFDEF DEBUG} + SendDebug(w.ClassName + ': WM_TIMECHANGE'); + {$ENDIF} + writeln('fpGUI/GDI: ' + w.ClassName + ': WM_TIMECHANGE'); + fpgResetAllTimers; + end; + WM_NCACTIVATE: begin {$IFDEF DEBUG} -- cgit v1.2.3-70-g09d2 From ad062c7d86aa8df749692ec7ce93748877047ba2 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 19:26:17 +0200 Subject: spinedit: arrow painting used wrong button border size --- src/gui/fpg_spinedit.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_spinedit.pas b/src/gui/fpg_spinedit.pas index 52bd7873..9e9c6aae 100644 --- a/src/gui/fpg_spinedit.pas +++ b/src/gui/fpg_spinedit.pas @@ -382,7 +382,7 @@ var begin r := AButton.GetClientRect; - InflateRect(r, -1, -1); // button borders + InflateRect(r, -2, -2); // button borders if AButton.Down then OffsetRect(r, 1, 1); -- cgit v1.2.3-70-g09d2 From 0415e52e105d0f7fabf019d37dfbb3ac8d2c88c8 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 19:26:53 +0200 Subject: spinedit: replaced code with an existing method to do rectangle conversion --- src/gui/fpg_spinedit.pas | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_spinedit.pas b/src/gui/fpg_spinedit.pas index 9e9c6aae..0bd51fd5 100644 --- a/src/gui/fpg_spinedit.pas +++ b/src/gui/fpg_spinedit.pas @@ -386,11 +386,7 @@ begin if AButton.Down then OffsetRect(r, 1, 1); - // TfpgRect to TRect - Result.Left := r.Left; - Result.Top := r.Top; - Result.Right := r.Right; - Result.Bottom := r.Bottom; + Result := fpgRectToRect(r); end; procedure TfpgAbstractSpinEdit.ButtonUpPaint(Sender: TObject); -- cgit v1.2.3-70-g09d2 From f1a559059dbea9b0d85aab4724d16cec994d9937 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 19:27:57 +0200 Subject: TfpgSpinEdit bugfix: key up/down/pgup/pgdn never triggered the OnChange event. --- src/gui/fpg_spinedit.pas | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_spinedit.pas b/src/gui/fpg_spinedit.pas index 0bd51fd5..99c4e697 100644 --- a/src/gui/fpg_spinedit.pas +++ b/src/gui/fpg_spinedit.pas @@ -1113,9 +1113,13 @@ begin begin FValue := 0; FEdit.Value := FValue; + DoOnChange; end else if (StrToInt(FEdit.Text) <= FMaxValue) and (StrToInt(FEdit.Text) >= FMinValue) then - FValue := FEdit.Value + begin + FValue := FEdit.Value; + DoOnChange; + end else FEdit.Value := FValue; @@ -1124,11 +1128,13 @@ begin begin Inc(FValue, FIncrement); FEdit.Value := FValue; + DoOnChange; end else if not IsMaxLimitReached then begin FValue := FMaxValue; FEdit.Value := FValue; + DoOnChange; end; if KeyCode = KeyDown then @@ -1136,23 +1142,27 @@ begin begin Dec(FValue, FIncrement); FEdit.Value := FValue; + DoOnChange; end else if not IsMinLimitReached then begin FValue := FMinValue; FEdit.Value := FValue; + DoOnChange; end; if KeyCode = KeyPageUp then begin FValue := FMaxValue; FEdit.Value := FValue; + DoOnChange; end; if KeyCode = KeyPageDown then begin FValue := FMinValue; FEdit.Value := FValue; + DoOnChange; end; EnableButtons; -- cgit v1.2.3-70-g09d2 From 64a9e6782c87d2f265a3b825a11ee94c9e530b3b Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 19:36:48 +0200 Subject: Color Select Dialog: the second tab for color selection has been implemented * The SelectedColor is now based on the last active tab. - If the ColorWheel was active, it takes that selected color - If the Color Palette Listbox was active, it takes that selected color. --- src/gui/colordialog.inc | 44 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/gui/colordialog.inc b/src/gui/colordialog.inc index 19163aa3..93d8d731 100644 --- a/src/gui/colordialog.inc +++ b/src/gui/colordialog.inc @@ -28,7 +28,7 @@ type pcColorSelect: TfpgPageControl; tsColorWheel: TfpgTabSheet; tsColorNames: TfpgTabSheet; - ComboBox1: TfpgComboBox; + cbColorPalette: TfpgComboBox; ColorListBox1: TfpgColorListBox; Label1: TfpgLabel; Label2: TfpgLabel; @@ -48,6 +48,8 @@ type procedure ColorChanged(Sender: TObject); procedure RGBChanged(Sender: TObject); procedure UpdateRGBComponents; + procedure PopulatePaletteColorCombo; + procedure cbColorPaletteChange(Sender: TObject); public constructor Create(AOwner: TComponent); override; procedure AfterCreate; override; @@ -71,7 +73,7 @@ begin try frm.ColorWheel.SetSelectedColor(APresetColor); if frm.ShowModal = mrOK then - Result := frm.ValueBar.SelectedColor; + Result := frm.SelectedColor; finally frm.Free; end; @@ -81,12 +83,15 @@ end; function TfpgColorSelectDialog.GetSelectedColor: TfpgColor; begin - // + if pcColorSelect.ActivePageIndex = 0 then + Result := ValueBar.SelectedColor + else + Result := ColorListBox1.Color; end; procedure TfpgColorSelectDialog.SetSelectedColor(const AValue: TfpgColor); begin - // + ColorWheel.SetSelectedColor(AValue); end; procedure TfpgColorSelectDialog.ColorChanged(Sender: TObject); @@ -123,6 +128,27 @@ begin edB.Value := rgb.Blue; end; +procedure TfpgColorSelectDialog.PopulatePaletteColorCombo; +begin + cbColorPalette.Items.Clear; + cbColorPalette.Items.Add('cpStandardColors'); + cbColorPalette.Items.Add('cpSystemColors'); + cbColorPalette.Items.Add('cpWebColors'); + cbColorPalette.FocusItem := 0; + cbColorPalette.OnChange := @cbColorPaletteChange; +end; + +procedure TfpgColorSelectDialog.cbColorPaletteChange(Sender: TObject); +begin + if cbColorPalette.Text = 'cpStandardColors' then + ColorListBox1.ColorPalette := cpStandardColors + else if cbColorPalette.Text = 'cpSystemColors' then + ColorListBox1.ColorPalette := cpSystemColors + else + ColorListBox1.ColorPalette := cpWebColors; + ColorListBox1.SetFocus; +end; + constructor TfpgColorSelectDialog.Create(AOwner: TComponent); begin inherited Create(AOwner); @@ -167,10 +193,10 @@ begin Text := 'Predefined'; end; - ComboBox1 := TfpgComboBox.Create(tsColorNames); - with ComboBox1 do + cbColorPalette := TfpgComboBox.Create(tsColorNames); + with cbColorPalette do begin - Name := 'ComboBox1'; + Name := 'cbColorPalette'; SetPosition(8, 24, 299, 22); Anchors := [anLeft,anRight,anTop]; FontDesc := '#List'; @@ -184,6 +210,7 @@ begin Name := 'ColorListBox1'; SetPosition(8, 72, 299, 224); Anchors := [anLeft,anRight,anTop,anBottom]; + Color := TfpgColor($00FFFF); FontDesc := '#List'; Hint := ''; TabOrder := 2; @@ -221,6 +248,7 @@ begin begin Name := 'ValueBar'; SetPosition(240, 8, 64, 204); + Value := 1; OnChange := @ColorChanged; end; @@ -306,6 +334,8 @@ begin btnCancel.Top := Height - btnCancel.Height - FSpacing; btnOK.Left := btnCancel.Left - FDefaultButtonWidth - 6; btnOK.Top := btnCancel.Top; + + PopulatePaletteColorCombo; end; -- cgit v1.2.3-70-g09d2 From 1570829089615d2cf53b8d7573b5abc0890736aa Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 1 Oct 2010 19:37:02 +0200 Subject: TfpgValueBar: Set default property values. --- src/gui/fpg_colorwheel.pas | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_colorwheel.pas b/src/gui/fpg_colorwheel.pas index c2282e95..57494818 100644 --- a/src/gui/fpg_colorwheel.pas +++ b/src/gui/fpg_colorwheel.pas @@ -103,8 +103,8 @@ type property Enabled; property Value: double Read FValue Write SetValue; property SelectedColor: TfpgColor Read GetSelectedColor; - property MarginWidth: longint Read FMarginWidth Write SetMarginWidth; - property CursorHeight: longint Read FCursorHeight Write SetCursorHeight; + property MarginWidth: longint Read FMarginWidth Write SetMarginWidth default 5; + property CursorHeight: longint Read FCursorHeight Write SetCursorHeight default 10; property OnChange: TNotifyEvent Read FOnChange Write FOnChange; end; @@ -506,7 +506,7 @@ begin inherited Create(AOwner); FMarginWidth := 5; FValue := 1.0; - Width := 100; + Width := 80; Height := 100; Name := 'ValueBar'; FCursorHeight := 10; -- cgit v1.2.3-70-g09d2 From 8d22b0a1795e7dd5b0128d45e546ebfe3cb3d1c8 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 3 Oct 2010 13:06:08 +0200 Subject: Published OnPaint for TfpgPanel and TfpgGroupBox. --- src/gui/fpg_panel.pas | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_panel.pas b/src/gui/fpg_panel.pas index c3f42e5d..72a7af5b 100644 --- a/src/gui/fpg_panel.pas +++ b/src/gui/fpg_panel.pas @@ -156,6 +156,7 @@ type property WrapText: boolean read GetWrapText write SetWrapText default False; property OnClick; property OnDoubleClick; + property OnPaint; property OnShowHint; end; @@ -204,6 +205,7 @@ type property Width; property OnClick; property OnDoubleClick; + property OnPaint; property OnShowHint; end; -- cgit v1.2.3-70-g09d2 From 0aeb51dbc892cf76f3065c1df81f310103c97f8d Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 3 Oct 2010 23:06:40 +0200 Subject: X11: fake a Resize event after the window is mapped (shown). X11 seems too efficient, so one the initial mapping of the window to the display, no resize event needs to occur, and it doesn't. This screws with Align property which expects as Resize event (like Windows GDI). So we fake a resize event. --- src/corelib/x11/fpg_x11.pas | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 24fa599c..a5fb68e0 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1902,6 +1902,15 @@ begin w := FindWindowByHandle(ev.xmap.window); if w <> nil then Include(w.FWinFlags, xwsfMapped); + + { X11 is too efficient, so new windows don't need a OnResize when mapped, + but because Windows GDI does so, we want the same events under X11. + Lets fake one. } + msgp.rect.Left := w.Left; + msgp.rect.Top := w.Top; + msgp.rect.Width := w.Width; + msgp.rect.Height := w.Height; + fpgPostMessage(nil, w, FPGM_RESIZE, msgp); end; X.UnmapNotify: -- cgit v1.2.3-70-g09d2 From b81c00f54ec7f453eb3189dea19eade3bb1b73a5 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 4 Oct 2010 09:52:56 +0200 Subject: X11: extra failsafe before posting FPGM_RESIZE event. --- src/corelib/x11/fpg_x11.pas | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index a5fb68e0..837b2d34 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1906,11 +1906,14 @@ begin { X11 is too efficient, so new windows don't need a OnResize when mapped, but because Windows GDI does so, we want the same events under X11. Lets fake one. } - msgp.rect.Left := w.Left; - msgp.rect.Top := w.Top; - msgp.rect.Width := w.Width; - msgp.rect.Height := w.Height; - fpgPostMessage(nil, w, FPGM_RESIZE, msgp); + if w <> nil then + begin + msgp.rect.Left := w.Left; + msgp.rect.Top := w.Top; + msgp.rect.Width := w.Width; + msgp.rect.Height := w.Height; + fpgPostMessage(nil, w, FPGM_RESIZE, msgp); + end; end; X.UnmapNotify: -- cgit v1.2.3-70-g09d2 From 0b86c860b45f3adfafef0cf72330392320ffdfdc Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 4 Oct 2010 12:52:33 +0200 Subject: Anchors now support relative positioning If you only set a single anchor eg [anTop] and you resize the width of the form, the component will stay relative to the original position. if you place a component in the center of a form, and set anchors to [], and resize the form, the component will stay centered. --- src/corelib/fpg_widget.pas | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index 7a95b92b..46e9a655 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -174,7 +174,7 @@ type { Is the widget allowed to receive keyboard focus. } property Focusable: boolean read FFocusable write FFocusable default False; property Focused: boolean read FFocused write FFocused default False; - property Anchors: TAnchors read FAnchors write FAnchors; + property Anchors: TAnchors read FAnchors write FAnchors default [anLeft, anTop]; property Align: TAlign read FAlign write FAlign; property Hint: TfpgString read GetHint write SetHint; property ShowHint: boolean read FShowHint write SetShowHint stored IsShowHintStored; @@ -1189,8 +1189,7 @@ begin if (Components[n] is TfpgWidget) then begin wg := TfpgWidget(Components[n]); - if (wg.FAlign = alNone) and - ((anBottom in wg.Anchors) or (anRight in wg.Anchors)) then + if (wg.FAlign = alNone) and ([anLeft, anTop] <> wg.Anchors) then begin // we must alter the window dx := 0; @@ -1198,15 +1197,21 @@ begin dw := 0; dh := 0; - if (anLeft in wg.Anchors) and (anRight in wg.Anchors) then - dw := dwidth - else if anRight in wg.Anchors then - dx := dwidth; - - if (anTop in wg.Anchors) and (anBottom in wg.Anchors) then - dh := dheight - else if anBottom in wg.Anchors then - dy := dheight; + if (anRight in wg.Anchors) then + if (anLeft in wg.Anchors) then + dw := dwidth + else + dx := dwidth + else if not (anLeft in wg.Anchors) then + dx := (dwidth div 2); + + if (anBottom in wg.Anchors) then + if (anTop in wg.Anchors) then + dh := dheight + else + dy := dheight + else if not (anTop in wg.Anchors) then + dy := (dheight div 2); wg.MoveAndResizeBy(dx, dy, dw, dh); end; -- cgit v1.2.3-70-g09d2 From 1db98a1775c3f4caba4ba7a52180eb48eac6d5fc Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 4 Oct 2010 16:47:15 +0200 Subject: Splitter grabbar color is now a system color. --- src/corelib/fpg_main.pas | 1 + src/gui/fpg_splitter.pas | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index 2fe5f200..cdec3a9b 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -1906,6 +1906,7 @@ begin fpgSetNamedColor(clGridSelectionText, $FFFFFF); // same as clSelectionText fpgSetNamedColor(clGridInactiveSel, $D0D0FF); // same as clInactiveSel fpgSetNamedColor(clGridInactiveSelText, $000000); // same as clInactiveSelText + fpgSetNamedColor(clSplitterGrabBar, $839EFE); // pale blue // Global Font Objects diff --git a/src/gui/fpg_splitter.pas b/src/gui/fpg_splitter.pas index eabc2bd2..066727e4 100644 --- a/src/gui/fpg_splitter.pas +++ b/src/gui/fpg_splitter.pas @@ -28,12 +28,8 @@ uses fpg_main, fpg_widget; -const - clColorGrabBar = $839EFE; // Pale navy blue - cSplitterWidth = 8; type - NaturalNumber = 1..High(Integer); TfpgSnapEvent = procedure(Sender: TObject; const AClosed: boolean) of object; @@ -73,7 +69,7 @@ type destructor Destroy; override; published property AutoSnap: boolean read FAutoSnap write FAutoSnap default True; - property ColorGrabBar: TfpgColor read FColorGrabBar write SetColorGrabBar default clColorGrabBar; + property ColorGrabBar: TfpgColor read FColorGrabBar write SetColorGrabBar default clSplitterGrabBar; property OnSnap: TfpgSnapEvent read FOnSnap write FOnSnap; end; @@ -82,6 +78,10 @@ function CreateSplitter(AOwner: TComponent; ALeft, ATop, AWidth, AHeight: TfpgCo implementation +const + cSplitterWidth = 8; + + function CreateSplitter(AOwner: TComponent; ALeft, ATop, AWidth, AHeight: TfpgCoord; AnAlign: TAlign): TfpgSplitter; begin @@ -253,7 +253,9 @@ begin Inc(FMaxSize, FControl.Height); end; UpdateSize(X, Y); + CaptureMouse; + {AllocateLineDC; with ValidParentForm(Self) do if ActiveControl <> nil then @@ -493,7 +495,7 @@ begin // FResizeStyle := rsPattern; FOldSize := -1; FMouseOver := False; - FColorGrabBar := clColorGrabBar; + FColorGrabBar := clSplitterGrabBar; end; destructor TfpgSplitter.Destroy; -- cgit v1.2.3-70-g09d2 From 2e1ddf6255060348ea1f31b064497e22e0156b00 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 4 Oct 2010 16:51:36 +0200 Subject: splitter bugfix: Splitter was sometimes non-movable because FControl was nil The detection of which neighbouring control to resize was not 100% which resulted in a non-movable splitter. This is now fixed. --- src/gui/fpg_splitter.pas | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_splitter.pas b/src/gui/fpg_splitter.pas index 066727e4..61ecbb6d 100644 --- a/src/gui/fpg_splitter.pas +++ b/src/gui/fpg_splitter.pas @@ -133,12 +133,11 @@ var r: TfpgRect; begin Result := nil; - p := Point(Left, Top); case Align of - alLeft: Dec(p.X); - alRight: Inc(p.X, Width); - alTop: Dec(p.Y); - alBottom: Inc(p.Y, Height); + alLeft: p := Point(Left-2, Top + (Height div 2)); + alRight: p := Point(Right+2, Top + (Height div 2)); + alTop: p := Point(Left + (Width div 2), Top-2); + alBottom: p := Point(Left + (Width div 2), Bottom+2); else Exit; end; @@ -180,16 +179,10 @@ begin begin case Align of alLeft, alRight: -// FControl.Width := FNewSize; // (1) - FControl.SetPosition(FControl.Left, FControl.Top, FNewSize, FControl.Height); // (2) + FControl.SetPosition(FControl.Left, FControl.Top, FNewSize, FControl.Height); alTop, alBottom: -// FControl.Height := FNewSize; // (1) - FControl.SetPosition(FControl.Left, FControl.Top, FControl.Width, FNewSize); // (2) + FControl.SetPosition(FControl.Left, FControl.Top, FControl.Width, FNewSize); end; -// FControl.UpdateWindowPosition; // (1) - // vvzh: - // Lines marked with (1) work wrong under Linux (e.g. folding/unfolding Memo1) - // Lines marked with (2) work OK under both platforms. Why? Parent.Realign; // if Assigned(FOnMoved) then FOnMoved(Self); FOldSize := FNewSize; -- cgit v1.2.3-70-g09d2 From 9b64729973ee8ab2d8bcf4a757007ec006ebf3ab Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 4 Oct 2010 16:52:19 +0200 Subject: Splitter more visible in designer mode Add extra border painting so it will be more visible in the UI Designer. --- src/gui/fpg_splitter.pas | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_splitter.pas b/src/gui/fpg_splitter.pas index 61ecbb6d..bf5410f0 100644 --- a/src/gui/fpg_splitter.pas +++ b/src/gui/fpg_splitter.pas @@ -339,7 +339,15 @@ var begin Canvas.SetColor(clWindowBackground); Canvas.FillRectangle(GetClientRect); - + + { just to make it's borders more visible in the designer } + if csDesigning in ComponentState then + begin + Canvas.SetColor(clInactiveWgFrame); + Canvas.SetLineStyle(1, lsDash); + Canvas.DrawRectangle(0, 0, Width, Height); + end; + case Align of alRight, alLeft: -- cgit v1.2.3-70-g09d2 From 049f2670759a30d5feb7a6ef9d02010d94b68335 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 4 Oct 2010 16:58:53 +0200 Subject: Reworked algorythm for Align property * It used to have a hard-coded processing of alignment. Top, Bottom, Left, Right and then Client. * This meant extra "fake" panels was required to get a specific design. * Align property is now processed in the creation order of the widgets. --- src/corelib/fpg_widget.pas | 111 +++++++++++++++++++++++++-------------------- 1 file changed, 61 insertions(+), 50 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index 46e9a655..a7dee237 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -62,9 +62,11 @@ type FOnShowHint: THintEvent; FDragStartPos: TfpgPoint; FDragActive: boolean; + alist: TList; procedure SetActiveWidget(const AValue: TfpgWidget); function IsShowHintStored: boolean; procedure SetFormDesigner(const AValue: TObject); + procedure SetAlign(const AValue: TAlign); protected procedure MsgPaint(var msg: TfpgMessageRec); message FPGM_PAINT; procedure MsgResize(var msg: TfpgMessageRec); message FPGM_RESIZE; @@ -111,7 +113,7 @@ type function GetHint: TfpgString; virtual; procedure SetHint(const AValue: TfpgString); virtual; procedure DoUpdateWindowPosition; override; - procedure DoAlign(AAlign: TAlign); + procedure DoAlignment; procedure DoResize; procedure DoShowHint(var AHint: TfpgString); procedure HandlePaint; virtual; @@ -175,7 +177,7 @@ type property Focusable: boolean read FFocusable write FFocusable default False; property Focused: boolean read FFocused write FFocused default False; property Anchors: TAnchors read FAnchors write FAnchors default [anLeft, anTop]; - property Align: TAlign read FAlign write FAlign; + property Align: TAlign read FAlign write SetAlign default alNone; property Hint: TfpgString read GetHint write SetHint; property ShowHint: boolean read FShowHint write SetShowHint stored IsShowHintStored; property ParentShowHint: boolean read FParentShowHint write SetParentShowHint default True; @@ -219,6 +221,33 @@ begin end; end; +function CompareInts(i1, i2: integer): integer; +begin + if i1 < i2 then + Result := -1 + else if i1 > i2 then + Result := 1 + else + Result := 0; +end; + +function AlignCompare(p1, p2: Pointer): integer; +var + w1: TfpgWidget; + w2: TfpgWidget; +begin + w1 := TfpgWidget(p1); + w2 := TfpgWidget(p2); + case w1.Align of + alTop: Result := CompareInts(w1.Top, w2.Top); + alBottom: Result := CompareInts(w2.Top, w1.Top); + alLeft: Result := CompareInts(w1.Left, w2.Left); + alRight: Result := CompareInts(w2.Left, w1.Left); + else + Result := 0; + end; +end; + { TfpgWidget } @@ -280,6 +309,14 @@ begin end; end; +procedure TfpgWidget.SetAlign(const AValue: TAlign); +begin + if FAlign = AValue then + Exit; + FAlign := AValue; + Realign; +end; + procedure TfpgWidget.SetVisible(const AValue: boolean); begin if FVisible = AValue then @@ -1172,17 +1209,32 @@ var dy: integer; dw: integer; dh: integer; + w: TfpgWidget; begin if (csLoading in ComponentState) then Exit; //==> // writeln('HandleAlignments - ', Classname); FAlignRect := GetClientRect; - DoAlign(alTop); - DoAlign(alBottom); - DoAlign(alLeft); - DoAlign(alRight); - DoAlign(alClient); + alist := TList.Create; + try + for n := 0 to ComponentCount - 1 do + if Components[n] is TfpgWidget then + begin + w := TfpgWidget(Components[n]); + if (w.Align <> alNone) and (w.Visible) then + alist.Add(w); + end; + + DoAlignment; + //DoAlign(alTop); + //DoAlign(alBottom); + //DoAlign(alLeft); + //DoAlign(alRight); + //DoAlign(alClient); + finally + alist.Free; + end; // handle anchors finally for alNone for n := 0 to ComponentCount - 1 do @@ -1246,55 +1298,16 @@ begin MoveAndResize(FLeft + dx, FTop + dy, FWidth + dw, FHeight + dh); end; -function CompareInts(i1, i2: integer): integer; -begin - if i1 < i2 then - Result := -1 - else if i1 > i2 then - Result := 1 - else - Result := 0; -end; - -function AlignCompare(p1, p2: Pointer): integer; -var - w1: TfpgWidget; - w2: TfpgWidget; -begin - w1 := TfpgWidget(p1); - w2 := TfpgWidget(p2); - case w1.Align of - alTop: Result := CompareInts(w1.Top, w2.Top); - alBottom: Result := CompareInts(w2.Top, w1.Top); - alLeft: Result := CompareInts(w1.Left, w2.Left); - alRight: Result := CompareInts(w2.Left, w1.Left); - else - Result := 0; - end; -end; - -procedure TfpgWidget.DoAlign(AAlign: TAlign); +procedure TfpgWidget.DoAlignment; var - alist: TList; w: TfpgWidget; n: integer; begin - alist := TList.Create; - for n := 0 to ComponentCount - 1 do - if Components[n] is TfpgWidget then - begin - w := TfpgWidget(Components[n]); - if (w.Align = AAlign) and (w.Visible) then - alist.Add(w); - end; - - alist.Sort(@AlignCompare); - // and process this list in order for n := 0 to alist.Count - 1 do begin w := TfpgWidget(alist[n]); - case AAlign of + case w.Align of alTop: begin w.MoveAndResize(FAlignRect.Left, FAlignRect.Top, FAlignRect.Width, w.Height); @@ -1325,8 +1338,6 @@ begin w.MoveAndResize(FAlignRect.Left, FAlignRect.Top, FAlignRect.Width, FAlignRect.Height); end; { case } end; - - alist.Free; end; procedure TfpgWidget.DoResize; -- cgit v1.2.3-70-g09d2 From 4de3fbd6008a13c1e7088a9c04dc11d35cb45358 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 4 Oct 2010 16:59:24 +0200 Subject: Added missing predefined color for Splitter Grabbar. --- src/corelib/predefinedcolors.inc | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/corelib/predefinedcolors.inc b/src/corelib/predefinedcolors.inc index 2774a403..ddb333b9 100644 --- a/src/corelib/predefinedcolors.inc +++ b/src/corelib/predefinedcolors.inc @@ -68,6 +68,7 @@ clGridSelectionText = TfpgColor(cl_BaseNamedColor + 29); clGridInactiveSel = TfpgColor(cl_BaseNamedColor + 30); clGridInactiveSelText = TfpgColor(cl_BaseNamedColor + 31); + clSplitterGrabBar = TfpgColor(cl_BaseNamedColor + 32); -- cgit v1.2.3-70-g09d2 From 250d53668f7a5e449b7ff849ffe0d04551ee5a80 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 4 Oct 2010 17:00:12 +0200 Subject: Published Align property for all widgets. --- src/gui/fpg_animation.pas | 1 + src/gui/fpg_button.pas | 1 + src/gui/fpg_checkbox.pas | 1 + src/gui/fpg_colorwheel.pas | 2 ++ src/gui/fpg_combobox.pas | 1 + src/gui/fpg_edit.pas | 4 ++++ src/gui/fpg_editbtn.pas | 3 +++ src/gui/fpg_editcombo.pas | 1 + src/gui/fpg_grid.pas | 2 ++ src/gui/fpg_hyperlink.pas | 1 + src/gui/fpg_label.pas | 1 + src/gui/fpg_listbox.pas | 2 ++ src/gui/fpg_listview.pas | 1 + src/gui/fpg_memo.pas | 1 + src/gui/fpg_panel.pas | 3 +++ src/gui/fpg_popupcalendar.pas | 1 + src/gui/fpg_progressbar.pas | 1 + src/gui/fpg_radiobutton.pas | 1 + src/gui/fpg_scrollbar.pas | 2 ++ src/gui/fpg_splitter.pas | 1 + src/gui/fpg_tab.pas | 1 + src/gui/fpg_trackbar.pas | 2 ++ src/gui/fpg_tree.pas | 1 + 23 files changed, 35 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_animation.pas b/src/gui/fpg_animation.pas index fedfa545..36972877 100644 --- a/src/gui/fpg_animation.pas +++ b/src/gui/fpg_animation.pas @@ -65,6 +65,7 @@ type public property Position; published + property Align; property Enabled; property Interval; property ImageFileName; diff --git a/src/gui/fpg_button.pas b/src/gui/fpg_button.pas index 2c2959f1..7ef778ec 100644 --- a/src/gui/fpg_button.pas +++ b/src/gui/fpg_button.pas @@ -127,6 +127,7 @@ type together. } TfpgButton = class(TfpgBaseButton) published + property Align; property AllowAllUp; property AllowDown; property BackgroundColor default clButtonFace; diff --git a/src/gui/fpg_checkbox.pas b/src/gui/fpg_checkbox.pas index 156459b4..e6d5c35b 100644 --- a/src/gui/fpg_checkbox.pas +++ b/src/gui/fpg_checkbox.pas @@ -65,6 +65,7 @@ type TfpgCheckBox = class(TfpgBaseCheckBox) published + property Align; property BackgroundColor; property BoxLayout; property Checked; diff --git a/src/gui/fpg_colorwheel.pas b/src/gui/fpg_colorwheel.pas index 57494818..a6b3795b 100644 --- a/src/gui/fpg_colorwheel.pas +++ b/src/gui/fpg_colorwheel.pas @@ -62,6 +62,7 @@ type property Saturation: double Read FSaturation; procedure SetSelectedColor(const NewColor: TfpgColor); published + property Align; property BackgroundColor; property Enabled; property ValueBar: TfpgValueBar Read FValueBar Write SetValueBar; @@ -99,6 +100,7 @@ type constructor Create(AOwner: TComponent); override; procedure SetHS(Hue: longint; Sat: double); published + property Align; property BackgroundColor; property Enabled; property Value: double Read FValue Write SetValue; diff --git a/src/gui/fpg_combobox.pas b/src/gui/fpg_combobox.pas index 26ae8b0c..bb6f90b2 100644 --- a/src/gui/fpg_combobox.pas +++ b/src/gui/fpg_combobox.pas @@ -135,6 +135,7 @@ type TfpgComboBox = class(TfpgBaseStaticCombo) published + property Align; property BackgroundColor default clBoxColor; property DropDownCount; property Enabled; diff --git a/src/gui/fpg_edit.pas b/src/gui/fpg_edit.pas index 3c7e45d7..3d72fa66 100644 --- a/src/gui/fpg_edit.pas +++ b/src/gui/fpg_edit.pas @@ -159,6 +159,7 @@ type public property PopupMenu; // UI Designer doesn't fully support it yet published + property Align; property AutoSelect; property AutoSize; property BackgroundColor default clBoxColor; @@ -258,6 +259,7 @@ type property OldColor; property Text; published + property Align; property CustomThousandSeparator; property Enabled; property Hint; @@ -297,6 +299,7 @@ type property OldColor; property Text; published + property Align; property CustomDecimalSeparator; property CustomThousandSeparator; property Decimals: integer read FDecimals write SetDecimals default -1; @@ -337,6 +340,7 @@ type property OldColor; property Text; published + property Align; property CustomDecimalSeparator; property CustomThousandSeparator; property Decimals: integer read FDecimals write SetDecimals default 2; diff --git a/src/gui/fpg_editbtn.pas b/src/gui/fpg_editbtn.pas index 2d972744..0cba4f18 100644 --- a/src/gui/fpg_editbtn.pas +++ b/src/gui/fpg_editbtn.pas @@ -70,6 +70,7 @@ type public constructor Create(AOwner: TComponent); override; published + property Align; property Enabled; property ExtraHint; property FileName: TfpgString read GetFileName write SetFileName; @@ -93,6 +94,7 @@ type public constructor Create(AOwner: TComponent); override; published + property Align; property Directory: TfpgString read GetDirectory write SetDirectory; property Enabled; property ExtraHint; @@ -113,6 +115,7 @@ type public constructor Create(AOwner: TComponent); override; published + property Align; property Enabled; property ExtraHint; property FontDesc: TfpgString read GetFontDesc write SetFontDesc; diff --git a/src/gui/fpg_editcombo.pas b/src/gui/fpg_editcombo.pas index 440f6885..4dd011d0 100644 --- a/src/gui/fpg_editcombo.pas +++ b/src/gui/fpg_editcombo.pas @@ -117,6 +117,7 @@ type TfpgEditCombo = class(TfpgBaseEditCombo) published + property Align; property AllowNew; property AutoCompletion; property BackgroundColor; diff --git a/src/gui/fpg_grid.pas b/src/gui/fpg_grid.pas index 51ef8646..56c1b968 100644 --- a/src/gui/fpg_grid.pas +++ b/src/gui/fpg_grid.pas @@ -56,6 +56,7 @@ type property Font; property HeaderFont; published + property Align; property ColumnCount; property Columns; property FocusRow; @@ -125,6 +126,7 @@ type public property Font; published + property Align; property AlternateBGColor; property BackgroundColor; // property ColResizing; diff --git a/src/gui/fpg_hyperlink.pas b/src/gui/fpg_hyperlink.pas index 2c850a97..5d84c718 100644 --- a/src/gui/fpg_hyperlink.pas +++ b/src/gui/fpg_hyperlink.pas @@ -50,6 +50,7 @@ type constructor Create(AOwner: TComponent); override; procedure GoHyperLink; published + property Align; property Alignment; property Autosize; property FontDesc; diff --git a/src/gui/fpg_label.pas b/src/gui/fpg_label.pas index 88986549..10e58fbf 100644 --- a/src/gui/fpg_label.pas +++ b/src/gui/fpg_label.pas @@ -68,6 +68,7 @@ type TfpgLabel = class(TfpgCustomLabel) published + property Align; property Alignment; property AutoSize; property BackgroundColor; diff --git a/src/gui/fpg_listbox.pas b/src/gui/fpg_listbox.pas index 6aea07ba..1b5c897b 100644 --- a/src/gui/fpg_listbox.pas +++ b/src/gui/fpg_listbox.pas @@ -132,6 +132,7 @@ type // The standard strings listbox we will actually use in a GUI. TfpgListBox = class(TfpgTextListBox) published + property Align; property AutoHeight; property BackgroundColor default clListBox; property DragToReorder; @@ -193,6 +194,7 @@ type TfpgColorListBox = class(TfpgBaseColorListBox) published + property Align; property AutoHeight; property BackgroundColor default clListBox; property Color; diff --git a/src/gui/fpg_listview.pas b/src/gui/fpg_listview.pas index b79d0ab0..cd9268f4 100644 --- a/src/gui/fpg_listview.pas +++ b/src/gui/fpg_listview.pas @@ -249,6 +249,7 @@ type function AddItem: TfpgLVItem; function NewItem: TfpgLVItem; published + property Align; property Columns: TfpgLVColumns read FColumns; property Enabled; property HScrollBar: TfpgScrollBar read FHScrollBar; diff --git a/src/gui/fpg_memo.pas b/src/gui/fpg_memo.pas index d01e757c..dccc5f55 100644 --- a/src/gui/fpg_memo.pas +++ b/src/gui/fpg_memo.pas @@ -124,6 +124,7 @@ type property UseTabs: boolean read FUseTabs write FUseTabs default False; property PopupMenu: TfpgPopupMenu read FPopupMenu write FPopupMenu; published + property Align; property BackgroundColor default clBoxColor; property Enabled; property FontDesc: string read GetFontDesc write SetFontDesc; diff --git a/src/gui/fpg_panel.pas b/src/gui/fpg_panel.pas index 72a7af5b..05915dcf 100644 --- a/src/gui/fpg_panel.pas +++ b/src/gui/fpg_panel.pas @@ -73,6 +73,7 @@ type protected procedure HandlePaint; override; published + property Align; property BackgroundColor; property BorderStyle; property Enabled; @@ -130,6 +131,7 @@ type destructor Destroy; override; property Font: TfpgFont read FFont; published + property Align; property Alignment: TAlignment read GetAlignment write SetAlignment default taCenter; property BackgroundColor; property BorderStyle; @@ -183,6 +185,7 @@ type function GetClientRect: TfpgRect; override; property Font: TfpgFont read FFont; published + property Align; property Alignment: TAlignment read GetAlignment write SetAlignment default taLeftJustify; property BackgroundColor; property BorderStyle; diff --git a/src/gui/fpg_popupcalendar.pas b/src/gui/fpg_popupcalendar.pas index 30171661..ea6eb617 100644 --- a/src/gui/fpg_popupcalendar.pas +++ b/src/gui/fpg_popupcalendar.pas @@ -221,6 +221,7 @@ type public constructor Create(AOwner: TComponent); override; published + property Align; property BackgroundColor; { Clicking on calendar Today button will close the popup calendar by default } property CloseOnSelect: boolean read FCloseOnSelect write SetCloseOnSelect default True; diff --git a/src/gui/fpg_progressbar.pas b/src/gui/fpg_progressbar.pas index 031117fb..e106577c 100644 --- a/src/gui/fpg_progressbar.pas +++ b/src/gui/fpg_progressbar.pas @@ -60,6 +60,7 @@ type TfpgProgressBar = class(TfpgCustomProgressBar) published + property Align; property BackgroundColor default $c4c4c4; property Enabled; property Hint; diff --git a/src/gui/fpg_radiobutton.pas b/src/gui/fpg_radiobutton.pas index 61c8df6e..e04a2b2c 100644 --- a/src/gui/fpg_radiobutton.pas +++ b/src/gui/fpg_radiobutton.pas @@ -61,6 +61,7 @@ type destructor Destroy; override; property Font: TfpgFont read FFont; published + property Align; property AutoSize: boolean read FAutoSize write SetAutoSize default False; property BackgroundColor; property Checked: boolean read FChecked write SetChecked default False; diff --git a/src/gui/fpg_scrollbar.pas b/src/gui/fpg_scrollbar.pas index 5f2ffd6c..dd0a4c7c 100644 --- a/src/gui/fpg_scrollbar.pas +++ b/src/gui/fpg_scrollbar.pas @@ -97,6 +97,8 @@ type property Min: integer read FMin write SetMin default 0; property Max: integer read FMax write SetMax default 100; property OnScroll: TScrollNotifyEvent read FOnScroll write FOnScroll; + published + property Align; end; diff --git a/src/gui/fpg_splitter.pas b/src/gui/fpg_splitter.pas index bf5410f0..8790b58e 100644 --- a/src/gui/fpg_splitter.pas +++ b/src/gui/fpg_splitter.pas @@ -68,6 +68,7 @@ type constructor Create(AOwner: TComponent); override; destructor Destroy; override; published + property Align; property AutoSnap: boolean read FAutoSnap write FAutoSnap default True; property ColorGrabBar: TfpgColor read FColorGrabBar write SetColorGrabBar default clSplitterGrabBar; property OnSnap: TfpgSnapEvent read FOnSnap write FOnSnap; diff --git a/src/gui/fpg_tab.pas b/src/gui/fpg_tab.pas index b33862c5..0e50e2fd 100644 --- a/src/gui/fpg_tab.pas +++ b/src/gui/fpg_tab.pas @@ -146,6 +146,7 @@ type property OnClosingTabSheet: TTabSheetClosing read FOnClosingTabSheet write FOnClosingTabSheet; published property ActivePageIndex: integer read GetActivePageIndex write SetActivePageIndex; + property Align; property BackgroundColor; property Enabled; property FixedTabWidth: integer read FFixedTabWidth write SetFixedTabWidth default 0; diff --git a/src/gui/fpg_trackbar.pas b/src/gui/fpg_trackbar.pas index 204b4407..9134a96d 100644 --- a/src/gui/fpg_trackbar.pas +++ b/src/gui/fpg_trackbar.pas @@ -68,6 +68,7 @@ type public constructor Create(AOwner: TComponent); override; published + property Align; property BackgroundColor; property Hint; property Min: integer read FMin write SetMin default 0; @@ -115,6 +116,7 @@ type constructor Create(AOwner: TComponent); override; destructor Destroy; override; published + property Align; property BackgroundColor; property Enabled; property Position: integer read FPosition write SetTBPosition default 0; diff --git a/src/gui/fpg_tree.pas b/src/gui/fpg_tree.pas index 7e028c79..570e1011 100644 --- a/src/gui/fpg_tree.pas +++ b/src/gui/fpg_tree.pas @@ -235,6 +235,7 @@ type property ImageList: TfpgImageList read FImageList write FImageList; property PopupMenu: TfpgPopupMenu read FPopupMenu write FPopupMenu; published + property Align; property DefaultColumnWidth: word read FDefaultColumnWidth write SetDefaultColumnWidth default 15; property Enabled; property FontDesc: string read GetFontDesc write SetFontDesc; -- cgit v1.2.3-70-g09d2 From 5904b43982ee3ffd636a71c4538650ce9b49e264 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 11 Oct 2010 08:36:06 +0200 Subject: Added a default parameter value for CreatePanel() function --- src/gui/fpg_panel.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_panel.pas b/src/gui/fpg_panel.pas index 05915dcf..191dafc2 100644 --- a/src/gui/fpg_panel.pas +++ b/src/gui/fpg_panel.pas @@ -217,7 +217,7 @@ function CreateBevel(AOwner: TComponent; ALeft, ATop, AWidth, AHeight: TfpgCoord AStyle: TPanelStyle): TfpgBevel; function CreatePanel(AOwner: TComponent; ALeft, ATop, AWidth, AHeight: TfpgCoord; AText: string; - AStyle: TPanelStyle; AALignment: TAlignment= taCenter; ALayout: TLayout= tlCenter; + AStyle: TPanelStyle = bsRaised; AALignment: TAlignment= taCenter; ALayout: TLayout= tlCenter; AMargin: integer= 2; ALineSpace: integer= 2): TfpgPanel; function CreateGroupBox(AOwner: TComponent; ALeft, ATop, AWidth, AHeight: TfpgCoord; AText: string; -- cgit v1.2.3-70-g09d2 From f05da3dee5dd4f22a44e035fc07bdf6b3acb3c2a Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 11 Oct 2010 09:13:32 +0200 Subject: TfpgTimer constructor and Reset can now be extended in descendants --- src/corelib/fpg_main.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index cdec3a9b..b2988182 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -289,10 +289,10 @@ type procedure SetInterval(const AValue: integer); public { AInterval is in milliseconds. } - constructor Create(ainterval: integer); + constructor Create(ainterval: integer); virtual; destructor Destroy; override; procedure CheckAlarm(ctime: TDateTime); - procedure Reset; + procedure Reset; virtual; property Enabled: boolean read FEnabled write SetEnabled; property NextAlarm: TDateTime read FNextAlarm; { Interval is in milliseconds. } -- cgit v1.2.3-70-g09d2 From 471f4f65d21c552c45af2583f3b312ab8fbfa579 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 11 Oct 2010 11:25:38 +0200 Subject: new method, Pause(), introduced to TfpgTimer --- src/corelib/fpg_main.pas | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index b2988182..c89dc51d 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -293,6 +293,7 @@ type destructor Destroy; override; procedure CheckAlarm(ctime: TDateTime); procedure Reset; virtual; + procedure Pause(ASeconds: integer); property Enabled: boolean read FEnabled write SetEnabled; property NextAlarm: TDateTime read FNextAlarm; { Interval is in milliseconds. } @@ -446,6 +447,7 @@ implementation uses strutils, math, + dateutils, fpg_imgfmt_bmp, fpg_stdimages, fpg_translations, @@ -1032,6 +1034,14 @@ begin Enabled := True; end; +procedure TfpgTimer.Pause(ASeconds: integer); +begin + if Enabled then + begin + FNextAlarm := incSecond(Now, ASeconds); + end; +end; + function fpgApplication: TfpgApplication; begin if not Assigned(uApplication) then -- cgit v1.2.3-70-g09d2 From f743e54453be1fbf9b7510b46ace93170ab5eabf Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 11 Oct 2010 11:27:51 +0200 Subject: fpgApplication.ProcessMessages now process other events (eg: timers) too. The DoMessagesPending() only processed OS events, now ProccessMessages processes all events like the real event loop does. This gives a more expected behaviour to developers that write blocking loops etc. --- src/corelib/fpg_main.pas | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index c89dc51d..08885567 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -1516,11 +1516,11 @@ end; procedure TfpgApplication.ProcessMessages; begin Flush; - while DoMessagesPending do - begin - WaitWindowMessage(0); - Flush; - end; +// while DoMessagesPending do // this blocked timers and other non-OS code +// begin + WaitWindowMessage(250); +// Flush; +// end; end; procedure TfpgApplication.SetMessageHook(AWidget: TObject; const AMsgCode: integer; AListener: TObject); -- cgit v1.2.3-70-g09d2 From 65b0e8c3546b2df6fb5ccab7addfeabd5ac4e2e6 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 11 Oct 2010 13:47:01 +0200 Subject: TfpgButton: experimental feature allowing multi-line text --- src/gui/fpg_button.pas | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_button.pas b/src/gui/fpg_button.pas index 7ef778ec..fbca006f 100644 --- a/src/gui/fpg_button.pas +++ b/src/gui/fpg_button.pas @@ -13,6 +13,9 @@ Description: Defines a push button control. + + TODO: + * multi-line button text. It must take into account image position as well. } unit fpg_button; @@ -62,6 +65,7 @@ type procedure SetAllowAllUp(const Value: boolean); procedure DoPush; procedure DoRelease(x, y: integer); + procedure SetAllowMultiLineText(const AValue: boolean); protected FImageMargin: integer; FImageSpacing: integer; @@ -72,6 +76,7 @@ type FFont: TfpgFont; FDefault: boolean; FState: integer; // 0 - normal // 1 - hover + FAllowMultiLineText: boolean; procedure SetShowImage(AValue: Boolean); procedure HandlePaint; override; procedure HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); override; @@ -85,6 +90,7 @@ type property AllowAllUp: boolean read FAllowAllUp write SetAllowAllUp default False; { Buttons behave like toggle buttons. This is an alias for GroupIndex > 0 } property AllowDown: Boolean read GetAllowDown write SetAllowDown; + property AllowMultiLineText: boolean read FAllowMultiLineText write SetAllowMultiLineText default False; property Default: boolean read FDefault write SetDefault default False; property Down: Boolean read FDown write SetDown; { The button will not show focus. It might also have a different down state (look). @@ -130,6 +136,7 @@ type property Align; property AllowAllUp; property AllowDown; + property AllowMultiLineText; property BackgroundColor default clButtonFace; property Default; property Down; @@ -308,6 +315,7 @@ begin FDefault := False; FAllowAllUp := False; FState := 0; + FAllowMultiLineText := False; end; destructor TfpgBaseButton.Destroy; @@ -515,6 +523,7 @@ var lBtnFlags: TFButtonFlags; clr: TfpgColor; img: TfpgImage; + lTextFlags: TFTextFlags; begin // inherited HandlePaint; Canvas.ClearClipRect; @@ -589,8 +598,33 @@ begin Canvas.DrawImage(ix + pofs, iy + pofs, img); img.Free; end; + end; - fpgStyle.DrawString(Canvas, tx+pofs, ty+pofs, Text, Enabled); + + { EXPERIMENTAL: multi-line button text + Only in this condition do we support multi-line text } + if AllowMultiLineText and (FImageLayout = ilImageLeft) then + begin + r.SetRect(0, 0, Width, Height); + InflateRect(r, -3, -3); { same as focus rectangle } + if FShowImage and Assigned(FImage) then + begin + ix := FImageMargin + FImage.Width; + if FImageSpacing > 0 then + ix += FImageSpacing; + OffsetRect(r, ix, 0); + r.Width -= ix; + end; + if FDown then + OffsetRect(r, pofs, pofs); + + lTextFlags := [txtHCenter, txtVCenter{, txtWrap}]; + if not Enabled then + lTextFlags += [txtDisabled]; + Canvas.DrawText(r, Text, lTextFlags); + end + else + fpgStyle.DrawString(Canvas, tx+pofs, ty+pofs, Text, Enabled); end; procedure TfpgBaseButton.DoPush; @@ -650,6 +684,13 @@ begin FClicked := False; end; +procedure TfpgBaseButton.SetAllowMultiLineText(const AValue: boolean); +begin + if FAllowMultiLineText = AValue then exit; + FAllowMultiLineText := AValue; + Repaint; +end; + procedure TfpgBaseButton.HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); begin if (keycode = keyReturn) or (keycode = keySpace) or (keycode = keyPEnter) then -- cgit v1.2.3-70-g09d2 From a8051f82e0d714d9bb20e92c29d45e8857217597 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 12 Oct 2010 09:14:22 +0200 Subject: listbox: Text property is now a read/write property --- src/gui/fpg_listbox.pas | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_listbox.pas b/src/gui/fpg_listbox.pas index 1b5c897b..68f15080 100644 --- a/src/gui/fpg_listbox.pas +++ b/src/gui/fpg_listbox.pas @@ -117,6 +117,8 @@ type TfpgTextListBox = class(TfpgBaseListBox) protected FItems: TStringList; + function GetText: string; virtual; + procedure SetText(const AValue: string); virtual; procedure DrawItem(num: integer; rect: TfpgRect; flags: integer); override; procedure Exchange(Index1, Index2: Integer); override; procedure HandleKeyChar(var AText: TfpgChar; var shiftstate: TShiftState; var consumed: boolean); override; @@ -125,7 +127,7 @@ type constructor Create(AOwner: TComponent); override; destructor Destroy; override; function ItemCount: integer; override; - function Text: string; + property Text: string read GetText write SetText stored False; end; @@ -859,6 +861,35 @@ end; { TfpgTextListBox } +function TfpgTextListBox.GetText: string; +begin + if (ItemCount > 0) and (FocusItem <> -1) then + result := FItems[FocusItem] + else + result := ''; +end; + +procedure TfpgTextListBox.SetText(const AValue: string); +var + i: integer; +begin + if AValue = '' then + SetFocusItem(-1) // nothing selected + else + begin + for i := 0 to FItems.Count-1 do + begin + if SameText(Items.Strings[i], AValue) then + begin + SetFocusItem(i); + Exit; //==> + end; + end; + // if we get here, we didn't find a match + SetFocusItem(-1); + end; +end; + procedure TfpgTextListBox.DrawItem(num: integer; rect: TfpgRect; flags: integer); begin //if num < 0 then @@ -909,14 +940,6 @@ begin result := FItems.Count; end; -function TfpgTextListBox.Text: string; -begin - if (ItemCount > 0) and (FocusItem <> -1) then - result := FItems[FocusItem] - else - result := ''; -end; - { TColorItem } constructor TColorItem.Create (const AColorName: string; const AColorValue: TfpgColor); -- cgit v1.2.3-70-g09d2 From 8e88bd4e634195292035258a7ef759ddb8a8f6d4 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 12 Oct 2010 09:14:59 +0200 Subject: listbox: published a few more events and the Text property --- src/gui/fpg_listbox.pas | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_listbox.pas b/src/gui/fpg_listbox.pas index 68f15080..6a336a5c 100644 --- a/src/gui/fpg_listbox.pas +++ b/src/gui/fpg_listbox.pas @@ -148,8 +148,15 @@ type property PopupFrame; property ShowHint; property TabOrder; + property Text; property TextColor; + property OnChange; property OnDoubleClick; + property OnEnter; + property OnExit; + property OnKeyPress; + property OnScroll; + property OnSelect; property OnShowHint; end; -- cgit v1.2.3-70-g09d2 From ae8f7295c64e3ed8b5e506f59c0d1782328baa52 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 12 Oct 2010 09:25:20 +0200 Subject: minor code formatting --- src/corelib/fpg_widget.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index a7dee237..f2d220db 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -66,7 +66,7 @@ type procedure SetActiveWidget(const AValue: TfpgWidget); function IsShowHintStored: boolean; procedure SetFormDesigner(const AValue: TObject); - procedure SetAlign(const AValue: TAlign); + procedure SetAlign(const AValue: TAlign); protected procedure MsgPaint(var msg: TfpgMessageRec); message FPGM_PAINT; procedure MsgResize(var msg: TfpgMessageRec); message FPGM_RESIZE; -- cgit v1.2.3-70-g09d2 From 59f9a7513fe58a046b789caf881e432b6f3abdea Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 15 Oct 2010 11:10:27 +0200 Subject: TfpgMemo now has BeginUpdate and EndUpdate methods This allows you to add/delete many lines and the memo only repaints once. --- src/corelib/fpg_widget.pas | 2 +- src/gui/fpg_memo.pas | 50 +++++++++++++++++++++++++++++++--------------- 2 files changed, 35 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index f2d220db..f0c7f514 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -137,7 +137,7 @@ type procedure InternalHandleShow; virtual; procedure HandleHide; virtual; procedure MoveAndResize(ALeft, ATop, AWidth, AHeight: TfpgCoord); - procedure RePaint; + procedure RePaint; virtual; { property events } property OnClick: TNotifyEvent read FOnClick write FOnClick; property OnDoubleClick: TMouseButtonEvent read FOnDoubleClick write FOnDoubleClick; diff --git a/src/gui/fpg_memo.pas b/src/gui/fpg_memo.pas index dccc5f55..308a37a5 100644 --- a/src/gui/fpg_memo.pas +++ b/src/gui/fpg_memo.pas @@ -62,6 +62,7 @@ type FPopupMenu: TfpgPopupMenu; FDefaultPopupMenu: TfpgPopupMenu; FReadOnly: Boolean; + FUpdateCount: integer; function GetFontDesc: string; procedure SetFontDesc(const AValue: string); procedure RecalcLongestLine; @@ -106,6 +107,7 @@ type procedure HandleMouseEnter; override; procedure HandleMouseExit; override; procedure HandleHide; override; + procedure RePaint; override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; @@ -115,6 +117,8 @@ type procedure CutToClipboard; procedure PasteFromClipboard; procedure Clear; + procedure BeginUpdate; + procedure EndUpdate; property CursorLine: integer read FCursorLine write SetCursorLine; property Font: TfpgFont read FFont; property LineHeight: integer read FLineHeight; @@ -168,7 +172,6 @@ type TfpgMemoStrings = class(TStringList) protected Memo: TfpgMemo; - procedure RefreshMemo; public constructor Create(AMemo: TfpgMemo); reintroduce; destructor Destroy; override; @@ -180,15 +183,6 @@ type { TfpgMemoStrings } -procedure TfpgMemoStrings.RefreshMemo; -begin - if Assigned(Memo) and (Memo.HasHandle) then - begin - Memo.Invalidate; - Memo.UpdateScrollBars; - end; -end; - constructor TfpgMemoStrings.Create(AMemo: TfpgMemo); begin inherited Create; @@ -203,28 +197,30 @@ end; function TfpgMemoStrings.Add(const s: String): Integer; begin + Memo.BeginUpdate; Result := inherited Add(s); - RefreshMemo; + Memo.EndUpdate; end; procedure TfpgMemoStrings.Delete(Index: Integer); begin -// writeln('Delete''s Index = ', Index); + Memo.BeginUpdate; inherited Delete(Index); - RefreshMemo; + Memo.EndUpdate; end; procedure TfpgMemoStrings.Insert(Index: Integer; const S: string); begin -// writeln('Insert''s Index = ', Index); + Memo.BeginUpdate; inherited Insert(Index, S); - RefreshMemo; + Memo.EndUpdate; end; procedure TfpgMemoStrings.Clear; begin + Memo.BeginUpdate; inherited Clear; - RefreshMemo; + Memo.EndUpdate; end; @@ -447,6 +443,7 @@ begin FPopupMenu := nil; FDefaultPopupMenu := nil; FReadOnly := False; + FUpdateCount := 0; FLines := TfpgMemoStrings.Create(self); FFirstLine := 0; @@ -854,6 +851,12 @@ begin inherited; end; +procedure TfpgMemo.RePaint; +begin + if FUpdateCount <= 0 then + inherited RePaint; +end; + procedure TfpgMemo.VScrollBarMove(Sender: TObject; position: integer); begin if FFirstLine <> position then @@ -1602,6 +1605,21 @@ begin Repaint; end; +procedure TfpgMemo.BeginUpdate; +begin + Inc(FUpdateCount); +end; + +procedure TfpgMemo.EndUpdate; +begin + Dec(FUpdateCount); + if FUpdateCount <= 0 then + begin + Invalidate; + UpdateScrollBars; + end; +end; + function TfpgMemo.GetText: TfpgString; var n: integer; -- cgit v1.2.3-70-g09d2 From 4d32ba06c7dbba4d4092056b01e985c12ed2041f Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 15 Oct 2010 11:11:12 +0200 Subject: fpgApplication.OnIdle was never triggered under Windows. --- src/corelib/fpg_main.pas | 2 +- src/corelib/gdi/fpg_gdi.pas | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index 08885567..d4f81e82 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -1603,7 +1603,7 @@ end; procedure TfpgApplication.RunMessageLoop; begin - WaitWindowMessage(1000); + WaitWindowMessage(2000); end; { TfpgFont } diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index a9aa34a1..8780f7f6 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -1182,6 +1182,8 @@ begin if (atimeoutms >= 0) and (not DoMessagesPending) then begin + if Assigned(FOnIdle) then + OnIdle(self); if atimeoutms > 0 then timerid := Windows.SetTimer(ltimerWnd, 1, atimeoutms, nil) else -- cgit v1.2.3-70-g09d2 From 7e40fc988979504889b2cd409c377a3fa589e550 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 15 Oct 2010 11:11:40 +0200 Subject: Minor improvement in fpgCheckTimers procedure. --- src/corelib/fpg_main.pas | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index d4f81e82..819e1688 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -502,16 +502,14 @@ var ctime: TDateTime; begin ctime := now; - i := 0; - while i < fpgTimers.Count do + i := fpgTimers.Count; + while i > 0 do begin + dec(i); if fpgTimers[i] = nil then fpgTimers.Delete(i) else - begin TfpgTimer(fpgTimers[i]).CheckAlarm(ctime); - Inc(i); - end; end; end; -- cgit v1.2.3-70-g09d2 From 2f92817a1cbd52906c3e3395e9406c655903eb99 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 15 Oct 2010 11:13:37 +0200 Subject: Memo: introduced a new CursorPos property You can now set the Cursor X position via code. --- src/gui/fpg_memo.pas | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src') diff --git a/src/gui/fpg_memo.pas b/src/gui/fpg_memo.pas index 308a37a5..41587135 100644 --- a/src/gui/fpg_memo.pas +++ b/src/gui/fpg_memo.pas @@ -93,6 +93,7 @@ type procedure ShowDefaultPopupMenu(const x, y: integer; const shiftstate: TShiftState); virtual; procedure SetReadOnly(const AValue: Boolean); procedure ResetSelectionVariables; + procedure SetCursorPos(const AValue: integer); protected procedure HandleKeyChar(var AText: TfpgChar; var shiftstate: TShiftState; var consumed: boolean); override; procedure HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); override; @@ -119,6 +120,7 @@ type procedure Clear; procedure BeginUpdate; procedure EndUpdate; + property CursorPos: integer read FCursorPos write SetCursorPos; property CursorLine: integer read FCursorLine write SetCursorLine; property Font: TfpgFont read FFont; property LineHeight: integer read FLineHeight; @@ -422,6 +424,29 @@ begin FMouseDragging := False; end; +procedure TfpgMemo.SetCursorPos(const AValue: integer); +var + x: integer; +begin + if FCursorPos = AValue then + exit; + + if AValue = 0 then + FCursorPos := AValue + else + begin + x := UTF8Length(FLines[CursorLine]); + if AValue > x then { can't set Cursorpos greater than number of characters on that line } + FCursorPos := x + else + FCursorPos := AValue; + end; + FSelStartPos := FCursorPos; + FSelEndPos := FCursorPos; + AdjustCursor; + Repaint; +end; + constructor TfpgMemo.Create(AOwner: TComponent); begin inherited Create(AOwner); -- cgit v1.2.3-70-g09d2 From c0533e4dd6decd6049bcd8ef04b66fa6f743bfd0 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 15 Oct 2010 11:14:54 +0200 Subject: memo CursorLine property improvements and sanity checks * The selection variables were not updated before * Little error checking was done, so you could get index out of bounds errors. --- src/gui/fpg_memo.pas | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_memo.pas b/src/gui/fpg_memo.pas index 41587135..789da3c3 100644 --- a/src/gui/fpg_memo.pas +++ b/src/gui/fpg_memo.pas @@ -246,13 +246,18 @@ var MaxLine: integer; yp: integer; begin - if (aValue < 0) or (aValue = FCursorLine) then + if (aValue < 0) or (aValue = FCursorLine) or (AValue > FLines.Count-1) then Exit; // wrong value + if aValue < FFirstLine then begin FFirstLine := aValue; // moves the selected line to the top of the displayed rectangle FCursorLine := aValue; FCursorPos := 0; + FSelStartPos := FCursorPos; + FSelStartLine := FCursorLine; + FSelEndLine := -1; + AdjustCursor; RePaint; Exit; end; @@ -272,15 +277,21 @@ begin FFirstLine := aValue; FCursorLine := aValue; FCursorPos := 0; + FSelStartPos := FCursorPos; + FSelStartLine := FCursorLine; + FSelEndLine := -1; + AdjustCursor; RePaint; - Exit; end else begin FCursorLine := aValue; FCursorPos := 0; + FSelStartPos := FCursorPos; + FSelStartLine := FCursorLine; + FSelEndLine := -1; + AdjustCursor; RePaint; - Exit; end; end; -- cgit v1.2.3-70-g09d2 From 2a339e9f834b8641be87cf2d518a9e5a47752dec Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 15 Oct 2010 12:05:27 +0200 Subject: fpg_edit: removed pointless property declarations Those properties are exactly the same visibility as inherited classes, so no point in simply listing them again. TextColor was the exception, it was public, so you can't decrease the visibility in descendants. --- src/gui/fpg_edit.pas | 9 --------- 1 file changed, 9 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_edit.pas b/src/gui/fpg_edit.pas index 3d72fa66..80558c3a 100644 --- a/src/gui/fpg_edit.pas +++ b/src/gui/fpg_edit.pas @@ -229,16 +229,7 @@ type property HideSelection; // property MaxLength; { probably MaxValue and MinValue } property TabOrder; - property TextColor; property ShowThousand: boolean read FShowThousand write FShowThousand default False; - property OnChange; - property OnEnter; - property OnExit; - property OnKeyPress; - property OnMouseEnter; - property OnMouseExit; - property OnPaint; - property OnShowHint; public constructor Create(AOwner: TComponent); override; published -- cgit v1.2.3-70-g09d2 From 820ec55546aafe702e692d5c5e4f28d82ecaf162 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 15 Oct 2010 12:06:43 +0200 Subject: BaseNumericEdit did not specify the default property color. By defining the default color, the UI Designer can omit that line in generated code, if the color did not change. --- src/gui/fpg_edit.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_edit.pas b/src/gui/fpg_edit.pas index 80558c3a..25a31a1d 100644 --- a/src/gui/fpg_edit.pas +++ b/src/gui/fpg_edit.pas @@ -225,7 +225,7 @@ type Still to implement !!} property CustomDecimalSeparator: TfpgChar read FDecimalseparator write SetDecimalSeparator; property CustomThousandSeparator: TfpgChar read FThousandSeparator write SetThousandSeparator; - property NegativeColor: TfpgColor read FNegativeColor write SetNegativeColor; + property NegativeColor: TfpgColor read FNegativeColor write SetNegativeColor default clRed; property HideSelection; // property MaxLength; { probably MaxValue and MinValue } property TabOrder; -- cgit v1.2.3-70-g09d2 From e042d56b6bd9b2f2c49368919162e032be1b8808 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 15 Oct 2010 12:08:40 +0200 Subject: BaseNumericEdit NegativeColor property was used instead of field variable. The property does more that just set the color. It calls FormatEdit, which changes the color of TextColor property. This meant the parent color was never stored in FOldColor field variable. --- src/gui/fpg_edit.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_edit.pas b/src/gui/fpg_edit.pas index 25a31a1d..f6c7e6b4 100644 --- a/src/gui/fpg_edit.pas +++ b/src/gui/fpg_edit.pas @@ -1803,8 +1803,8 @@ begin FAlignment := taRightJustify; FDecimalSeparator := DecimalSeparator; FThousandSeparator := ThousandSeparator; - NegativeColor := clRed; - OldColor := TextColor; + FNegativeColor := clRed; + FOldColor := TextColor; end; { TfpgEditInteger } -- cgit v1.2.3-70-g09d2 From 55f4f81817226a13f4d77e222e7286fbc944a7ca Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 21 Oct 2010 16:53:56 +0200 Subject: GDI: Removed definition of MW_MOUSEWHEEL. it already exists in FPC. --- src/corelib/gdi/fpg_gdi.pas | 1 - src/corelib/x11/fpg_x11.pas | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index 8780f7f6..ef5251f7 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -40,7 +40,6 @@ uses { Constants missing on windows unit } const - WM_MOUSEWHEEL = $020a; // we could remove this since FPC 2.0.4 VER_PLATFORM_WIN32_CE = 3; CLEARTYPE_QUALITY = 5; diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 837b2d34..e79e820e 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1107,6 +1107,7 @@ begin FActionType := GetAtomFromDropAction(lDropAction); end; + { Notify widget of drag status, so it can update its look } if lAccept then begin FDropPos.X := dx; -- cgit v1.2.3-70-g09d2 From ea885c0f15852e6aeee9316908ef8ca67feb5ea5 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 21 Oct 2010 16:55:45 +0200 Subject: changed system color for all inactive color variables. This applies to: clInactiveSel, clUnset, clGridInactiveSel I wasn't fond of the purple / faded blue color from before. --- src/corelib/fpg_main.pas | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index 819e1688..8ae6da5e 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -1895,7 +1895,7 @@ begin fpgSetNamedColor(clText4, $404000); fpgSetNamedColor(clSelection, $08246A); fpgSetNamedColor(clSelectionText, $FFFFFF); - fpgSetNamedColor(clInactiveSel, $D0D0FF); + fpgSetNamedColor(clInactiveSel, $99A6BF); // win 2000 buttonface = $D4D0C8 fpgSetNamedColor(clInactiveSelText, $000000); fpgSetNamedColor(clScrollBar, $E8E4DB); fpgSetNamedColor(clButtonFace, $D5D2CD); @@ -1906,13 +1906,13 @@ begin fpgSetNamedColor(clInactiveWgFrame, $A0A0A0); fpgSetNamedColor(clTextCursor, $000000); fpgSetNamedColor(clChoiceListBox, $E8E8E8); - fpgSetNamedColor(clUnset, $D0D0FF); + fpgSetNamedColor(clUnset, $99A6BF); // dull (gray) blue fpgSetNamedColor(clMenuText, $000000); fpgSetNamedColor(clMenuDisabled, $909090); fpgSetNamedColor(clHintWindow, $FFFFBF); fpgSetNamedColor(clGridSelection, $08246A); // same as clSelection fpgSetNamedColor(clGridSelectionText, $FFFFFF); // same as clSelectionText - fpgSetNamedColor(clGridInactiveSel, $D0D0FF); // same as clInactiveSel + fpgSetNamedColor(clGridInactiveSel, $99A6BF); // same as clInactiveSel fpgSetNamedColor(clGridInactiveSelText, $000000); // same as clInactiveSelText fpgSetNamedColor(clSplitterGrabBar, $839EFE); // pale blue -- cgit v1.2.3-70-g09d2 From bf8a6f279217408bd21b9bfbadd8416c2b850cb8 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 25 Oct 2010 14:53:44 +0200 Subject: Improved event firing of OnDoubleClick and OnClick * Single click produces one OnClick event * On a Double Click in produces a OnClick, then a OnDoubleClick event. Old behaviour used to procuder yet another OnClick at the end. This is not needed. * OnMouseDown and OnMouseUp events behaviour has not changed. The reason we introduce the FOnClickPending instead of fully handling the events in TfpgWidget.MsgMouseUp is because a TfpgButton has slightly different behavior (eg: When clicking on a button, keep mouse down, and move mouse out of button rectangle, then an OnClick must not fire.) The extra FOnClickPending allows us to toggle this behaviour of HandleLButtonUp (which normally fires the OnClick event) --- src/corelib/fpg_widget.pas | 7 +++++-- src/gui/fpg_button.pas | 11 +++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index f0c7f514..2afb667a 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -99,6 +99,7 @@ type FBackgroundColor: TfpgColor; FTextColor: TfpgColor; FIsContainer: Boolean; + FOnClickPending: Boolean; procedure SetAcceptDrops(const AValue: boolean); virtual; function GetOnShowHint: THintEvent; virtual; procedure SetOnShowHint(const AValue: THintEvent); virtual; @@ -470,6 +471,7 @@ begin FTextColor := clText1; FAcceptDrops := False; FDragActive := False; + FOnClickPending := False; inherited Create(AOwner); @@ -670,6 +672,7 @@ begin case msg.Params.mouse.Buttons of MOUSE_LEFT: begin + FOnClickPending := True; mb := mbLeft; if uLastClickWidget = self then IsDblClick := ((fpgGetTickCount - uLastClickTime) <= DOUBLECLICK_MS) @@ -683,7 +686,7 @@ begin uLastClickTime := fpgGetTickCount; if IsDblClick then begin - + FOnClickPending := False; { When Double Click occurs we don't want single click } HandleDoubleClick(msg.Params.mouse.x, msg.Params.mouse.y, msg.Params.mouse.Buttons, msg.Params.mouse.shiftstate); if Assigned(FOnDoubleClick) then FOnDoubleClick(self, mb, msg.Params.mouse.shiftstate, @@ -1032,7 +1035,7 @@ end; procedure TfpgWidget.HandleLMouseUp(x, y: integer; shiftstate: TShiftState); begin - if Assigned(FOnClick) then + if FOnClickPending and Assigned(FOnClick) then FOnClick(self); end; diff --git a/src/gui/fpg_button.pas b/src/gui/fpg_button.pas index fbca006f..cc9866c3 100644 --- a/src/gui/fpg_button.pas +++ b/src/gui/fpg_button.pas @@ -664,7 +664,7 @@ begin FDown := False; RePaint; fpgApplication.ProcessMessages; - if PtInRect(r, Point(x, y)) then + if PtInRect(r, Point(x, y)) and FOnClickPending then Click; end; end @@ -675,7 +675,7 @@ begin FDown := False; RePaint; fpgApplication.ProcessMessages; - if PtInRect(r, Point(x, y)) then + if PtInRect(r, Point(x, y)) and FOnClickPending then Click; end; end; @@ -785,8 +785,11 @@ begin if Assigned(FCommand) then // ICommand takes preference to OnClick FCommand.Execute - else if Assigned(OnClick) then - OnClick(self); + else + begin + if Assigned(OnClick) then + OnClick(self); + end; end; function TfpgBaseButton.GetCommand: ICommand; -- cgit v1.2.3-70-g09d2 From 5201c2c160951a540cee54b678304ff94149401a Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 26 Oct 2010 17:22:52 +0200 Subject: X11: improved DND debug messages I also made sure that all writeln() statements are wrapped in IFDEF's. --- src/corelib/x11/fpg_x11.pas | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index e79e820e..08d721b4 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -928,7 +928,7 @@ var itm: TDNDSrcType; begin {$IFDEF DNDDEBUG} - writeln('XdndEnter event received!'); + writeln('TfpgX11Application.HandleDNDenter'); {$ENDIF} ResetDNDVariables; FSrcWinHandle := ASource; @@ -1001,7 +1001,7 @@ var wg: TfpgWidget; begin {$IFDEF DNDDEBUG} - writeln('XdndLeave event received!'); + writeln('TfpgX11Application.HandleDNDleave'); {$ENDIF} if FLastDropTarget <> 0 then { 0 would be first time in, so there is no last window } begin @@ -1035,7 +1035,7 @@ var lMimeList: TStringList; begin {$IFDEF DNDDEBUG} - writeln('XdndPosition event received!'); + writeln('TfpgX11Application.HandleDNDposition (toplevel window = ', ATopLevelWindow.Name, ')'); {$ENDIF} lAccept := False; FSrcWinHandle := ASource; @@ -1157,7 +1157,7 @@ var Msg: TXEvent; begin {$IFDEF DNDDEBUG} - writeln('XdndDrop event received!'); + writeln('TfpgX11Application.HandleDNDdrop'); {$ENDIF} { TODO: Must XConvertSelection always be called? } XConvertSelection(FDisplay, XdndSelection, FDNDDataType, XdndSelection, ATopLevelWindow.FWinHandle, ATimestamp); @@ -1187,7 +1187,7 @@ var wg: TfpgWidget; begin {$IFDEF DNDDEBUG} - writeln('XdndSelection message received!'); + writeln('TfpgX11Application.HandleDNDselection'); {$ENDIF} { do not get data yet, just see how much there is } XGetWindowProperty(FDisplay, ev.xselection.requestor, @@ -1759,11 +1759,17 @@ begin { XDND protocol - XdndEnter } else if Assigned(w) and (ev.xclient.message_type = XdndEnter) then begin + {$IFDEF DNDDEBUG} + writeln('ClientMessage.XdndEnter event received'); + {$ENDIF} HandleDNDenter(w, ev.xclient.data.l[0], ev); end { XDND protocol - XdndPosition } else if Assigned(w) and (ev.xclient.message_type = XdndPosition) then begin + {$IFDEF DNDDEBUG} + writeln('ClientMessage.XdndPosition event received'); + {$ENDIF} HandleDNDposition(w, // top level window ev.xclient.data.l[0], // Source window (ev.xclient.data.l[2] and $FFFF0000) shr 16, // x_root @@ -1775,7 +1781,7 @@ begin else if Assigned(w) and (ev.xclient.message_type = XdndStatus) then begin {$IFDEF DNDDEBUG} - writeln('XdndStatus event received!'); + writeln('ClientMessage.XdndStatus event received'); {$ENDIF} if Assigned(Drag) then begin @@ -1793,22 +1799,32 @@ begin { XDND protocol - XdndLeave } else if Assigned(w) and (ev.xclient.message_type = XdndLeave) then begin + {$IFDEF DNDDEBUG} + writeln('ClientMessage.XdndLeave event received'); + {$ENDIF} HandleDNDleave(w, ev.xclient.data.l[0]); end { XDND protocol - XdndDrop } else if Assigned(w) and (ev.xclient.message_type = XdndDrop) then begin + {$IFDEF DNDDEBUG} + writeln('ClientMessage.XdndDrop event received'); + writeln(' ClassName = ', w.ClassName); + writeln(' Name = ', w.Name); + {$ENDIF} HandleDNDdrop(w, ev.xclient.data.l[0], ev.xclient.data.l[2]); end { XDND protocol - XdndFinished } else if Assigned(w) and (ev.xclient.message_type = XdndFinished) then begin {$IFDEF DNDDEBUG} - writeln('XdndFinished event received!'); + writeln('ClientMessage.XdndFinished event received'); {$ENDIF} if Assigned(Drag) then begin + {$IFDEF DNDDEBUG} writeln('Freeing Drag Object'); + {$ENDIF} FreeAndNil(FDrag); end; end; @@ -1855,6 +1871,9 @@ begin { Handle XDND data } if ev.xselection._property = XdndSelection then begin + {$IFDEF DNDDEBUG} + writeln('XdndSelection message received'); + {$ENDIF} HandleDNDSelection(ev); end else { Handle X Selections - clipboard data } @@ -1865,13 +1884,17 @@ begin begin if ev.xselectionrequest.selection = XdndSelection then begin + {$IFDEF DNDDEBUG} writeln('found a XdndSelection request'); + {$ENDIF} if Assigned(Drag) then Drag.HandleSelectionRequest(ev); end else begin + {$IFDEF DEBUG} writeln('found a clipboard selection request'); + {$ENDIF} ProcessSelectionRequest(ev); end; end; -- cgit v1.2.3-70-g09d2 From 60a7c674dc29a8f6fdbca1e163618d456a53a8d9 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 26 Oct 2010 17:24:42 +0200 Subject: X11: make sure that AcceptDrops are True before we fire OnDragDrop There was a bug where if the component had a OnDragDrop event handler and AcceptDrops was False, it still triggered the event. Not any more. --- src/corelib/x11/fpg_x11.pas | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 08d721b4..0209af14 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1189,6 +1189,13 @@ begin {$IFDEF DNDDEBUG} writeln('TfpgX11Application.HandleDNDselection'); {$ENDIF} + if FLastDropTarget <> 0 then { 0 would be first time in, so there is no last window } + begin + wg := FindWindowByHandle(FLastDropTarget) as TfpgWidget; + if not wg.AcceptDrops then + Exit; + end; + { do not get data yet, just see how much there is } XGetWindowProperty(FDisplay, ev.xselection.requestor, ev.xselection._property, 0, 0, @@ -1221,8 +1228,11 @@ begin if FLastDropTarget <> 0 then { 0 would be first time in, so there is no last window } begin wg := FindWindowByHandle(FLastDropTarget) as TfpgWidget; - if Assigned(wg.OnDragDrop) then - wg.OnDragDrop(nil, nil, FDropPos.X, FDropPos.Y, s); + if wg.AcceptDrops then + begin + if Assigned(wg.OnDragDrop) then + wg.OnDragDrop(nil, nil, FDropPos.X, FDropPos.Y, s); + end; end; {$IFDEF DNDDEBUG} writeln(' s = ', s); @@ -1730,7 +1740,7 @@ begin { one use is for message blockings for modal windows, or XDND etc. } X.ClientMessage: begin - w := FindWindowByBackupHandle(ev.xclient.window); + w := FindWindowByHandle(ev.xclient.window); if not Assigned(w) then ReportLostWindow(ev); -- cgit v1.2.3-70-g09d2 From 13b80a4a295a7f69d61e2fb8d02d5f457dcebef7 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 26 Oct 2010 17:29:33 +0200 Subject: X11: in HandleDNDposition() we never recursed through all children The bug was that it only checked for the immediate children of the toplevel window. It never recursed through all levels of children finding the correct child the mouse cursor is over. This is now fixed. This also allows embedded frames or forms to work with DND. --- src/corelib/x11/fpg_x11.pas | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 0209af14..37c2b507 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1021,6 +1021,13 @@ var Msg: TXEvent; dx, dy, dx2, dy2: cint; child: TWindow; + prevchild: TWindow; + + ret_root: TfpgWinHandle; + ret_child: TfpgWinHandle; + root_x, root_y: integer; + child_x, child_y: integer; + s: string; i: integer; lTargetWinHandle: TWindow; @@ -1050,25 +1057,30 @@ begin writeln(' x_root: ', x_root, ' y_root: ', y_root); {$ENDIF} - // query to see if we accept to be drop target + // Find window under cursor, and position of cursor inside that window XTranslateCoordinates(FDisplay, XDefaultRootWindow(FDisplay), ATopLevelWindow.WinHandle, - x_root, y_root, @dx, @dy, @child); - - {$IFDEF DNDDEBUG} - writeln(Format('x:%d y:%d child:%d', [dx, dy, child])); - {$ENDIF} - - if child <> 0 then + x_root, y_root, @dx, @dy, @ret_child); + child := ret_child; + prevchild := ATopLevelWindow.WinHandle; + while ret_child <> 0 do // If we have chidren, iterate until we reach the top most child begin - w := FindWindowByHandle(child); + child := ret_child; dx2 := dx; dy2 := dy; - XTranslateCoordinates(FDisplay, ATopLevelWindow.WinHandle, w.WinHandle, - dx2, dy2, @dx, @dy, @child); - end + XTranslateCoordinates(FDisplay, prevchild, child, + dx2, dy2, @dx, @dy, @ret_child); + prevchild := child; + end; + + if child <> 0 then + w := FindWindowByHandle(child) else w := ATopLevelWindow; + {$IFDEF DNDDEBUG} + writeln(Format('x:%d y:%d child:%d (%x)', [dx, dy, w.WinHandle, w.WinHandle])); + {$ENDIF} + if Assigned(w) then begin lTargetWinHandle := w.WinHandle; -- cgit v1.2.3-70-g09d2 From 6f3e4440aeb30ff648b09d01edf5099f4bb5d052 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 27 Oct 2010 12:57:29 +0200 Subject: X11 DND: Incorrectly assumed there will always be a 'text/plain' mime-type If the developer did not set the AMimeChoice in OnDragEnter, then the incorrect default could have been used. By default it used to deflaut to 'text/plain' and never actually checked the mime-type list to see if that exists. :-( Now the default AMimeChoice is set the the first mime-type in the mime-type list. This keeps with the methodology that the mime-type list must be from most specific to least specific mime types. --- src/corelib/x11/fpg_x11.pas | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 37c2b507..9338fddf 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1101,6 +1101,7 @@ begin wg2.OnDragLeave(nil); end; fillchar(msgp, sizeof(msgp), 0); + { Notify the widget so it can reset its looks if needed } fpgPostMessage(nil, wg2, FPGM_DROPEXIT, msgp); end; end; @@ -1113,6 +1114,9 @@ begin lMimeList := TStringList.Create; for i := 0 to FDNDTypeList.Count-1 do lMimeList.Add(TDNDSrcType(FDNDTypeList[i]).Name); + { Use the first mime-type as the default option presented. The mime-list + should always be from most specific to least specific. } + lMimeChoice := lMimeList[0]; { TODO: We need to populate the Source parameter. } wg.OnDragEnter(self, nil, lMimeList, lMimeChoice, lDropAction, lAccept); lMimeList.Free; @@ -1133,6 +1137,7 @@ begin end; end; + FDNDDataType := None; for i := 0 to FDNDTypeList.Count-1 do begin { This list must be from most specific to least specific } -- cgit v1.2.3-70-g09d2 From 160cb66b4bf47fc26743316b07cfbad96c3ee38d Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 27 Oct 2010 13:10:15 +0200 Subject: Renamed TfpgWindowBase.DoEnabledDrops() to DoDNDEnabled() This will hopefully reduce the confusion between the other TfpgWidget.AcceptDrops property - they had too similar names. * Applied rename changes to all other descendants too * Updated DND demo project --- examples/gui/drag_n_drop/dndexample.lpr | 2 +- src/corelib/fpg_base.pas | 2 +- src/corelib/gdi/fpg_gdi.pas | 4 ++-- src/corelib/x11/fpg_x11.pas | 6 +++--- src/gui/fpg_form.pas | 16 +++++++++------- 5 files changed, 16 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/examples/gui/drag_n_drop/dndexample.lpr b/examples/gui/drag_n_drop/dndexample.lpr index 706cfd42..ace8d2ea 100644 --- a/examples/gui/drag_n_drop/dndexample.lpr +++ b/examples/gui/drag_n_drop/dndexample.lpr @@ -154,7 +154,7 @@ begin SetPosition(316, 186, 512, 429); WindowTitle := 'Drop Site Demo'; Hint := ''; - EnableDrops := True; + DNDEnabled := True; Bevel1 := TfpgPanel.Create(self); with Bevel1 do diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index c08bea71..143238cf 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -445,7 +445,7 @@ type function DoWindowToScreen(ASource: TfpgWindowBase; const AScreenPos: TPoint): TPoint; virtual; abstract; procedure DoSetWindowTitle(const ATitle: string); virtual; abstract; procedure DoSetMouseCursor; virtual; abstract; - procedure DoEnableDrops(const AValue: boolean); virtual; abstract; + procedure DoDNDEnabled(const AValue: boolean); virtual; abstract; procedure SetParent(const AValue: TfpgWindowBase); virtual; function GetParent: TfpgWindowBase; virtual; function GetCanvas: TfpgCanvasBase; virtual; diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index ef5251f7..db549a2c 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -167,7 +167,7 @@ type //procedure MoveToScreenCenter; override; procedure DoSetWindowTitle(const ATitle: string); override; procedure DoSetMouseCursor; override; - procedure DoEnableDrops(const AValue: boolean); override; + procedure DoDNDEnabled(const AValue: boolean); override; property WinHandle: TfpgWinHandle read FWinHandle; public constructor Create(AOwner: TComponent); override; @@ -1635,7 +1635,7 @@ begin SetCursor(hc); end; -procedure TfpgGDIWindow.DoEnableDrops(const AValue: boolean); +procedure TfpgGDIWindow.DoDNDEnabled(const AValue: boolean); begin // TODO: still needs to be implemented end; diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 9338fddf..9d689f4a 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -230,7 +230,7 @@ type function DoWindowToScreen(ASource: TfpgWindowBase; const AScreenPos: TPoint): TPoint; override; procedure DoUpdateWindowPosition; override; procedure DoSetMouseCursor; override; - procedure DoEnableDrops(const AValue: boolean); override; + procedure DoDNDEnabled(const AValue: boolean); override; property WinHandle: TfpgWinHandle read FWinHandle; public constructor Create(AOwner: TComponent); override; @@ -2130,7 +2130,7 @@ begin if QueueEnabledDrops then begin writeln('QueueEnableDrop....'); - DoEnableDrops(True); + DoDNDEnabled(True); end; end; @@ -2364,7 +2364,7 @@ begin FMouseCursorIsDirty := False; end; -procedure TfpgX11Window.DoEnableDrops(const AValue: boolean); +procedure TfpgX11Window.DoDNDEnabled(const AValue: boolean); begin // notify XDND protocol that we can handle DND if AValue then diff --git a/src/gui/fpg_form.pas b/src/gui/fpg_form.pas index f465e09e..2eb6e899 100644 --- a/src/gui/fpg_form.pas +++ b/src/gui/fpg_form.pas @@ -51,8 +51,8 @@ type FOnHide: TNotifyEvent; FOnShow: TNotifyEvent; FOnHelp: TfpgHelpEvent; - FEnableDrops: boolean; - procedure SetEnableDrops(const AValue: boolean); + FDNDEnabled: boolean; + procedure SetDNDEnabled(const AValue: boolean); protected FModalResult: TfpgModalResult; FParentForm: TfpgBaseForm; @@ -73,6 +73,7 @@ type procedure DoOnClose(var CloseAction: TCloseAction); virtual; function DoOnHelp(AHelpType: THelpType; AHelpContext: THelpContext; const AHelpKeyword: String; const AHelpFile: String; var AHandled: Boolean): Boolean; virtual; // properties + property DNDEnabled: boolean read FDNDEnabled write SetDNDEnabled default False; property Sizeable: boolean read FSizeable write FSizeable; property ModalResult: TfpgModalResult read FModalResult write FModalResult; property FullScreen: boolean read FFullScreen write FFullScreen default False; @@ -102,13 +103,13 @@ type function ShowModal: TfpgModalResult; procedure Close; function CloseQuery: boolean; virtual; - property EnableDrops: boolean read FEnableDrops write SetEnableDrops; end; TfpgForm = class(TfpgBaseForm) published property BackgroundColor; + property DNDEnabled; property FullScreen; property Height; property Hint; @@ -188,11 +189,11 @@ end; { TfpgBaseForm } -procedure TfpgBaseForm.SetEnableDrops(const AValue: boolean); +procedure TfpgBaseForm.SetDNDEnabled(const AValue: boolean); begin - if FEnableDrops = AValue then exit; - FEnableDrops := AValue; - DoEnableDrops(AValue); + if FDNDEnabled = AValue then exit; + FDNDEnabled := AValue; + DoDNDEnabled(AValue); end; procedure TfpgBaseForm.SetWindowTitle(const ATitle: string); @@ -295,6 +296,7 @@ begin FModalResult := mrNone; FFullScreen := False; FIsContainer := True; + FDNDEnabled := False; end; destructor TfpgBaseForm.Destroy; -- cgit v1.2.3-70-g09d2 From 7e2566f425bf65e2ff3118fdee90319b549e3504 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Wed, 27 Oct 2010 13:24:07 +0200 Subject: X11 DND: We never checked if drop was really accepted in HandleDNDDrop If the Drop occured, but AcceptDrops = False, we must not do any Selections conversions. This is now so. We must still send the XdndFinished message though, so data object can be freed, and to simply comply with XDND protocol. We now correctly set the Accept or Decine status in the XDNDFinished message. --- src/corelib/x11/fpg_x11.pas | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 9d689f4a..b97243f0 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1177,9 +1177,10 @@ begin writeln('TfpgX11Application.HandleDNDdrop'); {$ENDIF} { TODO: Must XConvertSelection always be called? } - XConvertSelection(FDisplay, XdndSelection, FDNDDataType, XdndSelection, ATopLevelWindow.FWinHandle, ATimestamp); + if FDNDDataType <> None then + XConvertSelection(FDisplay, XdndSelection, FDNDDataType, XdndSelection, ATopLevelWindow.FWinHandle, ATimestamp); - { send message to confirm drop will be accepted in specified rectangle } + { send message to signal drop is finished } FillChar(Msg, SizeOf(Msg), 0); Msg.xany._type := ClientMessage; Msg.xany.display := FDisplay; @@ -1188,7 +1189,10 @@ begin Msg.xclient.format := 32; Msg.xclient.data.l[0] := ATopLevelWindow.FWinHandle; // winhandle of target window - Msg.xclient.data.l[1] := 1; // drop accepted - target can remove the data + if FDNDDataType = None then + Msg.xclient.data.l[1] := 0 // drop NOT accepted + else + Msg.xclient.data.l[1] := 1; // drop accepted - target can remove the data Msg.xclient.data.l[2] := FActionType; // this should be the action we accepted XSendEvent(FDisplay, FSrcWinHandle, False, NoEventMask, @Msg); -- cgit v1.2.3-70-g09d2 From bda7ccb8e5920125cde97dd8f1ef0af25ad39804 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 28 Oct 2010 00:29:16 +0200 Subject: TfpgDrag.Execute now has a default TfpgDropAction drop action of daCopy. --- src/corelib/fpg_main.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index 8ae6da5e..25e8806d 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -346,7 +346,7 @@ type function GetSource: TfpgWindow; reintroduce; public constructor Create(ASource: TfpgWindow); - function Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction = daCopy): TfpgDropAction; override; + function Execute(const ADropActions: TfpgDropActions = [daCopy]; const ADefaultAction: TfpgDropAction = daCopy): TfpgDropAction; override; property Source: TfpgWindow read GetSource; property Target: TfpgWinHandle read FTarget write FTarget; property MimeData: TfpgMimeDataBase read FMimeData write SetMimeData; -- cgit v1.2.3-70-g09d2 From f259be48749fd0cec281a23e2ef2e34b186f3aa2 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 28 Oct 2010 00:30:30 +0200 Subject: TfpgDrag.Execute: replaced Assert() calls with Exceptions. This does error checking before and DND gets triggered. The error messages must still be replaced with resource strings though. --- src/corelib/fpg_main.pas | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index 25e8806d..0f117360 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -2458,8 +2458,13 @@ end; function TfpgDrag.Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction): TfpgDropAction; begin - Assert(FMimeData <> nil, ClassName + ': No mimedata was set before starting the drag'); - Assert(FSource <> nil, ClassName + ': No Source window was specified before starting the drag'); + {$NOTE These exception messages need to become resource strings } + if not Assigned(FMimeData) then + raise Exception.Create(ClassName + ': No mimedata was set before starting the drag'); + if not Assigned(FSource) then + raise Exception.Create(ClassName + ': No Source window was specified before starting the drag'); + if ADropActions = [] then + raise Exception.Create(ClassName + ': No Drop Action was specified'); inherited Execute(ADropActions, ADefaultAction); end; -- cgit v1.2.3-70-g09d2 From e878ef0a55705720a41e77081d8f8765b11109dc Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 28 Oct 2010 00:31:38 +0200 Subject: OnDragLeave event now has the Sender parameter set, and points to the target component --- src/corelib/x11/fpg_x11.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index b97243f0..e2766d0a 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1009,7 +1009,7 @@ begin if wg.AcceptDrops then begin if Assigned(wg.OnDragLeave) then - wg.OnDragLeave(nil); + wg.OnDragLeave(wg); end; end; ResetDNDVariables; @@ -1098,7 +1098,7 @@ begin if wg2.AcceptDrops then begin if Assigned(wg2.OnDragLeave) then - wg2.OnDragLeave(nil); + wg2.OnDragLeave(wg2); end; fillchar(msgp, sizeof(msgp), 0); { Notify the widget so it can reset its looks if needed } -- cgit v1.2.3-70-g09d2 From 8d6b714570798fadc3f15bbc67b3a53900540069 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 28 Oct 2010 00:34:21 +0200 Subject: Bugfix: TfpgX11Application.HandleDNDposition's XdndStatus message sent did not correctly set the ActionType parameter if the drag was not accepted. --- src/corelib/x11/fpg_x11.pas | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index e2766d0a..e6594529 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1158,12 +1158,17 @@ begin Msg.xclient.data.l[0] := ATopLevelWindow.WinHandle; // always top-level window if lAccept then - Msg.xclient.data.l[1] := 1 + begin + Msg.xclient.data.l[1] := 1; + Msg.xclient.data.l[4] := FActionType; + end else + begin Msg.xclient.data.l[1] := 0; + Msg.xclient.data.l[4] := None; + end; Msg.xclient.data.l[2] := 0; // x & y co-ordinates Msg.xclient.data.l[3] := 0; // w & h co-ordinates - Msg.xclient.data.l[4] := FActionType; XSendEvent(FDisplay, FSrcWinHandle, False, NoEventMask, @Msg); end; -- cgit v1.2.3-70-g09d2 From 1313284b26d8f651cb0e7bde11983ceefd1f1879 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 28 Oct 2010 00:37:56 +0200 Subject: bugfix: TfpgX11Drag.SendDNDDrop did not always process correctly. Even though this method was called, it should have checked the FDropAccepted variable which did didn't. Now it correctly conforms to the XDND spec. Due to the new behaviour we also have to make sure we free the TfpgDrag instance when the drop is not accepted. --- src/corelib/x11/fpg_x11.pas | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index e6594529..55530285 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1656,7 +1656,10 @@ begin Drag.SendDNDDrop; { TODO: Start timeout in case XdndFinished is not received, so we can free Drag } // writeln('Freeing Drag Object'); -// FreeAndNil(FDrag); + if not Drag.FDropAccepted then + begin + FreeAndNil(FDrag); + end; end; end; @@ -3376,19 +3379,24 @@ procedure TfpgX11Drag.SendDNDDrop; var xev: TXEvent; begin - xev.xany._type := X.ClientMessage; - xev.xany.display := xapplication.Display; - xev.xclient.window := FLastTarget; - xev.xclient.message_type := xapplication.XdndDrop; - xev.xclient.format := 32; - - xev.xclient.data.l[0] := FSource.WinHandle; // from; - xev.xclient.data.l[1] := 0; // reserved - xev.xclient.data.l[2] := CurrentTime; // timestamp - xev.xclient.data.l[3] := 0; - xev.xclient.data.l[4] := 0; - - XSendEvent(xapplication.Display, FLastTarget, False, NoEventMask, @xev); + if FDropAccepted then + begin + xev.xany._type := X.ClientMessage; + xev.xany.display := xapplication.Display; + xev.xclient.window := FLastTarget; + xev.xclient.message_type := xapplication.XdndDrop; + xev.xclient.format := 32; + + xev.xclient.data.l[0] := FSource.WinHandle; // from; + xev.xclient.data.l[1] := 0; // reserved + xev.xclient.data.l[2] := CurrentTime; // timestamp + xev.xclient.data.l[3] := 0; + xev.xclient.data.l[4] := 0; + + XSendEvent(xapplication.Display, FLastTarget, False, NoEventMask, @xev); + end + else + SendDNDLeave(FLastTarget); FSource.MouseCursor := mcDefault; end; -- cgit v1.2.3-70-g09d2 From 5dd93dc1cbc3551e631fcb8510a43f5429cecb31 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 28 Oct 2010 00:40:03 +0200 Subject: More code comments and DNDDebug entries. --- src/corelib/x11/fpg_x11.pas | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 55530285..9be3276f 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -3415,7 +3415,7 @@ begin else begin FDropAccepted := False; - FAcceptedAction := X.None; + FAcceptedAction := X.None; { AAction should equal None, but lets just make sure } FSource.MouseCursor := mcNoDrop; end; end; @@ -3467,6 +3467,9 @@ end; destructor TfpgX11Drag.Destroy; begin + {$IFDEF DNDDEBUG} + writeln('TfpgX11Drag.Destroy '); + {$ENDIF} FSource.MouseCursor := mcDefault; XDeleteProperty(xapplication.Display, FSource.WinHandle, xapplication.XdndAware); XDeleteProperty(xapplication.Display, FSource.WinHandle, xapplication.XdndTypeList); -- cgit v1.2.3-70-g09d2 From c4c41403c4ec6a2c19f197305a98efa717c79e9d Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 28 Oct 2010 10:51:56 +0200 Subject: extra error checking in mimelist DND operation --- src/corelib/x11/fpg_x11.pas | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 9be3276f..f56a4851 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -1114,9 +1114,15 @@ begin lMimeList := TStringList.Create; for i := 0 to FDNDTypeList.Count-1 do lMimeList.Add(TDNDSrcType(FDNDTypeList[i]).Name); + { Use the first mime-type as the default option presented. The mime-list should always be from most specific to least specific. } - lMimeChoice := lMimeList[0]; + if lMimeList.Count > 0 then + lMimeChoice := lMimeList[0] + else + {$NOTE We need to replace this message with a resouce string } + raise Exception.Create('fpGUI/X11: no mime types available for DND operation'); + { TODO: We need to populate the Source parameter. } wg.OnDragEnter(self, nil, lMimeList, lMimeChoice, lDropAction, lAccept); lMimeList.Free; -- cgit v1.2.3-70-g09d2 From 7a94a5002ed8af6e8e163ff375bf31fb25363088 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 12 Oct 2010 17:16:49 +0200 Subject: GDI: introduced a template TGDIDragManager class * implements the IDropTarget interface * Also initialize/uninitialize OLE at application startup/stop --- src/corelib/gdi/fpg_gdi.pas | 99 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 97 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index db549a2c..f59c7330 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -53,6 +53,7 @@ var type // forward declaration TfpgGDIWindow = class; + TGDIDragManager = class; TfpgGDIFontResource = class(TfpgFontResourceBase) @@ -142,6 +143,9 @@ type TfpgGDIWindow = class(TfpgWindowBase) + private + FDragManager: TGDIDragManager; + function GetDragManager: TGDIDragManager; private FMouseInWindow: boolean; FNonFullscreenRect: TfpgRect; @@ -150,6 +154,7 @@ type FSkipResizeMessage: boolean; function DoMouseEnterLeaveCheck(AWindow: TfpgGDIWindow; uMsg, wParam, lParam: Cardinal): Boolean; procedure WindowSetFullscreen(aFullScreen, aUpdate: boolean); + property DragManager: TGDIDragManager read GetDragManager; protected FWinHandle: TfpgWinHandle; FModalForWin: TfpgGDIWindow; @@ -171,6 +176,7 @@ type property WinHandle: TfpgWinHandle read FWinHandle; public constructor Create(AOwner: TComponent); override; + destructor Destroy; override; procedure ActivateWindow; override; procedure CaptureMouse; override; procedure ReleaseMouse; override; @@ -251,6 +257,26 @@ type end; + { TGDIDragManager } + + TGDIDragManager = class(TInterfacedObject, IDropTarget) + private + FDropTarget: TObject; { actually a TfpgWidget } + FRegistered: boolean; + { IDropTarget } + function DragEnter(const dataObj: IDataObject; grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult;StdCall; + function DragOver(grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult;StdCall; + function DragLeave: HResult;StdCall; + function Drop(const dataObj: IDataObject; grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD):HResult;StdCall; + public + constructor Create(ADropTarget: TObject); reintroduce; + destructor Destroy; override; + procedure RegisterDragDrop; + procedure RevokeDragDrop; + property DropTarget: TObject read FDropTarget; { actually a TfpgWidget } + end; + + implementation uses @@ -266,7 +292,7 @@ var wapplication: TfpgApplication; MouseFocusedWH: HWND; OldMousePos: TPoint; // used to detect fake MouseMove events - + NeedToUnitialize: Boolean; // some required keyboard functions {$INCLUDE fpg_keys_gdi.inc} @@ -1249,7 +1275,14 @@ end; var // this are required for Windows MouseEnter & MouseExit detection. uLastWindowHndl: TfpgWinHandle; - + +function TfpgGDIWindow.GetDragManager: TGDIDragManager; +begin + if not Assigned(FDragManager) then + FDragManager := TGDIDragManager.Create(self); + Result := FDragManager; +end; + function TfpgGDIWindow.DoMouseEnterLeaveCheck(AWindow: TfpgGDIWindow; uMsg, wParam, lParam: Cardinal): Boolean; var pt, spt: Windows.POINT; @@ -1647,6 +1680,14 @@ begin FFullscreenIsSet := false; end; +destructor TfpgGDIWindow.Destroy; +begin + if (self as TfpgWidget).AcceptDrops and Assigned(FDragManager) then + FDragManager.RevokeDragDrop; + FDragManager := nil; { frees drag manager instance } + inherited Destroy; +end; + procedure TfpgGDIWindow.ActivateWindow; begin SetForegroundWindow(FWinHandle); @@ -2494,9 +2535,59 @@ begin Result := daCopy; end; +{ TGDIDragManager } + +function TGDIDragManager.DragEnter(const dataObj: IDataObject; + grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult; StdCall; +begin + +end; + +function TGDIDragManager.DragOver(grfKeyState: DWORD; pt: TPoint; + var dwEffect: DWORD): HResult; StdCall; +begin + +end; + +function TGDIDragManager.DragLeave: HResult; StdCall; +begin + +end; + +function TGDIDragManager.Drop(const dataObj: IDataObject; grfKeyState: DWORD; + pt: TPoint; var dwEffect: DWORD): HResult; StdCall; +begin + +end; + +constructor TGDIDragManager.Create(ADropTarget: TObject); +begin + inherited Create; + FDropTarget := ADropTarget; + FRegistered := False; +end; + +destructor TGDIDragManager.Destroy; +begin + if FRegistered then + RevokeDragDrop; + inherited Destroy; +end; + +procedure TGDIDragManager.RegisterDragDrop; +begin + Activex.RegisterDragDrop(TfpgWidget(FDropTarget).WinHandle, self as IDropTarget) +end; + +procedure TGDIDragManager.RevokeDragDrop; +begin + ActiveX.RevokeDragDrop(TfpgWidget(FDropTarget).WinHandle); +end; + initialization wapplication := nil; MouseFocusedWH := 0; + NeedToUnitialize := Succeeded(OleInitialize(nil)); {$IFDEF WinCE} UnicodeEnabledOS := True; @@ -2514,5 +2605,9 @@ initialization FontSmoothingType := ANTIALIASED_QUALITY; {$ENDIF} +finalization + if NeedToUnitialize then + OleUninitialize; + end. -- cgit v1.2.3-70-g09d2 From 8c7e0c3444a9746fbff7caecbc2014e114b837c6 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 12 Oct 2010 17:17:35 +0200 Subject: Ad conversion helper functions from OLE DND to fpGUI DropActions --- src/corelib/gdi/fpg_gdi.pas | 48 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index f59c7330..7da02311 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -477,20 +477,54 @@ begin {$ENDIF} end; +{ ********** Some helper conversion functions ************* } + function WinkeystateToShiftstate(keystate: cardinal): TShiftState; begin - result:= []; - if GetKeyState(vk_menu) < 0 then begin + Result := []; + if GetKeyState(vk_menu) < 0 then Include(result, ssAlt); - end; - if GetKeyState(vk_shift) < 0 then begin + if GetKeyState(vk_shift) < 0 then Include(result, ssShift); - end; - if GetKeyState(vk_control) < 0 then begin + if GetKeyState(vk_control) < 0 then Include(result, ssCtrl); - end; end; +function TranslateToFPGDropActions(const pdwEffects: DWORD): TfpgDropActions; +begin + Result := [daIgnore]; + if (pdwEffects and DROPEFFECT_LINK) <> 0 then + Result := Result + [daLink]; + if (pdwEffects and DROPEFFECT_COPY) <> 0 then + Result := Result + [daCopy]; + if (pdwEffects and DROPEFFECT_MOVE) <> 0 then + Result := Result + [daMove]; +end; + +function TranslateToFPGDropAction(const pdwEffects: DWORD): TfpgDropAction; +begin + if (pdwEffects and DROPEFFECT_LINK) <> 0 then + Result := daLink + else if (pdwEffects and DROPEFFECT_COPY) <> 0 then + Result := daCopy + else if (pdwEffects and DROPEFFECT_MOVE) <> 0 then + Result := daMove + else + Result := daIgnore; +end; + +function TranslateToWinDragEffects(const AActions: TfpgDropActions): DWORD; +begin + Result := DROPEFFECT_NONE; + if daLink in AActions then + Result := Result or DROPEFFECT_LINK; + if daCopy in AActions then + Result := Result or DROPEFFECT_COPY; + if daMove in AActions then + Result := Result or DROPEFFECT_MOVE; +end; + + {$IFDEF wince} procedure WinCESetDibBits(BMP: HBITMAP; awidth, aheight: Integer; aimgdata: Pointer; var bi: TBitmapInfo); var -- cgit v1.2.3-70-g09d2 From 295242c96cf0c0f791fcc4aeea7555269d493503 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 12 Oct 2010 17:20:40 +0200 Subject: TfpgWindowBase introduced a new abstract method * This abstract method is called from TfpgWidget's AcceptDrops setter function * Template implementation in X11 * Actual implementation in GDI --- src/corelib/fpg_base.pas | 1 + src/corelib/fpg_widget.pas | 1 + src/corelib/gdi/fpg_gdi.pas | 29 +++++++++++++++++++++++++++-- src/corelib/x11/fpg_x11.pas | 6 ++++++ 4 files changed, 35 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index 143238cf..ff4230e8 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -446,6 +446,7 @@ type procedure DoSetWindowTitle(const ATitle: string); virtual; abstract; procedure DoSetMouseCursor; virtual; abstract; procedure DoDNDEnabled(const AValue: boolean); virtual; abstract; + procedure DoAcceptDrops(const AValue: boolean); virtual; abstract; procedure SetParent(const AValue: TfpgWindowBase); virtual; function GetParent: TfpgWindowBase; virtual; function GetCanvas: TfpgCanvasBase; virtual; diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index 2afb667a..45a480dc 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -286,6 +286,7 @@ begin if FAcceptDrops = AValue then exit; FAcceptDrops := AValue; + DoAcceptDrops(AValue); end; function TfpgWidget.GetHint: TfpgString; diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index 7da02311..e7c3db3c 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -28,9 +28,10 @@ unit fpg_gdi; interface uses - Windows, Classes, SysUtils, + Windows, + ActiveX, fpg_base, fpg_impl {$IFDEF DEBUG} @@ -152,6 +153,7 @@ type FNonFullscreenStyle: longword; FFullscreenIsSet: boolean; FSkipResizeMessage: boolean; + QueueAcceptDrops: boolean; function DoMouseEnterLeaveCheck(AWindow: TfpgGDIWindow; uMsg, wParam, lParam: Cardinal): Boolean; procedure WindowSetFullscreen(aFullScreen, aUpdate: boolean); property DragManager: TGDIDragManager read GetDragManager; @@ -173,6 +175,7 @@ type procedure DoSetWindowTitle(const ATitle: string); override; procedure DoSetMouseCursor; override; procedure DoDNDEnabled(const AValue: boolean); override; + procedure DoAcceptDrops(const AValue: boolean); override; property WinHandle: TfpgWinHandle read FWinHandle; public constructor Create(AOwner: TComponent); override; @@ -1587,6 +1590,11 @@ begin // the forms require some adjustments before the Window appears SetWindowParameters; FSkipResizeMessage := False; + + if QueueAcceptDrops then + begin + DoAcceptDrops(True); + end; end; procedure TfpgGDIWindow.DoReleaseWindowHandle; @@ -1704,7 +1712,24 @@ end; procedure TfpgGDIWindow.DoDNDEnabled(const AValue: boolean); begin - // TODO: still needs to be implemented + { GDI has nothing to do here } +end; + +procedure TfpgGDIWindow.DoAcceptDrops(const AValue: boolean); +begin + if AValue then + begin + if HasHandle then + DragManager.RegisterDragDrop + else + QueueAcceptDrops := True; // we need to do this once we have a winhandle + end + else + begin + if HasHandle then + DragManager.RevokeDragDrop; + QueueAcceptDrops := False; + end; end; constructor TfpgGDIWindow.Create(AOwner: TComponent); diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index f56a4851..4f9c4ce8 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -231,6 +231,7 @@ type procedure DoUpdateWindowPosition; override; procedure DoSetMouseCursor; override; procedure DoDNDEnabled(const AValue: boolean); override; + procedure DoAcceptDrops(const AValue: boolean); override; property WinHandle: TfpgWinHandle read FWinHandle; public constructor Create(AOwner: TComponent); override; @@ -2396,6 +2397,11 @@ begin XDeleteProperty(xapplication.Display, WinHandle, xapplication.XdndAware); end; +procedure TfpgX11Window.DoAcceptDrops(const AValue: boolean); +begin + { TODO : Remove EnableDrops, then recurse from here to parent top level from, and set XDNDAware property for form. } +end; + procedure TfpgX11Window.DoSetWindowTitle(const ATitle: string); var tp: TXTextProperty; -- cgit v1.2.3-70-g09d2 From f436c95222de7300653a43875c481dd30e05e7ee Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 18 Oct 2010 17:10:13 +0200 Subject: GDI: A near complete Windows OLE Drag-n-Drop implementation --- src/corelib/gdi/fpg_oledragdrop.pas | 922 ++++++++++++++++++++++++++++++++++++ 1 file changed, 922 insertions(+) create mode 100644 src/corelib/gdi/fpg_oledragdrop.pas (limited to 'src') diff --git a/src/corelib/gdi/fpg_oledragdrop.pas b/src/corelib/gdi/fpg_oledragdrop.pas new file mode 100644 index 00000000..29ebe7c3 --- /dev/null +++ b/src/corelib/gdi/fpg_oledragdrop.pas @@ -0,0 +1,922 @@ +{ + fpGUI - Free Pascal GUI Toolkit + + Copyright (C) 2006 - 2010 See the file AUTHORS.txt, included in this + distribution, for details of the copyright. + + See the file COPYING.modifiedLGPL, included in this distribution, + for details about redistributing fpGUI. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + Description: + This unit implements the OLE Drag-n-Drop functionality of Windows. +} +unit fpg_OLEDragDrop; + +{$mode delphi}{$H+} + +interface + +uses + Windows, Classes, ActiveX, ShellAPI, fpg_base; + +const + CFSTR_FILENAMEMAPA = 'FileNameMap'; { CF_FILENAMEMAPA } + CFSTR_FILENAMEMAP = CFSTR_FILENAMEMAPA; + CFSTR_FILEDESCRIPTORA = 'FileGroupDescriptor'; { CF_FILEGROUPDESCRIPTORA } + CFSTR_FILEDESCRIPTOR = CFSTR_FILEDESCRIPTORA; + CFSTR_FILECONTENTS = 'FileContents'; { CF_FILECONTENTS } + +type + TfpgOLEFormatEtcList = class(TList) + private + function GetFormatEtc(Index: Integer): PFormatEtc; + protected + procedure Notify(Ptr: Pointer; Action: TListNotification); override; + public + constructor CreateCopy(AFormatEtcList: TfpgOLEFormatEtcList); + property FormatEtc[Index: Integer]: PFormatEtc read GetFormatEtc; default; + end; + + + TfpgOLEStgMediumList = class(TList) + private + function GetStgMedium(Index: Integer): PStgMedium; + protected + procedure Notify(Ptr: Pointer; Action: TListNotification); override; + public + property StgMedium[Index: Integer]: PStgMedium read GetStgMedium; default; + end; + + + TfpgOLEDropSource = class(TInterfacedObject, IDropSource) + private + { IDropSource } + function QueryContinueDrag(fEscapePressed: BOOL; grfKeyState: Longint): HResult; stdcall; + function GiveFeedback(dwEffect: Longint): HResult; stdcall; + end; + + + TfpgOLEDragDropEffect = (deNone, deCopy, deMove, deLink); + TfpgOLEDragEnterEvent = procedure(Sender: TObject; DataObj: IDataObject; KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect) of object; + TfpgOLEDragOverEvent = procedure(Sender: TObject; KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect) of object; + TfpgOLEDragDropEvent = procedure(Sender: TObject; DataObj: IDataObject; KeyState: Longint; PT: TPoint; Effect: TfpgOLEDragDropEffect) of object; + + + TfpgOLEDropTarget = class(TObject, IInterface, IDropTarget) + private + FDropTarget: TfpgWindowBase; + FRegistered: Boolean; + FOnDragEnter: TfpgOLEDragEnterEvent; + FOnDragOver: TfpgOLEDragOverEvent; + FOnDragLeave: TNotifyEvent; + FOnDragDrop: TfpgOLEDragDropEvent; + protected + procedure DoDragEnter(DataObj: IDataObject; KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect); virtual; + procedure DoDragOver(KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect); virtual; + procedure DoDragDrop(DataObj: IDataObject; KeyState: Longint; PT: TPoint; Effect: TfpgOLEDragDropEffect); virtual; + { IInterface } + function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; + function _AddRef: Integer; stdcall; + function _Release: Integer; stdcall; + { IDropTarget } + function DragEnter(const dataObj: IDataObject; grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult;StdCall; + function DragOver(grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult; stdcall; + function DragLeave: HResult; stdcall; + function Drop(const dataObj: IDataObject; grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult; stdcall; + + property OnDragEnter: TfpgOLEDragEnterEvent read FOnDragEnter write FOnDragEnter; + property OnDragOver: TfpgOLEDragOverEvent read FOnDragOver write FOnDragOver; + property OnDragLeave: TNotifyEvent read FOnDragLeave write FOnDragLeave; + property OnDragDrop: TfpgOLEDragDropEvent read FOnDragDrop write FOnDragDrop; + public + constructor Create(ADropTargetWidget: TfpgWindowBase); reintroduce; { Actually a TfpgWidget } + destructor Destroy; override; + procedure RegisterDragDrop; + procedure RevokeDragDrop; + property DropTarget: TfpgWindowBase read FDropTarget; + end; + + + TfpgOLEDataObject = class(TInterfacedObject, IDataObject) + private + FFormatEtcList: TfpgOLEFormatEtcList; + FStgMediumList: TfpgOLEStgMediumList; + function LookupFormatEtc(AFormat: TFormatEtc): Integer; + protected + { IDataObject } + function GetData(const formatetcIn: TFormatEtc; out medium: TStgMedium): HResult; stdcall; + function GetDataHere(const formatetc: TFormatEtc; out medium: TStgMedium): HResult; stdcall; + function QueryGetData(const formatetc: TFormatEtc): HResult; stdcall; + function GetCanonicalFormatEtc(const formatetc: TFormatEtc; out formatetcOut: TFormatEtc): HResult; stdcall; + function SetData(const formatetc: TFormatEtc; const medium: TStgMedium; fRelease: BOOL): HResult; stdcall; + function EnumFormatEtc(dwDirection: DWORD; out enumFormatEtc: IEnumFormatEtc): HResult; stdcall; + function DAdvise(const formatetc: TFormatEtc; advf: DWORD; const advSink: IAdviseSink; out dwConnection: DWORD): HResult; stdcall; + function DUnadvise(dwConnection: DWORD): HResult; stdcall; + function EnumDAdvise(out enumAdvise: IEnumStatData): HResult; stdcall; + public + constructor Create; overload; + constructor Create(AFormatEtcList: TfpgOLEFormatEtcList); overload; + destructor Destroy; override; + property FormatEtcList: TfpgOLEFormatEtcList read FFormatEtcList; + property StgMediumList: TfpgOLEStgMediumList read FStgMediumList; + end; + + + TfpgOLEEnumFormatEtc = class(TInterfacedObject, IEnumFORMATETC) + private + FFormatEtcList: TfpgOLEFormatEtcList; + FIndex: Integer; + protected + { IEnumFORMATETC } + function Next(celt: ULong; out elt:FormatEtc; pceltFetched: pULong=nil): HResult; stdcall; + function Skip(celt: ULong): HResult; stdcall; + function Reset: HResult; stdcall; + function Clone(out Enum: IEnumFormatEtc): HResult; stdcall; + public + constructor Create(AFormatEtcList: TfpgOLEFormatEtcList); + destructor Destroy; override; + end; + + + TDragFilesSource = class(TObject) + private + FFileNames: TStrings; + FAliasFileNames: TStrings; + function GetAliasFileNames: TStrings; + function GetSourceFileNames: TStrings; + procedure SetAliasFileNames(const Value: TStrings); + procedure SetSourceFileNames(const Value: TStrings); + public + constructor Create; + destructor Destroy; override; + procedure Execute; + property SourceFileNames: TStrings read GetSourceFileNames write SetSourceFileNames; + property AliasFileNames: TStrings read GetAliasFileNames write SetAliasFileNames; + end; + + + TDragAcceptFilesEvent = function(Sender: TObject; FileNames: TStrings): Boolean of object; + TDragAcceptPositionEvent = function(Sender: TObject; PT: TPoint): Boolean of object; + TDropFilesEvent = procedure(Sender: TObject; PT: TPoint; FileNames: TStrings) of object; + + + TDragFilesTarget = class(TfpgOLEDropTarget) + private + FDragAcceptFiles: Boolean; + FOnDragAcceptFiles: TDragAcceptFilesEvent; + FOnDragAcceptPosition: TDragAcceptPositionEvent; + FOnDropFiles: TDropFilesEvent; + procedure GetFileNamesFromDropHandle(DropHandle: HDROP; SL: TStrings); + procedure StreamToFile(Stream: IStream; const FileName: string); + protected + function DoDragAcceptFiles(DataObj: IDataObject): Boolean; + function DoDragAcceptPosition(PT: TPoint): Boolean; + procedure DoDropFiles(DataObj: IDataObject; PT: TPoint); + procedure DoDragEnter(DataObj: IDataObject; KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect); override; + procedure DoDragOver(KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect); override; + procedure DoDragDrop(DataObj: IDataObject; KeyState: Longint; PT: TPoint; Effect: TfpgOLEDragDropEffect); override; + public + property OnDragAcceptFiles: TDragAcceptFilesEvent read FOnDragAcceptFiles write FOnDragAcceptFiles; + property OnDragAcceptPosition: TDragAcceptPositionEvent read FOnDragAcceptPosition write FOnDragAcceptPosition; + property OnDropFiles: TDropFilesEvent read FOnDropFiles write FOnDropFiles; + end; + + +implementation + +uses + SysUtils, ShlObj, fpg_widget; + +var + CF_FILENAMEMAP: Cardinal; + CF_FILEDESCRIPTOR: Cardinal; + CF_FILECONTENTS: Cardinal; + +procedure DeepCopyFormatEtc(P1, P2: PFormatEtc); +begin + P2^ := P1^; + if P1^.ptd <> nil then begin + P2^.ptd := CoTaskMemAlloc(SizeOf(tagDVTARGETDEVICE)); + P2^.ptd^ := P1^.ptd^; + end; +end; + +function DupGlobalMem(hMem: HGLOBAL): HGLOBAL; +var + len: DWORD; + Source: Pointer; + Dest: HGLOBAL; +begin + len := GlobalSize(hMem); + Source := GlobalLock(hMem); + Dest := GlobalAlloc(GMEM_FIXED, len); + Move(Source^, Pointer(Dest)^, len); + GlobalUnlock(hMem); + Result := Dest; +end; + +{ TDragFilesSource } + +constructor TDragFilesSource.Create; +begin + inherited Create; + FFileNames := TStringList.Create; + FAliasFileNames := TStringList.Create; +end; + +destructor TDragFilesSource.Destroy; +begin + FreeAndNil(FFileNames); + FreeAndNil(FAliasFileNames); + inherited Destroy; +end; + +procedure TDragFilesSource.Execute; +var + DataObject: TfpgOLEDataObject; + DropSource: TfpgOLEDropSource; + dwEffect: DWORD; + dwResult: HRESULT; + I: Integer; + F: PFormatEtc; + S: string; + M: PStgMedium; +begin + DataObject := TfpgOLEDataObject.Create; + + S := ''; + for I := 0 to FFileNames.Count - 1 do begin + SetLength(S, Length(S)+Length(FFileNames[I])+1); + Move(FFileNames[I][1], S[Length(S)-Length(FFileNames[I])], Length(FFileNames[I])); + S[Length(S)] := #0; + end; + SetLength(S, Length(S)+1); + S[Length(S)] := #0; + + New(F); + F^.cfFormat := CF_HDROP; + F^.ptd := nil; + F^.dwAspect := DVASPECT_CONTENT; + F^.lindex := -1; + F^.tymed := TYMED_HGLOBAL; + DataObject.FormatEtcList.Add(F); + + New(M); + M^.tymed := TYMED_HGLOBAL; + M^.hGlobal := Cardinal(GlobalAlloc(GMEM_FIXED, SizeOf(TDropFiles)+Length(S))); + PDropFiles(M^.hGlobal)^.pFiles := SizeOf(TDropFiles); + PDropFiles(M^.hGlobal)^.pt := Point(0,0); + PDropFiles(M^.hGlobal)^.fNC := FALSE; + PDropFiles(M^.hGlobal)^.fWide := FALSE; + Move(S[1], PChar(M^.hGlobal+SizeOf(TDropFiles))^, Length(S)); + DataObject.StgMediumList.Add(M); + + if (FAliasFileNames.Count > 0) and (FAliasFileNames.Count = FFileNames.Count) then begin + S := ''; + for I := 0 to FAliasFileNames.Count - 1 do begin + SetLength(S, Length(S)+Length(FAliasFileNames[I])+1); + Move(FAliasFileNames[I][1], S[Length(S)-Length(FAliasFileNames[I])], Length(FAliasFileNames[I])); + S[Length(S)] := #0; + end; + SetLength(S, Length(S)+1); + S[Length(S)] := #0; + + New(F); + F^.cfFormat := CF_FILENAMEMAP; + F^.ptd := nil; + F^.dwAspect := DVASPECT_CONTENT; + F^.lindex := -1; + F^.tymed := TYMED_HGLOBAL; + DataObject.FormatEtcList.Add(F); + + New(M); + M^.tymed := TYMED_HGLOBAL; + M^.hGlobal := Cardinal(GlobalAlloc(GMEM_FIXED, Length(S))); + Move(S[1], PChar(M^.hGlobal)^, Length(S)); + DataObject.StgMediumList.Add(M); + end; + + DropSource := TfpgOLEDropSource.Create; + dwResult := ActiveX.DoDragDrop(DataObject as IDataObject, DropSource as IDropSource, DROPEFFECT_COPY, @dwEffect); + + if dwResult = DRAGDROP_S_DROP then begin + if dwEffect = DROPEFFECT_COPY then begin + end; + end; +end; + +function TDragFilesSource.GetAliasFileNames: TStrings; +begin + Result := FAliasFileNames; +end; + +function TDragFilesSource.GetSourceFileNames: TStrings; +begin + Result := FFileNames; +end; + +procedure TDragFilesSource.SetAliasFileNames(const Value: TStrings); +begin + FAliasFileNames.Assign(Value); +end; + +procedure TDragFilesSource.SetSourceFileNames(const Value: TStrings); +begin + FFileNames.Assign(Value); +end; + +{ TfpgOLEDropSource } + +function TfpgOLEDropSource.GiveFeedback(dwEffect: Integer): HResult; +begin + Result := DRAGDROP_S_USEDEFAULTCURSORS; +end; + +function TfpgOLEDropSource.QueryContinueDrag(fEscapePressed: BOOL; + grfKeyState: Integer): HResult; +begin + if FEscapePressed then + Result := DRAGDROP_S_CANCEL + else if (grfKeyState and (MK_LBUTTON or MK_RBUTTON) = 0) then + Result := DRAGDROP_S_DROP + else + Result := S_OK; +end; + +{ TfpgOLEDataObject } + +constructor TfpgOLEDataObject.Create(AFormatEtcList: TfpgOLEFormatEtcList); +begin + inherited Create; + FFormatEtcList := TfpgOLEFormatEtcList.CreateCopy(AFormatEtcList); + FStgMediumList := TfpgOLEStgMediumList.Create; +end; + +constructor TfpgOLEDataObject.Create; +begin + inherited Create; + FFormatEtcList := TfpgOLEFormatEtcList.Create; + FStgMediumList := TfpgOLEStgMediumList.Create; +end; + +function TfpgOLEDataObject.DAdvise(const formatetc: TFormatEtc; advf: DWORD; + const advSink: IAdviseSink; out dwConnection: DWORD): HResult; +begin + Result := OLE_E_ADVISENOTSUPPORTED; +end; + +destructor TfpgOLEDataObject.Destroy; +begin + FreeAndNil(FFormatEtcList); + FreeAndNil(FStgMediumList); + inherited Destroy; +end; + +function TfpgOLEDataObject.DUnadvise(dwConnection: DWORD): HResult; +begin + Result := OLE_E_ADVISENOTSUPPORTED; +end; + +function TfpgOLEDataObject.EnumDAdvise(out enumAdvise: IEnumStatData): HResult; +begin + Result := OLE_E_ADVISENOTSUPPORTED; +end; + +function TfpgOLEDataObject.EnumFormatEtc(dwDirection: DWORD; + out enumFormatEtc: IEnumFormatEtc): HResult; +begin + if dwDirection = DATADIR_GET then begin + enumFormatEtc := TfpgOLEEnumFormatEtc.Create(FFormatEtcList) as IEnumFormatEtc; + Result := S_OK; + end + else begin + Result := E_NOTIMPL; + end; +end; + +function TfpgOLEDataObject.GetCanonicalFormatEtc(const formatetc: TFormatEtc; + out formatetcOut: TFormatEtc): HResult; +begin + // Apparently we have to set this field to NULL even though we don't do anything else + formatetcOut.ptd := nil; + Result := E_NOTIMPL; +end; + +function TfpgOLEDataObject.GetData(const formatetcIn: TFormatEtc; + out medium: TStgMedium): HResult; +var + Idx: Integer; +begin + Idx := LookupFormatEtc(formatetcIn); + if Idx = -1 then + Result := DV_E_FORMATETC + else begin + medium.tymed := FFormatEtcList[Idx]^.tymed; + medium.PUnkForRelease := nil; + if medium.tymed = TYMED_HGLOBAL then begin + medium.hGlobal := DupGlobalMem(FStgMediumList[Idx]^.hGlobal); + Result := S_OK; + end + else + Result := DV_E_FORMATETC; + end; +end; + +function TfpgOLEDataObject.GetDataHere(const formatetc: TFormatEtc; + out medium: TStgMedium): HResult; +begin + Result := DV_E_FORMATETC; +end; + +function TfpgOLEDataObject.LookupFormatEtc(AFormat: TFormatEtc): Integer; +var + I: Integer; +begin + Result := -1; + for I := 0 to FFormatEtcList.Count - 1 do begin + if (FFormatEtcList[I]^.cfFormat = AFormat.cfFormat) and + (FFormatEtcList[I]^.dwAspect = AFormat.dwAspect) and + (FFormatEtcList[I]^.tymed = AFormat.tymed) then begin + Result := I; + Break; + end; + end; +end; + +function TfpgOLEDataObject.QueryGetData(const formatetc: TFormatEtc): HResult; +begin + if LookupFormatEtc(formatetc) >= 0 then begin + Result := S_OK; + end + else begin + Result := DV_E_FORMATETC; + end; +end; + +function TfpgOLEDataObject.SetData(const formatetc: TFormatEtc; + const medium: TStgMedium; fRelease: BOOL): HResult; +begin + Result := E_NOTIMPL; +end; + +{ TfpgOLEEnumFormatEtc } + +function TfpgOLEEnumFormatEtc.Clone(out Enum: IEnumFormatEtc): HResult; +var + C: TfpgOLEEnumFormatEtc; +begin + // make a duplicate enumerator + C := TfpgOLEEnumFormatEtc.Create(FFormatEtcList); + // manually set the index state + C.FIndex := FIndex; + Enum := C as IEnumFormatEtc; + Result := S_OK; +end; + +constructor TfpgOLEEnumFormatEtc.Create(AFormatEtcList: TfpgOLEFormatEtcList); +begin + FFormatEtcList := TfpgOLEFormatEtcList.CreateCopy(AFormatEtcList); + FIndex := 0; +end; + +destructor TfpgOLEEnumFormatEtc.Destroy; +begin + FreeAndNil(FFormatEtcList); + inherited; +end; + +function TfpgOLEEnumFormatEtc.Next(celt: ULong; out elt:FormatEtc; + pceltFetched: pULong): HResult; +var + Copied: Integer; + OutBuf: PFormatEtc; +begin + // copy the FORMATETC structures into the caller's buffer + OutBuf := PFormatEtc(@elt); + Copied := 0; + while(FIndex < FFormatEtcList.Count) and (Copied < celt) do begin + DeepCopyFormatEtc(FFormatEtcList[FIndex], OutBuf); + OutBuf := PFormatEtc(Cardinal(OutBuf) + SizeOf(TFormatEtc)); + Inc(Copied); + FIndex := FIndex + 1; + end; + + // store result + if (pceltFetched <> nil) then + pceltFetched^ := Copied; + + // did we copy all that was requested? + if (Copied = celt) then Result := S_OK + else Result := S_FALSE; +end; + +function TfpgOLEEnumFormatEtc.Reset: HResult; +begin + FIndex := 0; + Result := S_OK; +end; + +function TfpgOLEEnumFormatEtc.Skip(celt: ULong): HResult; +begin + FIndex := FIndex + celt; + if FIndex <= FFormatEtcList.Count then Result := S_OK + else Result := S_FALSE; +end; + +{ TfpgOLEFormatEtcList } + +constructor TfpgOLEFormatEtcList.CreateCopy(AFormatEtcList: TfpgOLEFormatEtcList); +var + I: Integer; + P: PFormatEtc; +begin + Create; + for I := 0 to AFormatEtcList.Count - 1 do begin + New(P); + DeepCopyFormatEtc(AFormatEtcList[I], P); + Add(P); + end; +end; + +function TfpgOLEFormatEtcList.GetFormatEtc(Index: Integer): PFormatEtc; +begin + Result := PFormatEtc(Get(Index)); +end; + +procedure TfpgOLEFormatEtcList.Notify(Ptr: Pointer; Action: TListNotification); +begin + if Action = lnDeleted then begin + if PFormatEtc(Ptr)^.ptd <> nil then begin + CoTaskMemFree(PFormatEtc(Ptr)^.ptd); + end; + Dispose(PFormatEtc(Ptr)); + end; + inherited; +end; + +{ TfpgOLEStgMediumList } + +function TfpgOLEStgMediumList.GetStgMedium(Index: Integer): PStgMedium; +begin + Result := PStgMedium(Get(Index)); +end; + +procedure TfpgOLEStgMediumList.Notify(Ptr: Pointer; Action: TListNotification); +begin + if Action = lnDeleted then begin + if PStgMedium(Ptr)^.hGlobal <> 0 then begin + GlobalFree(PStgMedium(Ptr)^.hGlobal); + end; + Dispose(Ptr); + end; + inherited; +end; + +{ TfpgOLEDropTarget } + +function TfpgOLEDropTarget.DragEnter(const dataObj: IDataObject; + grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult; +var + Effect: TfpgOLEDragDropEffect; +begin + dwEffect := DROPEFFECT_NONE; + Effect := deNone; + DoDragEnter(dataObj, grfKeyState, pt, Effect); + case Effect of + deNone: dwEffect := DROPEFFECT_NONE; + deCopy: dwEffect := DROPEFFECT_COPY; + deMove: dwEffect := DROPEFFECT_MOVE; + deLink: dwEffect := DROPEFFECT_LINK; + end; + Result := S_OK; +end; + +function TfpgOLEDropTarget.DragLeave: HResult; +begin + Result := S_OK; +end; + +function TfpgOLEDropTarget.DragOver(grfKeyState: DWORD; pt: TPoint; + var dwEffect: DWORD): HResult; +var + Effect: TfpgOLEDragDropEffect; +begin + if ((MK_SHIFT and grfKeyState) = MK_SHIFT) and + ((dwEffect and DROPEFFECT_MOVE) = DROPEFFECT_MOVE) then begin + Effect := deMove; + end; + if ((MK_CONTROL and grfKeyState) = MK_CONTROL) and + ((dwEffect and DROPEFFECT_COPY) = DROPEFFECT_COPY) then begin + Effect := deCopy; + end; + if dwEffect and DROPEFFECT_COPY > 0 then Effect := deCopy + else if dwEffect and DROPEFFECT_MOVE > 0 then Effect := deMove + else if dwEffect and DROPEFFECT_LINK > 0 then Effect := deLink + else Effect := deNone; + DoDragOver(grfKeyState, pt, Effect); + case Effect of + deNone: dwEffect := DROPEFFECT_NONE; + deCopy: dwEffect := DROPEFFECT_COPY; + deMove: dwEffect := DROPEFFECT_MOVE; + deLink: dwEffect := DROPEFFECT_LINK; + end; + Result := S_OK; +end; + +function TfpgOLEDropTarget.Drop(const dataObj: IDataObject; + grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult; +var + Effect: TfpgOLEDragDropEffect; +begin + if dwEffect and DROPEFFECT_COPY > 0 then Effect := deCopy + else if dwEffect and DROPEFFECT_MOVE > 0 then Effect := deMove + else if dwEffect and DROPEFFECT_LINK > 0 then Effect := deLink + else Effect := deNone; + DoDragDrop(dataObj, grfKeyState, pt, Effect); + Result := S_OK; +end; + +function TfpgOLEDropTarget._AddRef: Integer; +begin + Result := 1; +end; + +function TfpgOLEDropTarget._Release: Integer; +begin + Result := 1; +end; + +function TfpgOLEDropTarget.QueryInterface(const IID: TGUID; out Obj): HResult; +begin + if GetInterface(IID, Obj) then + Result := 0 + else + Result := E_NOINTERFACE; +end; + +constructor TfpgOLEDropTarget.Create(ADropTargetWidget: TfpgWindowBase); +begin + inherited Create; + FDropTarget := ADropTargetWidget; + FRegistered := False; +end; + +procedure TfpgOLEDropTarget.RegisterDragDrop; +begin + ActiveX.RegisterDragDrop(TfpgWidget(FDropTarget).WinHandle, Self as IDropTarget); + FRegistered := True; +end; + +procedure TfpgOLEDropTarget.RevokeDragDrop; +begin + FRegistered := False; + ActiveX.RevokeDragDrop(TfpgWidget(FDropTarget).WinHandle); +end; + +destructor TfpgOLEDropTarget.Destroy; +begin + if FRegistered then RevokeDragDrop; + inherited; +end; + +procedure TfpgOLEDropTarget.DoDragEnter(DataObj: IDataObject; + KeyState: Integer; PT: TPoint; var Effect: TfpgOLEDragDropEffect); +begin + if Assigned(FOnDragEnter) then begin + FOnDragEnter(Self, DataObj, KeyState, PT, Effect); + end; +end; + +procedure TfpgOLEDropTarget.DoDragOver(KeyState: Integer; PT: TPoint; + var Effect: TfpgOLEDragDropEffect); +begin + if Assigned(FOnDragOver) then begin + FOnDragOver(Self, KeyState, PT, Effect); + end; +end; + +procedure TfpgOLEDropTarget.DoDragDrop(DataObj: IDataObject; KeyState: Integer; + PT: TPoint; Effect: TfpgOLEDragDropEffect); +begin + if Assigned(FOnDragDrop) then begin + FOnDragDrop(Self, DataObj, KeyState, PT, Effect); + end; +end; + +{ TDragFilesTarget } + +function TDragFilesTarget.DoDragAcceptFiles(DataObj: IDataObject): Boolean; +const + FormatEtcHDrop: TFormatEtc = (cfFormat:CF_HDROP;ptd:nil;dwAspect:DVASPECT_CONTENT;lindex:-1;tymed:TYMED_HGLOBAL); + FormatEtcFileDescriptor: TFormatEtc = (cfFormat:0;ptd:nil;dwAspect:DVASPECT_CONTENT;lindex:-1;tymed:TYMED_HGLOBAL); + FormatEtcFileContents: TFormatEtc = (cfFormat:0;ptd:nil;dwAspect:DVASPECT_CONTENT;lindex:-1;tymed:TYMED_ISTREAM); +var + StgMedium: TStgMedium; + DropHandle: HDROP; + EnumFormatEtc: IEnumFORMATETC; + FE: TFormatEtc; + FetchedCount: Longint; + FormatName: array[0..MAX_PATH] of Char; + FileGroupDescriptor: PFileGroupDescriptorA; + I, Count: Integer; + FileDescriptor: TFileDescriptorA; + FileNames: TStringList; +begin + FileNames := TStringList.Create; + try + if Assigned(FOnDragAcceptFiles) then + begin + Result := False; + FormatEtcFileDescriptor.cfFormat := CF_FILEDESCRIPTOR; + FormatEtcFileContents.cfFormat := CF_FILECONTENTS; + + if (DataObj.QueryGetData(FormatEtcHDrop) = S_OK) and + (DataObj.GetData(FormatEtcHDrop,StgMedium) = S_OK) then + begin + DropHandle := StgMedium.hGlobal; + GetFileNamesFromDropHandle(DropHandle, FileNames); + Result := FOnDragAcceptFiles(Self, FileNames); + ReleaseStgMedium(StgMedium); + end + else + if (DataObj.QueryGetData(FormatEtcFileDescriptor) = S_OK) and + (DataObj.QueryGetData(FormatEtcFileContents) = S_OK) and + (DataObj.GetData(FormatEtcFileDescriptor,StgMedium) = S_OK) then + begin + FileGroupDescriptor := GlobalLock(StgMedium.hGlobal); + if FileGroupDescriptor <> nil then + begin + Count := FileGroupDescriptor^.cItems; + I := 0; + while I < Count do + begin + FileDescriptor := FileGroupDescriptor^.fgd[I]; + FileNames.Add(FileDescriptor.cFileName); + Inc(I); + end; + GlobalUnlock(StgMedium.hGlobal); + end; + Result := FOnDragAcceptFiles(Self, FileNames); + ReleaseStgMedium(StgMedium); + end + else + begin +// DataObj.EnumFormatEtc(DATADIR_GET, EnumFormatEtc); +// EnumFormatEtc.Reset; +// while EnumFormatEtc.Next(1, FE, @FetchedCount) = S_OK do begin +// GetClipboardFormatName(FE.cfFormat,FormatName,MAX_PATH); +// ShowMessage(FormatName); +// end; + end; + end + else + begin + Result := True; + end; + finally + FileNames.Free; + end; +end; + +procedure TDragFilesTarget.DoDragEnter(DataObj: IDataObject; + KeyState: Integer; PT: TPoint; var Effect: TfpgOLEDragDropEffect); +begin + FDragAcceptFiles := DoDragAcceptFiles(DataObj); + if FDragAcceptFiles and DoDragAcceptPosition(PT) then begin + inherited; + end else begin + Effect := deNone; + end; +end; + +procedure TDragFilesTarget.DoDragOver(KeyState: Integer; PT: TPoint; + var Effect: TfpgOLEDragDropEffect); +begin + if FDragAcceptFiles and DoDragAcceptPosition(PT) then begin + inherited; + end else begin + Effect := deNone; + end; +end; + +procedure TDragFilesTarget.DoDragDrop(DataObj: IDataObject; + KeyState: Integer; PT: TPoint; Effect: TfpgOLEDragDropEffect); +begin + DoDropFiles(DataObj, PT); + inherited; +end; + +function TDragFilesTarget.DoDragAcceptPosition(PT: TPoint): Boolean; +begin + if Assigned(FOnDragAcceptPosition) then begin + Result := FOnDragAcceptPosition(Self, PT); + end else begin + Result := True; + end; +end; + +procedure TDragFilesTarget.DoDropFiles(DataObj: IDataObject; PT: TPoint); +const + FormatEtcHDrop: TFormatEtc = (cfFormat:CF_HDROP;ptd:nil;dwAspect:DVASPECT_CONTENT;lindex:-1;tymed:TYMED_HGLOBAL); + FormatEtcFileDescriptor: TFormatEtc = + (cfFormat:0;ptd:nil;dwAspect:DVASPECT_CONTENT;lindex:-1;tymed:TYMED_HGLOBAL); + FormatEtcFileContents: TFormatEtc = + (cfFormat:0;ptd:nil;dwAspect:DVASPECT_CONTENT;lindex:-1;tymed:TYMED_ISTREAM); +var + StgMedium, StgMediumContents: TStgMedium; + DropHandle: HDROP; + FileNames: TStringList; + FileGroupDescriptor: PFileGroupDescriptorA; + I, Count: Integer; + FileDescriptor: TFileDescriptorA; + Path: array[0..MAX_PATH] of Char; + TempFileName: string; +begin + if not Assigned(FOnDropFiles) then Exit; + FileNames := TStringList.Create; + try + FormatEtcFileDescriptor.cfFormat := CF_FILEDESCRIPTOR; + FormatEtcFileContents.cfFormat := CF_FILECONTENTS; + if (DataObj.QueryGetData(FormatEtcHDrop) = S_OK) and + (DataObj.GetData(FormatEtcHDrop,StgMedium) = S_OK) then begin + DropHandle := StgMedium.hGlobal; + GetFileNamesFromDropHandle(DropHandle, FileNames); + FOnDropFiles(Self, PT, FileNames); + ReleaseStgMedium(StgMedium); + end else + if (DataObj.QueryGetData(FormatEtcFileDescriptor) = S_OK) and + (DataObj.QueryGetData(FormatEtcFileContents) = S_OK) and + (DataObj.GetData(FormatEtcFileDescriptor,StgMedium) = S_OK) then begin + GetTempPath(MAX_PATH, Path); + GetTempFileName(Path, 'PXM', 0, Path); + FileGroupDescriptor := GlobalLock(StgMedium.hGlobal); + if FileGroupDescriptor <> nil then begin + Count := FileGroupDescriptor^.cItems; + I := 0; + while I < Count do begin + FileDescriptor := FileGroupDescriptor^.fgd[I]; + TempFileName := ChangeFileExt(Path, ExtractFileExt(FileDescriptor.cFileName)); + FormatEtcFileContents.lindex := I; + if (DataObj.GetData(FormatEtcFileContents,StgMediumContents) = S_OK) then begin + StreamToFile(IStream(StgMediumContents.pstm), TempFileName); + FileNames.Clear; + FileNames.Add(TempFileName); + FOnDropFiles(Self, PT, FileNames); + ReleaseStgMedium(StgMediumContents); + end; + Inc(I); + end; + GlobalUnlock(StgMedium.hGlobal); + end; + FOnDropFiles(Self, PT, FileNames); + ReleaseStgMedium(StgMedium); + ReleaseStgMedium(StgMediumContents); + end; + finally + FileNames.Free; + end; +end; + +procedure TDragFilesTarget.GetFileNamesFromDropHandle(DropHandle: HDROP; SL: TStrings); +var + I: Integer; + Path: array[0..MAX_PATH] of Char; +begin + for I := 0 to DragQueryFile(DropHandle, $FFFFFFFF, nil, 0) do begin + DragQueryFile(DropHandle, I, Path, MAX_PATH); + SL.Add(Path); + end; + DragFinish(DropHandle); +end; + +procedure TDragFilesTarget.StreamToFile(Stream: IStream; const FileName: string); +const + BLOCK_SIZE = 4096; +var + BytesRead: Longint; + FileStream: TFileStream; + Buffer: array[0..BLOCK_SIZE] of Byte; +begin + FileStream := TFileStream.Create(FileName, fmCreate); + try + while (Stream.Read(@Buffer[0], BLOCK_SIZE, @BytesRead) = S_OK) and (BytesRead > 0) do begin + FileStream.Write(Buffer, BytesRead); + end; + finally + FileStream.Free; + end; +end; + +initialization + CF_FILENAMEMAP := RegisterClipboardFormat(CFSTR_FILENAMEMAP); + CF_FILEDESCRIPTOR := RegisterClipboardFormat(CFSTR_FILEDESCRIPTOR); + CF_FILECONTENTS := RegisterClipboardFormat(CFSTR_FILECONTENTS); + +finalization + +end. + -- cgit v1.2.3-70-g09d2 From c50176a7efdf0545eddaf0b9d55fca1bf357e896 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 18 Oct 2010 17:12:11 +0200 Subject: GDI: Added OLE DND into TfpgGDIWindow. AcceptDrops: is implemented and can be toggled at runtime or designtime. Windows cursor also changes to show that target windows can accept drops. --- src/corelib/gdi/fpg_gdi.pas | 35 +++++++++++++++++------------------ src/corelib/gdi/fpgui_toolkit.lpk | 9 ++++++--- src/corelib/gdi/fpgui_toolkit.pas | 4 ++-- 3 files changed, 25 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index e7c3db3c..356c7cb1 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -37,6 +37,7 @@ uses {$IFDEF DEBUG} ,dbugintf {$ENDIF DEBUG} + ,fpg_OLEDragDrop ; { Constants missing on windows unit } @@ -145,8 +146,8 @@ type TfpgGDIWindow = class(TfpgWindowBase) private - FDragManager: TGDIDragManager; - function GetDragManager: TGDIDragManager; + FDropManager: TfpgOLEDropTarget; + function GetDropManager: TfpgOLEDropTarget; private FMouseInWindow: boolean; FNonFullscreenRect: TfpgRect; @@ -156,7 +157,7 @@ type QueueAcceptDrops: boolean; function DoMouseEnterLeaveCheck(AWindow: TfpgGDIWindow; uMsg, wParam, lParam: Cardinal): Boolean; procedure WindowSetFullscreen(aFullScreen, aUpdate: boolean); - property DragManager: TGDIDragManager read GetDragManager; + property DropManager: TfpgOLEDropTarget read GetDropManager; protected FWinHandle: TfpgWinHandle; FModalForWin: TfpgGDIWindow; @@ -260,17 +261,15 @@ type end; - { TGDIDragManager } - TGDIDragManager = class(TInterfacedObject, IDropTarget) private FDropTarget: TObject; { actually a TfpgWidget } FRegistered: boolean; { IDropTarget } - function DragEnter(const dataObj: IDataObject; grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult;StdCall; - function DragOver(grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult;StdCall; - function DragLeave: HResult;StdCall; - function Drop(const dataObj: IDataObject; grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD):HResult;StdCall; + function DragEnter(const dataObj: IDataObject; grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult;StdCall; + function DragOver(grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult;StdCall; + function DragLeave: HResult;StdCall; + function Drop(const dataObj: IDataObject; grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD):HResult;StdCall; public constructor Create(ADropTarget: TObject); reintroduce; destructor Destroy; override; @@ -1313,11 +1312,11 @@ var // this are required for Windows MouseEnter & MouseExit detection. uLastWindowHndl: TfpgWinHandle; -function TfpgGDIWindow.GetDragManager: TGDIDragManager; +function TfpgGDIWindow.GetDropManager: TfpgOLEDropTarget; begin - if not Assigned(FDragManager) then - FDragManager := TGDIDragManager.Create(self); - Result := FDragManager; + if not Assigned(FDropManager) then + FDropManager := TfpgOLEDropTarget.Create(self); + Result := FDropManager; end; function TfpgGDIWindow.DoMouseEnterLeaveCheck(AWindow: TfpgGDIWindow; uMsg, wParam, lParam: Cardinal): Boolean; @@ -1720,14 +1719,14 @@ begin if AValue then begin if HasHandle then - DragManager.RegisterDragDrop + DropManager.RegisterDragDrop else QueueAcceptDrops := True; // we need to do this once we have a winhandle end else begin if HasHandle then - DragManager.RevokeDragDrop; + DropManager.RevokeDragDrop; QueueAcceptDrops := False; end; end; @@ -1736,14 +1735,14 @@ constructor TfpgGDIWindow.Create(AOwner: TComponent); begin inherited Create(AOwner); FWinHandle := 0; + FDropManager := nil; FFullscreenIsSet := false; end; destructor TfpgGDIWindow.Destroy; begin - if (self as TfpgWidget).AcceptDrops and Assigned(FDragManager) then - FDragManager.RevokeDragDrop; - FDragManager := nil; { frees drag manager instance } + if (self as TfpgWidget).AcceptDrops and Assigned(FDropManager) then + FDropManager.Free; inherited Destroy; end; diff --git a/src/corelib/gdi/fpgui_toolkit.lpk b/src/corelib/gdi/fpgui_toolkit.lpk index 11731043..2f606e9f 100644 --- a/src/corelib/gdi/fpgui_toolkit.lpk +++ b/src/corelib/gdi/fpgui_toolkit.lpk @@ -5,7 +5,7 @@ - + @@ -16,7 +16,6 @@ - @@ -31,7 +30,7 @@ - + @@ -352,6 +351,10 @@ + + + + diff --git a/src/corelib/gdi/fpgui_toolkit.pas b/src/corelib/gdi/fpgui_toolkit.pas index 2e3e81b6..adc1c74d 100644 --- a/src/corelib/gdi/fpgui_toolkit.pas +++ b/src/corelib/gdi/fpgui_toolkit.pas @@ -1,4 +1,4 @@ -{ This file was automatically created by Lazarus. do not edit! +{ This file was automatically created by Lazarus. Do not edit! This source is only used to compile and install the package. } @@ -18,7 +18,7 @@ uses fpg_radiobutton, fpg_scrollbar, fpg_style, fpg_tab, fpg_trackbar, fpg_tree, fpgui_db, fpg_gdi, fpg_impl, fpg_splitter, fpg_hint, fpg_spinedit, fpg_extgraphics, fpg_ColorMapping, fpg_ColorWheel, fpg_interface, - fpg_editbtn, fpg_imgfmt_jpg, fpg_imgutils; + fpg_editbtn, fpg_imgfmt_jpg, fpg_imgutils, fpg_OLEDragDrop; implementation -- cgit v1.2.3-70-g09d2 From f2897d14008a66f50a0eaf732de1b214dabb2563 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 21 Oct 2010 16:32:11 +0200 Subject: GDI: Changed TfpgOLEDragDropEffect type to DWORD to match OLE API --- src/corelib/gdi/fpg_oledragdrop.pas | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_oledragdrop.pas b/src/corelib/gdi/fpg_oledragdrop.pas index 29ebe7c3..e7c45736 100644 --- a/src/corelib/gdi/fpg_oledragdrop.pas +++ b/src/corelib/gdi/fpg_oledragdrop.pas @@ -61,7 +61,7 @@ type TfpgOLEDragDropEffect = (deNone, deCopy, deMove, deLink); - TfpgOLEDragEnterEvent = procedure(Sender: TObject; DataObj: IDataObject; KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect) of object; + TfpgOLEDragEnterEvent = procedure(Sender: TObject; DataObj: IDataObject; KeyState: Longint; PT: TPoint; var Effect: DWORD) of object; TfpgOLEDragOverEvent = procedure(Sender: TObject; KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect) of object; TfpgOLEDragDropEvent = procedure(Sender: TObject; DataObj: IDataObject; KeyState: Longint; PT: TPoint; Effect: TfpgOLEDragDropEffect) of object; @@ -75,7 +75,7 @@ type FOnDragLeave: TNotifyEvent; FOnDragDrop: TfpgOLEDragDropEvent; protected - procedure DoDragEnter(DataObj: IDataObject; KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect); virtual; + procedure DoDragEnter(DataObj: IDataObject; KeyState: Longint; PT: TPoint; var Effect: DWORD); virtual; procedure DoDragOver(KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect); virtual; procedure DoDragDrop(DataObj: IDataObject; KeyState: Longint; PT: TPoint; Effect: TfpgOLEDragDropEffect); virtual; { IInterface } @@ -87,7 +87,7 @@ type function DragOver(grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult; stdcall; function DragLeave: HResult; stdcall; function Drop(const dataObj: IDataObject; grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult; stdcall; - + public property OnDragEnter: TfpgOLEDragEnterEvent read FOnDragEnter write FOnDragEnter; property OnDragOver: TfpgOLEDragOverEvent read FOnDragOver write FOnDragOver; property OnDragLeave: TNotifyEvent read FOnDragLeave write FOnDragLeave; @@ -176,7 +176,7 @@ type function DoDragAcceptFiles(DataObj: IDataObject): Boolean; function DoDragAcceptPosition(PT: TPoint): Boolean; procedure DoDropFiles(DataObj: IDataObject; PT: TPoint); - procedure DoDragEnter(DataObj: IDataObject; KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect); override; + procedure DoDragEnter(DataObj: IDataObject; KeyState: Longint; PT: TPoint; var Effect: DWORD); override; procedure DoDragOver(KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect); override; procedure DoDragDrop(DataObj: IDataObject; KeyState: Longint; PT: TPoint; Effect: TfpgOLEDragDropEffect); override; public @@ -684,14 +684,14 @@ begin end; procedure TfpgOLEDropTarget.DoDragEnter(DataObj: IDataObject; - KeyState: Integer; PT: TPoint; var Effect: TfpgOLEDragDropEffect); + KeyState: LongInt; PT: TPoint; var Effect: DWORD); begin if Assigned(FOnDragEnter) then begin FOnDragEnter(Self, DataObj, KeyState, PT, Effect); end; end; -procedure TfpgOLEDropTarget.DoDragOver(KeyState: Integer; PT: TPoint; +procedure TfpgOLEDropTarget.DoDragOver(KeyState: LongInt; PT: TPoint; var Effect: TfpgOLEDragDropEffect); begin if Assigned(FOnDragOver) then begin @@ -699,7 +699,7 @@ begin end; end; -procedure TfpgOLEDropTarget.DoDragDrop(DataObj: IDataObject; KeyState: Integer; +procedure TfpgOLEDropTarget.DoDragDrop(DataObj: IDataObject; KeyState: LongInt; PT: TPoint; Effect: TfpgOLEDragDropEffect); begin if Assigned(FOnDragDrop) then begin @@ -783,28 +783,25 @@ begin end; procedure TDragFilesTarget.DoDragEnter(DataObj: IDataObject; - KeyState: Integer; PT: TPoint; var Effect: TfpgOLEDragDropEffect); + KeyState: LongInt; PT: TPoint; var Effect: DWORD); begin FDragAcceptFiles := DoDragAcceptFiles(DataObj); - if FDragAcceptFiles and DoDragAcceptPosition(PT) then begin - inherited; - end else begin - Effect := deNone; - end; + if FDragAcceptFiles and DoDragAcceptPosition(PT) then + inherited DoDragEnter(DataObj, KeyState, PT, Effect) + else + Effect := DROPEFFECT_NONE; end; -procedure TDragFilesTarget.DoDragOver(KeyState: Integer; PT: TPoint; - var Effect: TfpgOLEDragDropEffect); +procedure TDragFilesTarget.DoDragOver(KeyState: LongInt; PT: TPoint; var Effect: TfpgOLEDragDropEffect); begin - if FDragAcceptFiles and DoDragAcceptPosition(PT) then begin - inherited; - end else begin + if FDragAcceptFiles and DoDragAcceptPosition(PT) then + inherited DoDragOver(KeyState, PT, Effect) + else Effect := deNone; - end; end; procedure TDragFilesTarget.DoDragDrop(DataObj: IDataObject; - KeyState: Integer; PT: TPoint; Effect: TfpgOLEDragDropEffect); + KeyState: LongInt; PT: TPoint; Effect: TfpgOLEDragDropEffect); begin DoDropFiles(DataObj, PT); inherited; -- cgit v1.2.3-70-g09d2 From dacacff86d0bc8772b6fd3ceca055f38711abaf8 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 21 Oct 2010 16:32:56 +0200 Subject: Implemented equals (=) operator for TPoint type --- src/corelib/fpg_main.pas | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index 0f117360..5907c1a9 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -422,6 +422,7 @@ procedure DebugLn(const s1, s2, s3, s4: TfpgString); // operator overloading of some useful structures operator = (a: TRect; b: TRect): boolean; operator = (const ASize1, ASize2: TfpgSize) b: Boolean; +operator = (const APoint1, APoint2: TPoint) b: Boolean; operator + (const APoint1, APoint2: TPoint) p: TPoint; operator + (const APoint1, APoint2: TfpgPoint) p: TfpgPoint; operator + (const APoint: TPoint; ASize: TfpgSize) p: TPoint; @@ -866,6 +867,11 @@ begin b := (ASize1.w = ASize2.w) and (ASize1.h = ASize2.h); end; +operator = (const APoint1, APoint2: TPoint) b: Boolean; +begin + b := (APoint1.X = APoint2.X) and (APoint1.Y = APoint2.Y); +end; + operator + (const APoint1, APoint2: TPoint) p: TPoint; begin p.x := APoint1.x + APoint2.x; -- cgit v1.2.3-70-g09d2 From bae82a7e2d8c20e852836251ba117211241db117 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 21 Oct 2010 16:33:58 +0200 Subject: GDI: implemented some helper functions for OLE DND clipboard types --- src/corelib/gdi/fpg_oledragdrop.pas | 75 +++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) (limited to 'src') diff --git a/src/corelib/gdi/fpg_oledragdrop.pas b/src/corelib/gdi/fpg_oledragdrop.pas index e7c45736..f348e3f0 100644 --- a/src/corelib/gdi/fpg_oledragdrop.pas +++ b/src/corelib/gdi/fpg_oledragdrop.pas @@ -185,6 +185,8 @@ type property OnDropFiles: TDropFilesEvent read FOnDropFiles write FOnDropFiles; end; +function WindowsMimeLookup(const CFFormat: string): string; +function EnumDataToStringList(DataObj: IDataObject): TStringList; implementation @@ -196,6 +198,79 @@ var CF_FILEDESCRIPTOR: Cardinal; CF_FILECONTENTS: Cardinal; + +function WindowsMimeLookup(const CFFormat: string): string; +begin + { replace know clipboard formats with mime types } + if CFFormat = 'CF_TEXT' then + Result := 'text/plain' + else if CFFormat = 'CF_UNICODETEXT' then + Result := 'text/plain' + else if CFFormat = 'CF_OEMTEXT' then + Result := 'text/plain' + else if CFFormat = 'CF_HDROP' then + Result := 'text/uri-list' + else if CFFormat = 'CF_RICHTEXT' then + Result := 'text/html' + else + Result := CFFormat; +end; + +function WindowsClipboardFormatToString(const CFFormat: integer): string; +begin + { replace know clipboard formats with mime types } + case CFFormat of + CF_DIF : result := 'CF_DIF'; + CF_DIB : result := 'CF_DIB'; + CF_TEXT : result := 'CF_TEXT'; + CF_SYLK : result := 'CF_SYLK'; + CF_TIFF : result := 'CF_TIFF'; + CF_RIFF : result := 'CF_RIFF'; + CF_WAVE : result := 'CF_WAVE'; + CF_HDROP : result := 'CF_HDROP'; + CF_BITMAP : result := 'CF_BITMAP'; + CF_LOCALE : result := 'CF_LOCALE'; + CF_OEMTEXT : result := 'CF_OEMTEXT'; + CF_PALETTE : result := 'CF_PALETTE'; + CF_PENDATA : result := 'CF_PENDATA'; + CF_UNICODETEXT : result := 'CF_UNICODETEXT'; + CF_ENHMETAFILE : result := 'CF_ENHMETAFILE'; + CF_METAFILEPICT : result := 'CF_METAFILEPICT'; + else + Result := Format('unknown (%d)', [CFFormat]); + end; +end; + +function EnumDataToStringList(DataObj: IDataObject): TStringList; +var + FE: FORMATETC; + EnumFormats: IEnumFORMATETC; + num: integer; + lname: string; + FormatName: array[0..MAX_PATH] of Char; + i: integer; +begin + if DataObj.EnumFormatEtc(DATADIR_GET, EnumFormats) <> S_OK then + raise Exception.Create('EnumDataToStringList: Failed to get EnumFormatEtc interface'); + + Result := TStringList.Create; + EnumFormats.Reset; + while EnumFormats.Next(1, FE, @num) = S_OK do + begin + lName := ''; + i := GetClipboardFormatName(FE.cfFormat,FormatName,MAX_PATH); + if i <> 0 then + begin + lName := FormatName; + end + else + begin + lName := WindowsClipboardFormatToString(FE.cfFormat); + end; + Result.Add(lName); + end; +end; + procedure DeepCopyFormatEtc(P1, P2: PFormatEtc); begin P2^ := P1^; -- cgit v1.2.3-70-g09d2 From c5b6a7fea8272ba12b5d7ed5444402f8a810a065 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 21 Oct 2010 16:35:14 +0200 Subject: GDI: Fixed DragEnter implementation. We should not modify the dwEffect variable before the user gets a chance to look at it. --- src/corelib/gdi/fpg_oledragdrop.pas | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_oledragdrop.pas b/src/corelib/gdi/fpg_oledragdrop.pas index f348e3f0..1dce7d6c 100644 --- a/src/corelib/gdi/fpg_oledragdrop.pas +++ b/src/corelib/gdi/fpg_oledragdrop.pas @@ -655,24 +655,25 @@ end; function TfpgOLEDropTarget.DragEnter(const dataObj: IDataObject; grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult; -var - Effect: TfpgOLEDragDropEffect; -begin - dwEffect := DROPEFFECT_NONE; - Effect := deNone; - DoDragEnter(dataObj, grfKeyState, pt, Effect); - case Effect of - deNone: dwEffect := DROPEFFECT_NONE; - deCopy: dwEffect := DROPEFFECT_COPY; - deMove: dwEffect := DROPEFFECT_MOVE; - deLink: dwEffect := DROPEFFECT_LINK; - end; +//var +// Effect: TfpgOLEDragDropEffect; +begin + //dwEffect := DROPEFFECT_NONE; + //Effect := deNone; + DoDragEnter(dataObj, grfKeyState, pt, dwEffect); + //case Effect of + // deNone: dwEffect := DROPEFFECT_NONE; + // deCopy: dwEffect := DROPEFFECT_COPY; + // deMove: dwEffect := DROPEFFECT_MOVE; + // deLink: dwEffect := DROPEFFECT_LINK; + //end; Result := S_OK; end; function TfpgOLEDropTarget.DragLeave: HResult; begin Result := S_OK; + DoDragLeave; end; function TfpgOLEDropTarget.DragOver(grfKeyState: DWORD; pt: TPoint; -- cgit v1.2.3-70-g09d2 From 14b833869c02a78c83abeb23ddac3cde95f67df0 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 21 Oct 2010 16:35:47 +0200 Subject: GDI: Implemented DoDragLeave for droptarget --- src/corelib/gdi/fpg_oledragdrop.pas | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') diff --git a/src/corelib/gdi/fpg_oledragdrop.pas b/src/corelib/gdi/fpg_oledragdrop.pas index 1dce7d6c..39f93570 100644 --- a/src/corelib/gdi/fpg_oledragdrop.pas +++ b/src/corelib/gdi/fpg_oledragdrop.pas @@ -77,6 +77,7 @@ type protected procedure DoDragEnter(DataObj: IDataObject; KeyState: Longint; PT: TPoint; var Effect: DWORD); virtual; procedure DoDragOver(KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect); virtual; + procedure DoDragLeave; procedure DoDragDrop(DataObj: IDataObject; KeyState: Longint; PT: TPoint; Effect: TfpgOLEDragDropEffect); virtual; { IInterface } function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; @@ -775,6 +776,12 @@ begin end; end; +procedure TfpgOLEDropTarget.DoDragLeave; +begin + if Assigned(FOnDragLeave) then + FOnDragLeave(self); +end; + procedure TfpgOLEDropTarget.DoDragDrop(DataObj: IDataObject; KeyState: LongInt; PT: TPoint; Effect: TfpgOLEDragDropEffect); begin -- cgit v1.2.3-70-g09d2 From d0c9a38672f9eeb25c57a6a0a10a72266ce9b033 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 21 Oct 2010 16:37:07 +0200 Subject: GDI: implemented a helper function for DropAction conversion --- src/corelib/gdi/fpg_gdi.pas | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index 356c7cb1..68284f42 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -526,6 +526,20 @@ begin Result := Result or DROPEFFECT_MOVE; end; +function TranslateToWinDragEffect(const AAction: TfpgDropAction): DWORD; +begin + if AAction = daIgnore then + Result := DROPEFFECT_NONE + else if daLink = AAction then + Result := DROPEFFECT_LINK + else if daCopy = AAction then + Result := DROPEFFECT_COPY + else if daMove = AAction then + Result := DROPEFFECT_MOVE + else + Result := DROPEFFECT_NONE; { fallback, but should never be reached } +end; + {$IFDEF wince} procedure WinCESetDibBits(BMP: HBITMAP; awidth, aheight: Integer; aimgdata: Pointer; var bi: TBitmapInfo); -- cgit v1.2.3-70-g09d2 From 90ba379b6ee18be060051eee83e14eb26bf1770b Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 21 Oct 2010 16:37:59 +0200 Subject: GDI: Implemented HandleDNDLeave, DNDEnter and DNDPosition event handlers --- src/corelib/gdi/fpg_gdi.pas | 92 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index 68284f42..33563935 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -147,7 +147,11 @@ type TfpgGDIWindow = class(TfpgWindowBase) private FDropManager: TfpgOLEDropTarget; + FDropPos: TPoint; function GetDropManager: TfpgOLEDropTarget; + procedure HandleDNDLeave(Sender: TObject); + procedure HandleDNDEnter(Sender: TObject; DataObj: IDataObject; KeyState: Longint; PT: TPoint; var Effect: DWORD); + procedure HandleDNDPosition(Sender: TObject; KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect); private FMouseInWindow: boolean; FNonFullscreenRect: TfpgRect; @@ -1326,10 +1330,96 @@ var // this are required for Windows MouseEnter & MouseExit detection. uLastWindowHndl: TfpgWinHandle; +procedure TfpgGDIWindow.HandleDNDLeave(Sender: TObject); +var + wg: TfpgWidget; +begin + wg := self as TfpgWidget; + if wg.AcceptDrops then { if we get here, this should always be true anyway } + begin + if Assigned(wg.OnDragLeave) then + wg.OnDragLeave(nil); + end; +end; + +procedure TfpgGDIWindow.HandleDNDEnter(Sender: TObject; DataObj: IDataObject; + KeyState: Longint; PT: TPoint; var Effect: DWORD); +var + wg: TfpgWidget; + lMimeList: TStringList; + lMimeChoice: TfpgString; + lAccept: Boolean; + lDropAction: TfpgDropAction; + EnumIntf: IEnumFORMATETC; + msgp: TfpgMessageParams; +begin + wg := self as TfpgWidget; + if wg.AcceptDrops then + begin + lAccept := False; + + { enumerate the available formats } +// DataObj.EnumFormatEtc(DATADIR_GET, EnumIntf); +// EnumIntf.Next(); + lMimeList := EnumDataToStringList(DataObj); + + lMimeChoice := 'text/plain'; +// lMimeList := TStringList.Create; +// lMimeList.Add(lMimeChoice); +// lMimeList.Add('text/html'); + lDropAction := TranslateToFPGDropAction(Effect); + if Assigned(wg.OnDragEnter) then + wg.OnDragEnter(self, nil, lMimeList, lMimeChoice, lDropAction, lAccept); + + if not lAccept then + Effect := DROPEFFECT_NONE + else + Effect := TranslateToWinDragEffect(lDropAction); + + { Notify widget of drag status, so it can update its look } + if lAccept then + begin + FDropPos.x := PT.x; + FDropPos.y := PT.y; + fillchar(msgp, sizeof(msgp), 0); + msgp.mouse.x := PT.x; + msgp.mouse.y := PT.y; + fpgPostMessage(nil, wg, FPGM_DROPENTER, msgp); + end; + + end; +end; + +procedure TfpgGDIWindow.HandleDNDPosition(Sender: TObject; KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect); +var + msgp: TfpgMessageParams; + wg: TfpgWidget; +begin + wg := self as TfpgWidget; + { Notify widget of drag status, so it can update its look. We do the pos + check because OLE framework calls DragOver repeatedly even if the mouse + doesn't move, but simply because the mouse is over the widget. We don't + want that, for performance reasons. } + if FDropPos <> PT then + begin + FDropPos.x := PT.x; + FDropPos.y := PT.y; + fillchar(msgp, sizeof(msgp), 0); + msgp.mouse.x := PT.x; + msgp.mouse.y := PT.y; + fpgPostMessage(nil, wg, FPGM_DROPENTER, msgp); + end; +end; + function TfpgGDIWindow.GetDropManager: TfpgOLEDropTarget; begin if not Assigned(FDropManager) then + begin FDropManager := TfpgOLEDropTarget.Create(self); + FDropManager.OnDragLeave := @HandleDNDLeave; + FDropManager.OnDragEnter := @HandleDNDEnter; + FDropManager.OnDragOver := @HandleDNDPosition; + end; Result := FDropManager; end; @@ -1750,6 +1840,8 @@ begin inherited Create(AOwner); FWinHandle := 0; FDropManager := nil; + FDropPos.x := 0; + FDropPos.y := 0; FFullscreenIsSet := false; end; -- cgit v1.2.3-70-g09d2 From 93178a594eeac26ceb2d2b0a122f1c9124b2143b Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 22 Oct 2010 17:24:40 +0200 Subject: interface implementation methods can be private. We only work with the interface anyway, not an actual object instance. --- src/corelib/gdi/fpg_oledragdrop.pas | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_oledragdrop.pas b/src/corelib/gdi/fpg_oledragdrop.pas index 39f93570..7bf2b997 100644 --- a/src/corelib/gdi/fpg_oledragdrop.pas +++ b/src/corelib/gdi/fpg_oledragdrop.pas @@ -74,11 +74,7 @@ type FOnDragOver: TfpgOLEDragOverEvent; FOnDragLeave: TNotifyEvent; FOnDragDrop: TfpgOLEDragDropEvent; - protected - procedure DoDragEnter(DataObj: IDataObject; KeyState: Longint; PT: TPoint; var Effect: DWORD); virtual; - procedure DoDragOver(KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect); virtual; - procedure DoDragLeave; - procedure DoDragDrop(DataObj: IDataObject; KeyState: Longint; PT: TPoint; Effect: TfpgOLEDragDropEffect); virtual; + private { IInterface } function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; function _AddRef: Integer; stdcall; @@ -88,6 +84,11 @@ type function DragOver(grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult; stdcall; function DragLeave: HResult; stdcall; function Drop(const dataObj: IDataObject; grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult; stdcall; + protected + procedure DoDragEnter(DataObj: IDataObject; KeyState: Longint; PT: TPoint; var Effect: DWORD); virtual; + procedure DoDragOver(KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect); virtual; + procedure DoDragLeave; + procedure DoDragDrop(DataObj: IDataObject; KeyState: Longint; PT: TPoint; Effect: TfpgOLEDragDropEffect); virtual; public property OnDragEnter: TfpgOLEDragEnterEvent read FOnDragEnter write FOnDragEnter; property OnDragOver: TfpgOLEDragOverEvent read FOnDragOver write FOnDragOver; -- cgit v1.2.3-70-g09d2 From 463bc1af0193395a5ce73fbe79f008f46e987194 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 22 Oct 2010 17:25:30 +0200 Subject: GDI: Created a help function, GetFormatEtc, that sets up a TFormatEtc record --- src/corelib/gdi/fpg_oledragdrop.pas | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src') diff --git a/src/corelib/gdi/fpg_oledragdrop.pas b/src/corelib/gdi/fpg_oledragdrop.pas index 7bf2b997..0002c695 100644 --- a/src/corelib/gdi/fpg_oledragdrop.pas +++ b/src/corelib/gdi/fpg_oledragdrop.pas @@ -189,6 +189,7 @@ type function WindowsMimeLookup(const CFFormat: string): string; function EnumDataToStringList(DataObj: IDataObject): TStringList; +function GetFormatEtc(const CFFormat: DWORD): FORMATETC; implementation @@ -273,6 +274,15 @@ begin end; end; +function GetFormatEtc(const CFFormat: DWORD): FORMATETC; +begin + Result.CfFormat := CFFormat; + Result.Ptd := nil; + Result.dwAspect := DVASPECT_CONTENT; + Result.lindex := -1; + Result.tymed := TYMED_HGLOBAL; +end; + procedure DeepCopyFormatEtc(P1, P2: PFormatEtc); begin P2^ := P1^; -- cgit v1.2.3-70-g09d2 From 2c92fb8a8b26c42b5ce215c4c7ecab5f022da304 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 22 Oct 2010 17:26:10 +0200 Subject: Implemented a bare minimum MimeType to Win Clipboard lookup function. --- src/corelib/gdi/fpg_oledragdrop.pas | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src') diff --git a/src/corelib/gdi/fpg_oledragdrop.pas b/src/corelib/gdi/fpg_oledragdrop.pas index 0002c695..56415fad 100644 --- a/src/corelib/gdi/fpg_oledragdrop.pas +++ b/src/corelib/gdi/fpg_oledragdrop.pas @@ -187,7 +187,9 @@ type property OnDropFiles: TDropFilesEvent read FOnDropFiles write FOnDropFiles; end; + function WindowsMimeLookup(const CFFormat: string): string; +function WindowsClipboardLoopup(const AMime: string): DWORD; function EnumDataToStringList(DataObj: IDataObject): TStringList; function GetFormatEtc(const CFFormat: DWORD): FORMATETC; @@ -219,6 +221,15 @@ begin Result := CFFormat; end; +function WindowsClipboardLoopup(const AMime: string): DWORD; +begin + { TODO: We need to implement this correctly } + if AMime = 'text/plain' then + Result := CF_TEXT + else + Result := CF_TEXT; // fallback result +end; + function WindowsClipboardFormatToString(const CFFormat: integer): string; begin { replace know clipboard formats with mime types } -- cgit v1.2.3-70-g09d2 From 61bef3e47c911c8e2d82984adc79010940cd7bac Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 22 Oct 2010 17:27:02 +0200 Subject: GDI: When creating a list of clipboard formats, add mime equivalents too. --- src/corelib/gdi/fpg_oledragdrop.pas | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/corelib/gdi/fpg_oledragdrop.pas b/src/corelib/gdi/fpg_oledragdrop.pas index 56415fad..c3663689 100644 --- a/src/corelib/gdi/fpg_oledragdrop.pas +++ b/src/corelib/gdi/fpg_oledragdrop.pas @@ -261,6 +261,7 @@ var EnumFormats: IEnumFORMATETC; num: integer; lname: string; + lMimeName: string; FormatName: array[0..MAX_PATH] of Char; i: integer; begin @@ -282,6 +283,10 @@ begin lName := WindowsClipboardFormatToString(FE.cfFormat); end; Result.Add(lName); + { Lets add the mime type too if we can find one } + lMimeName := WindowsMimeLookup(lName); + if lName <> lMimeName then + Result.Add(lMimeName); end; end; -- cgit v1.2.3-70-g09d2 From 1835f3a010dfdd252f3776f6aff3d5992391fb05 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 22 Oct 2010 17:27:32 +0200 Subject: GDI: Reference to where I got info to implement Windows OLE DND --- src/corelib/gdi/fpg_oledragdrop.pas | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/corelib/gdi/fpg_oledragdrop.pas b/src/corelib/gdi/fpg_oledragdrop.pas index c3663689..2a3cefa9 100644 --- a/src/corelib/gdi/fpg_oledragdrop.pas +++ b/src/corelib/gdi/fpg_oledragdrop.pas @@ -13,6 +13,8 @@ Description: This unit implements the OLE Drag-n-Drop functionality of Windows. + This unit is implemented based on the articles posted on + http://www.catch22.net/tuts/dragdrop/ } unit fpg_OLEDragDrop; -- cgit v1.2.3-70-g09d2 From 89fff5ef2a0262689b871d5d2717475721f5d3b0 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 22 Oct 2010 17:28:18 +0200 Subject: GDI: Choose a more specific base class for DropTarget reference. --- src/corelib/gdi/fpg_gdi.pas | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index 33563935..ce80be83 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -267,7 +267,7 @@ type TGDIDragManager = class(TInterfacedObject, IDropTarget) private - FDropTarget: TObject; { actually a TfpgWidget } + FDropTarget: TfpgWindowBase; { actually a TfpgWidget } FRegistered: boolean; { IDropTarget } function DragEnter(const dataObj: IDataObject; grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult;StdCall; @@ -275,11 +275,11 @@ type function DragLeave: HResult;StdCall; function Drop(const dataObj: IDataObject; grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD):HResult;StdCall; public - constructor Create(ADropTarget: TObject); reintroduce; + constructor Create(ADropTarget: TfpgWindowBase); reintroduce; destructor Destroy; override; procedure RegisterDragDrop; procedure RevokeDragDrop; - property DropTarget: TObject read FDropTarget; { actually a TfpgWidget } + property DropTarget: TfpgWindowBase read FDropTarget; { actually a TfpgWidget } end; -- cgit v1.2.3-70-g09d2 From 0feb218751cb39e3dd23077876b23293906ec68f Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 22 Oct 2010 17:29:14 +0200 Subject: GDI: store user selected information from DragEnter event handler --- src/corelib/gdi/fpg_gdi.pas | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index ce80be83..849b55cb 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -148,6 +148,8 @@ type private FDropManager: TfpgOLEDropTarget; FDropPos: TPoint; + FUserMimeSelection: TfpgString; + FUserAcceptDrag: Boolean; function GetDropManager: TfpgOLEDropTarget; procedure HandleDNDLeave(Sender: TObject); procedure HandleDNDEnter(Sender: TObject; DataObj: IDataObject; KeyState: Longint; PT: TPoint; var Effect: DWORD); @@ -1334,6 +1336,7 @@ procedure TfpgGDIWindow.HandleDNDLeave(Sender: TObject); var wg: TfpgWidget; begin + FUserMimeSelection := ''; wg := self as TfpgWidget; if wg.AcceptDrops then { if we get here, this should always be true anyway } begin @@ -1374,7 +1377,11 @@ begin if not lAccept then Effect := DROPEFFECT_NONE else + begin Effect := TranslateToWinDragEffect(lDropAction); + FUserMimeSelection := lMimeChoice; + FUserAcceptDrag := True; + end; { Notify widget of drag status, so it can update its look } if lAccept then @@ -1843,6 +1850,8 @@ begin FDropPos.x := 0; FDropPos.y := 0; FFullscreenIsSet := false; + FUserMimeSelection := ''; + FUserAcceptDrag := False; end; destructor TfpgGDIWindow.Destroy; @@ -2724,7 +2733,7 @@ begin end; -constructor TGDIDragManager.Create(ADropTarget: TObject); +constructor TGDIDragManager.Create(ADropTarget: TfpgWindowBase); begin inherited Create; FDropTarget := ADropTarget; -- cgit v1.2.3-70-g09d2 From 98c7280a891fcb3f515de3d1b55f504df420eefd Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 22 Oct 2010 17:29:59 +0200 Subject: GDI: Implement last remaining part to allow DropTarget to receive data. --- src/corelib/gdi/fpg_gdi.pas | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index 849b55cb..6182fe37 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -24,6 +24,7 @@ unit fpg_gdi; {$mode objfpc}{$H+} {.$Define Debug} +{.$Define DND_DEBUG} interface @@ -154,6 +155,7 @@ type procedure HandleDNDLeave(Sender: TObject); procedure HandleDNDEnter(Sender: TObject; DataObj: IDataObject; KeyState: Longint; PT: TPoint; var Effect: DWORD); procedure HandleDNDPosition(Sender: TObject; KeyState: Longint; PT: TPoint; var Effect: TfpgOLEDragDropEffect); + procedure HandleDNDDrop(Sender: TObject; DataObj: IDataObject; KeyState: Longint; PT: TPoint; Effect: TfpgOLEDragDropEffect); private FMouseInWindow: boolean; FNonFullscreenRect: TfpgRect; @@ -1418,6 +1420,42 @@ begin end; end; +procedure TfpgGDIWindow.HandleDNDDrop(Sender: TObject; DataObj: IDataObject; + KeyState: Longint; PT: TPoint; Effect: TfpgOLEDragDropEffect); +var + FE: FORMATETC; + stgmed: STGMEDIUM; + data: pchar; + wg: TfpgWidget; + CF: DWORD; +begin + if not FUserAcceptDrag then + exit; + + {$IFDEF DND_DEBUG} + Writeln('TfpgGDIWindow.HandleDNDDrop'); + {$ENDIF} + + wg := self as TfpgWidget; + { construct a FORMATETC object } + CF := WindowsClipboardLoopup(FUserMimeSelection); + FE := GetFormatEtc(CF); + + if DataObj.QueryGetData(FE) = S_OK then + begin + if DataObj.GetData(FE, stgmed) = S_OK then + begin + { Yippie! the data is there, so go get it! } + data := GlobalLock(stgmed.HGLOBAL); + if Assigned(wg.OnDragDrop) then + wg.OnDragDrop(self, nil, pt.x, pt.y, data); + GlobalUnlock(stgmed.HGLOBAL); + { release the data using the COM API } + ReleaseStgMedium(stgmed); + end; + end; +end; + function TfpgGDIWindow.GetDropManager: TfpgOLEDropTarget; begin if not Assigned(FDropManager) then @@ -1426,6 +1464,7 @@ begin FDropManager.OnDragLeave := @HandleDNDLeave; FDropManager.OnDragEnter := @HandleDNDEnter; FDropManager.OnDragOver := @HandleDNDPosition; + FDropManager.OnDragDrop := @HandleDNDDrop; end; Result := FDropManager; end; -- cgit v1.2.3-70-g09d2 From d3cc01bd25651fdcda2c4a8f74f3004ccb569d82 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 11:45:27 +0200 Subject: Renamed TfpgMimeDataStruct to TfpgMimeDataItem * Also changed FormatCount to Count (more like standard list interface) * Also introduced a Items property (more like standard list interface) * The above to changes also made other implementations more simplified, so I did a bit of refactoring. --- src/corelib/fpg_base.pas | 81 ++++++++++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 37 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index ff4230e8..c81d9cd8 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -628,9 +628,9 @@ type end; - TfpgMimeDataStruct = class(TObject) + TfpgMimeDataItem = class(TObject) public - format: TfpgString; + format: TfpgString; { mime string type } data: Variant; constructor Create(const AFormat: TfpgString; const AData: variant); reintroduce; end; @@ -641,13 +641,14 @@ type { TODO: This is wrong, we must have one Data Storage object } FDataList: TObjectList; FUrlList: TList; + function GetItem(AIndex: Integer): TfpgMimeDataItem; function Geturls: TList; procedure Seturls(const AValue: TList); function GetText: TfpgString; procedure SetText(const AValue: TfpgString); function GetHTML: TfpgString; procedure SetHTML(const AValue: TfpgString); - function GetFormatCout: integer; + function GetCount: integer; public constructor Create; destructor Destroy; override; @@ -656,10 +657,11 @@ type function Formats: TStrings; function GetData(const AMimeType: TfpgString): Variant; procedure SetData(const AMimeType: TfpgString; const AData: Variant); + property Items[AIndex: Integer]: TfpgMimeDataItem read GetItem; default; property urls: TList read Geturls write Seturls; property Text: TfpgString read GetText write SetText; property HTML: TfpgString read GetHTML write SetHTML; - property FormatCount: integer read GetFormatCout; + property Count: integer read GetCount; end; TfpgDragBase = class(TObject) @@ -2751,9 +2753,9 @@ begin FTagPointer := nil; end; -{ TfpgMimeDataStruct } +{ TfpgMimeDataItem } -constructor TfpgMimeDataStruct.Create(const AFormat: TfpgString; const AData: variant); +constructor TfpgMimeDataItem.Create(const AFormat: TfpgString; const AData: variant); begin inherited Create; format := AFormat; @@ -2769,6 +2771,11 @@ begin Result := nil; end; +function TfpgMimeDataBase.GetItem(AIndex: Integer): TfpgMimeDataItem; +begin + Result := TfpgMimeDataItem(FDataList[AIndex]); +end; + procedure TfpgMimeDataBase.Seturls(const AValue: TList); begin if AValue = nil then @@ -2789,11 +2796,11 @@ var s: string; begin { TODO: if no text/plain, but we have HTML, we must strip all tags and return that } - for i := 0 to FDataList.Count-1 do + for i := 0 to Count-1 do begin - if TfpgMimeDataStruct(FDataList[i]).format = 'text/plain' then + if Items[i].format = 'text/plain' then begin - s := TfpgMimeDataStruct(FDataList[i]).data; + s := Items[i].data; Result := s; break; end; @@ -2803,20 +2810,20 @@ end; procedure TfpgMimeDataBase.SetText(const AValue: TfpgString); var i: integer; - r: TfpgMimeDataStruct; + r: TfpgMimeDataItem; begin { remove existing 'text/plain' first } - for i := FDataList.Count-1 downto 0 do + for i := Count-1 downto 0 do begin - r := TfpgMimeDataStruct(FDataList[i]); + r := Items[i]; if r.format = 'text/plain' then begin - FDataList.Remove(FDataList[i]); + FDataList.Remove(r); break; end; end; { now add new structure } - r := TfpgMimeDataStruct.Create('text/plain', AValue); + r := TfpgMimeDataItem.Create('text/plain', AValue); FDataList.Add(r); end; @@ -2826,11 +2833,11 @@ var s: string; begin { TODO: if data was HTML, we must strip all tags - regex will make this easy } - for i := 0 to FDataList.Count-1 do + for i := 0 to Count-1 do begin - if TfpgMimeDataStruct(FDataList[i]).format = 'text/html' then + if Items[i].format = 'text/html' then begin - s := TfpgMimeDataStruct(FDataList[i]).data; + s := Items[i].data; Result := s; break; end; @@ -2840,24 +2847,24 @@ end; procedure TfpgMimeDataBase.SetHTML(const AValue: TfpgString); var i: integer; - r: TfpgMimeDataStruct; + r: TfpgMimeDataItem; begin { remove existing 'text/html' first } - for i := FDataList.Count-1 downto 0 do + for i := Count-1 downto 0 do begin - r := TfpgMimeDataStruct(FDataList[i]); + r := Items[i]; if r.format = 'text/html' then begin - FDataList.Remove(FDataList[i]); + FDataList.Remove(r); break; end; end; { now add new structure } - r := TfpgMimeDataStruct.Create('text/html', AValue); + r := TfpgMimeDataItem.Create('text/html', AValue); FDataList.Add(r); end; -function TfpgMimeDataBase.GetFormatCout: integer; +function TfpgMimeDataBase.GetCount: integer; begin Result := FDataList.Count; end; @@ -2885,9 +2892,9 @@ var i: integer; begin Result := False; - for i := 0 to FDataList.Count-1 do + for i := 0 to Count-1 do begin - Result := TfpgMimeDataStruct(FDataList[i]).format = AMimeType; + Result := Items[i].format = AMimeType; if Result then break; end; @@ -2896,17 +2903,17 @@ end; function TfpgMimeDataBase.Formats: TStrings; var i: integer; - r: TfpgMimeDataStruct; + r: TfpgMimeDataItem; s: string; begin - if FDataList.Count = 0 then + if Count = 0 then Result := nil else begin Result := TStringList.Create; - for i := 0 to FDataList.Count-1 do + for i := 0 to Count-1 do begin - s := TfpgMimeDataStruct(FDataList[i]).format; + s := Items[i].format; Result.Add(s); end; end; @@ -2916,11 +2923,11 @@ function TfpgMimeDataBase.GetData(const AMimeType: TfpgString): Variant; var i: integer; begin - for i := 0 to FDataList.Count-1 do + for i := 0 to Count-1 do begin - if TfpgMimeDataStruct(FDataList[i]).format = AMimeType then + if Items[i].format = AMimeType then begin - Result := TfpgMimeDataStruct(FDataList[i]).data; + Result := Items[i].data; break; end; end; @@ -2929,20 +2936,20 @@ end; procedure TfpgMimeDataBase.SetData(const AMimeType: TfpgString; const AData: Variant); var i: integer; - r: TfpgMimeDataStruct; + r: TfpgMimeDataItem; begin { remove existing mime type first } - for i := FDataList.Count-1 downto 0 do + for i := Count-1 downto 0 do begin - r := TfpgMimeDataStruct(FDataList[i]); + r := Items[i]; if r.format = AMimeType then begin - FDataList.Remove(FDataList[i]); + FDataList.Remove(r); break; end; end; { now add new structure } - r := TfpgMimeDataStruct.Create(AMimeType, AData); + r := TfpgMimeDataItem.Create(AMimeType, AData); FDataList.Add(r); end; -- cgit v1.2.3-70-g09d2 From 2cd819cc6aef31153f0223a92dc9071b413d42fe Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 11:47:29 +0200 Subject: Added a new private Drag property to TfpgGDIApplication This allows use to easily find the TfpgDrag instance we are working with. Same was done in X11 backend. --- src/corelib/gdi/fpg_gdi.pas | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index 6182fe37..980339b4 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -57,6 +57,7 @@ type // forward declaration TfpgGDIWindow = class; TGDIDragManager = class; + TfpgGDIDrag = class; TfpgGDIFontResource = class(TfpgFontResourceBase) @@ -197,6 +198,10 @@ type TfpgGDIApplication = class(TfpgApplicationBase) + private + FDrag: TfpgGDIDrag; + procedure SetDrag(const AValue: TfpgGDIDrag); + property Drag: TfpgGDIDrag read FDrag write SetDrag; protected FDisplay: HDC; WindowClass: TWndClass; @@ -1162,6 +1167,13 @@ begin Result.Sort; end; +procedure TfpgGDIApplication.SetDrag(const AValue: TfpgGDIDrag); +begin + if Assigned(FDrag) then + FDrag.Free; + FDrag := AValue; +end; + function TfpgGDIApplication.GetHiddenWindow: HWND; begin if (FHiddenWindow = 0) then -- cgit v1.2.3-70-g09d2 From 187ba5cd250f2561e0156520332f4614bfba1219 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 11:49:24 +0200 Subject: GDI: Implemented StringToHandle in TfpgGDIDrag class This is needed so we can store a string in a global buffer for DND. This will also reduce code duplication a bit, by simply allowing us to call this function. --- src/corelib/gdi/fpg_gdi.pas | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index 980339b4..18b04da0 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -265,7 +265,10 @@ type end; + { Used mainly for sending drags - being the source of the drag } TfpgGDIDrag = class(TfpgDragBase) + private + function StringToHandle(const AString: TfpgString): HGLOBAL; protected FSource: TfpgGDIWindow; function GetSource: TfpgGDIWindow; virtual; @@ -2747,6 +2750,22 @@ end; { TfpgGDIDrag } +function TfpgGDIDrag.StringToHandle(const AString: TfpgString): HGLOBAL; +var + dest: HGLOBAL; + l: integer; + p: PChar; +begin + p := PChar(AString); + l := Length(AString)+1; + { allocate and lock a global memory buffer. Make it fixed + data so we don't have to use GlobalLock } + dest := GlobalAlloc(GMEM_FIXED, l); + { Copy the string into the buffer } + Move(p^, PChar(dest)^, l); + Result := dest; +end; + function TfpgGDIDrag.GetSource: TfpgGDIWindow; begin Result := FSource; -- cgit v1.2.3-70-g09d2 From 94a597e80e106ee15e1b924068c8caaeaa9a9fa5 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 11:51:56 +0200 Subject: Implemented a working TfpgGDIDrag.Execute Finally we are getting somewhere with OLE DND. --- src/corelib/gdi/fpg_gdi.pas | 105 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 101 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index 18b04da0..14422af3 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -273,7 +273,7 @@ type FSource: TfpgGDIWindow; function GetSource: TfpgGDIWindow; virtual; public - function Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction=daCopy): TfpgDropAction; override; + function Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction=daCopy): TfpgDropAction; override; end; @@ -2771,11 +2771,108 @@ begin Result := FSource; end; -function TfpgGDIDrag.Execute(const ADropActions: TfpgDropActions; - const ADefaultAction: TfpgDropAction): TfpgDropAction; +function TfpgGDIDrag.Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction): TfpgDropAction; +var + dwEffect: DWORD; + dwResult: HRESULT; + i: Integer; + F: PFormatEtc; + S: string; + M: PStgMedium; + itm: TfpgMimeDataItem; + lEffects: DWORD; + FDataObject: TfpgOLEDataObject; + FDropSource: TfpgOLEDropSource; + lIsTranslated: boolean; begin { TODO: this still needs to be implemented } - Result := daCopy; + if FDragging then + begin + {$IFDEF DND_DEBUG} + writeln('TfpgGDIDrag.Execute (already dragging)'); + {$ENDIF} + Result := daIgnore; + end + else + begin + {$IFDEF DND_DEBUG} + writeln('TfpgGDIDrag.Execute (new drag)'); + {$ENDIF} + FDragging := True; + wapplication.Drag := self; + lEffects := TranslateToWinDragEffects(ADropActions); + FDataObject := TfpgOLEDataObject.Create; + + for i := 0 to FMimeData.Count-1 do + begin + F := nil; + M := nil; + lIsTranslated := False; + {$Note OLE DND: We are only handling strings at the moment, this needs to be extended to other types too } + itm := FMimeData[i]; + writeln(' Processing mime-type: ', itm.Format); + + { description of data we are sending } + New(F); + F^.cfFormat := WindowsClipboardLookup(itm.format, lIsTranslated); + F^.ptd := nil; + F^.dwAspect := DVASPECT_CONTENT; + F^.lindex := -1; + F^.tymed := TYMED_HGLOBAL; + FDataObject.FormatEtcList.Add(F); + + { storage for data we are sending } + s := itm.data; + New(M); + M^.tymed := TYMED_HGLOBAL; + M^.hGlobal := StringToHandle(s); + FDataObject.StgMediumList.Add(M); + + { Original mime type was translated to a known Windows CF_ formats, add + mimetype string as-is as well } + if lIsTranslated then + begin + New(F); + F^.cfFormat := RegisterClipboardFormat(PChar(itm.format)); + F^.ptd := nil; + F^.dwAspect := DVASPECT_CONTENT; + F^.lindex := -1; + F^.tymed := TYMED_HGLOBAL; + FDataObject.FormatEtcList.Add(F); + + { storage for data we are sending } + s := itm.data; + New(M); + M^.tymed := TYMED_HGLOBAL; + M^.hGlobal := StringToHandle(s); + FDataObject.StgMediumList.Add(M); + end; + end; + + { Now let OLE take over from here } + FDropSource := TfpgOLEDropSource.Create; + dwResult := ActiveX.DoDragDrop( FDataObject as IDataObject, + FDropSource as IDropSource, + lEffects, + @dwEffect); + Result := TranslateToFPGDropAction(dwEffect); + + if dwResult = DRAGDROP_S_DROP then + begin + { which action did the user select, and act accordingly } + if dwEffect = DROPEFFECT_COPY then + begin + // nothing to do here + end; + if dwEffect = DROPEFFECT_MOVE then + begin + // Sowehow we need to remove the data from source + end; + end; + +// (FDropSource as IUnknown)._Release; +// (FDataObject as IUnknown)._Release; + end; end; { TGDIDragManager } -- cgit v1.2.3-70-g09d2 From 206f0498c7b78638535af6536c9468a8a63d6b30 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 11:54:28 +0200 Subject: Slight improvement to the WindowsClipboardLookup method. * Introduced a new parameter to know if we translated the mime type to a known Windows CF_ clipboard type. * Fixed the spelling mistake in the function name --- src/corelib/gdi/fpg_gdi.pas | 3 ++- src/corelib/gdi/fpg_oledragdrop.pas | 25 +++++++++++++++++++------ 2 files changed, 21 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index 14422af3..bda2be25 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -1443,6 +1443,7 @@ var data: pchar; wg: TfpgWidget; CF: DWORD; + lIsTranslated: Boolean; begin if not FUserAcceptDrag then exit; @@ -1453,7 +1454,7 @@ begin wg := self as TfpgWidget; { construct a FORMATETC object } - CF := WindowsClipboardLoopup(FUserMimeSelection); + CF := WindowsClipboardLookup(FUserMimeSelection, lIsTranslated); FE := GetFormatEtc(CF); if DataObj.QueryGetData(FE) = S_OK then diff --git a/src/corelib/gdi/fpg_oledragdrop.pas b/src/corelib/gdi/fpg_oledragdrop.pas index 2a3cefa9..6c7dc4e9 100644 --- a/src/corelib/gdi/fpg_oledragdrop.pas +++ b/src/corelib/gdi/fpg_oledragdrop.pas @@ -191,7 +191,7 @@ type function WindowsMimeLookup(const CFFormat: string): string; -function WindowsClipboardLoopup(const AMime: string): DWORD; +function WindowsClipboardLookup(const AMime: string; var IsTranslated: Boolean): DWORD; function EnumDataToStringList(DataObj: IDataObject): TStringList; function GetFormatEtc(const CFFormat: DWORD): FORMATETC; @@ -223,13 +223,26 @@ begin Result := CFFormat; end; -function WindowsClipboardLoopup(const AMime: string): DWORD; +function WindowsClipboardLookup(const AMime: string; var IsTranslated: Boolean): DWORD; begin - { TODO: We need to implement this correctly } - if AMime = 'text/plain' then - Result := CF_TEXT - else + { TODO: We need to improve this implementation } + if AMime = 'text/html' then + begin + { We don't want duplicate CF_TEXT in DataObject, so register some of our + known convenience types (from TfpgMimeData) as-is } + IsTranslated := False; + Result := RegisterClipboardFormat('text/html'); + end + else if Pos('text/', AMime) = 1 then + begin + IsTranslated := True; Result := CF_TEXT; // fallback result + end + else + begin + IsTranslated := False; + Result := RegisterClipboardFormat(PChar(AMime)); + end; end; function WindowsClipboardFormatToString(const CFFormat: integer): string; -- cgit v1.2.3-70-g09d2 From 817b52396b1625a186dfe40ec9f282d2c392b6aa Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 11:56:54 +0200 Subject: Bugfix in EnumDataToStringList() We can't just go adding mime types without actual data associated with each entry. So now we match the mime stringlist to exact data count in IDataObject --- src/corelib/gdi/fpg_oledragdrop.pas | 4 ---- 1 file changed, 4 deletions(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_oledragdrop.pas b/src/corelib/gdi/fpg_oledragdrop.pas index 6c7dc4e9..316c9799 100644 --- a/src/corelib/gdi/fpg_oledragdrop.pas +++ b/src/corelib/gdi/fpg_oledragdrop.pas @@ -298,10 +298,6 @@ begin lName := WindowsClipboardFormatToString(FE.cfFormat); end; Result.Add(lName); - { Lets add the mime type too if we can find one } - lMimeName := WindowsMimeLookup(lName); - if lName <> lMimeName then - Result.Add(lMimeName); end; end; -- cgit v1.2.3-70-g09d2 From 3f1a38ece21e5e7da9508c57e5fe2b23bea11817 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 11:58:52 +0200 Subject: Applied same logic in X11 to OLE DND regarding preferred mime choice Mime types should be registered from most specific (first item in mime list) to least specific (last item in mime list). The preferred mime choice will be the first item in the list. Raise an error if the mime list doesn't contain data. --- src/corelib/gdi/fpg_gdi.pas | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index bda2be25..15131adf 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -1378,15 +1378,15 @@ begin begin lAccept := False; - { enumerate the available formats } -// DataObj.EnumFormatEtc(DATADIR_GET, EnumIntf); -// EnumIntf.Next(); + { enumerate the available formats and return them as a StringList } lMimeList := EnumDataToStringList(DataObj); - lMimeChoice := 'text/plain'; -// lMimeList := TStringList.Create; -// lMimeList.Add(lMimeChoice); -// lMimeList.Add('text/html'); + if lMimeList.Count > 0 then + lMimeChoice := lMimeList[0] + else + {$NOTE We need to replace this message with a resouce string } + raise Exception.Create('fpGUI/GDI: no mime types available for DND operation'); + lDropAction := TranslateToFPGDropAction(Effect); if Assigned(wg.OnDragEnter) then wg.OnDragEnter(self, nil, lMimeList, lMimeChoice, lDropAction, lAccept); -- cgit v1.2.3-70-g09d2 From 420623b7b478d1bc653ef69ad6e22da344c3b478 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 12:00:50 +0200 Subject: Added DND debugging entries and minor code formatting improvements. --- src/corelib/gdi/fpg_gdi.pas | 13 ++++++++-- src/corelib/gdi/fpg_oledragdrop.pas | 49 ++++++++++++++++++++++++++----------- 2 files changed, 46 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index 15131adf..a6a94c4d 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -277,6 +277,7 @@ type end; + { Used mainly for receiving drags - being the target of the drag } TGDIDragManager = class(TInterfacedObject, IDropTarget) private FDropTarget: TfpgWindowBase; { actually a TfpgWidget } @@ -823,7 +824,7 @@ begin begin {$IFDEF DEBUG} if uMsg <> WM_MOUSEMOVE then - SendDebug('fpGFX/GDI: Found a mouse button event'); + writeln('fpGFX/GDI: Found a mouse button event'); {$ENDIF} // msgp.mouse.x := smallint(lParam and $FFFF); // msgp.mouse.y := smallint((lParam and $FFFF0000) shr 16); @@ -1353,6 +1354,9 @@ procedure TfpgGDIWindow.HandleDNDLeave(Sender: TObject); var wg: TfpgWidget; begin + {$IFDEF DND_DEBUG} + writeln('TfpgGDIWindow.HandleDNDLeave '); + {$ENDIF} FUserMimeSelection := ''; wg := self as TfpgWidget; if wg.AcceptDrops then { if we get here, this should always be true anyway } @@ -1373,6 +1377,9 @@ var EnumIntf: IEnumFORMATETC; msgp: TfpgMessageParams; begin + {$IFDEF DND_DEBUG} + writeln('TfpgGDIWindow.HandleDNDEnter '); + {$ENDIF} wg := self as TfpgWidget; if wg.AcceptDrops then begin @@ -1410,7 +1417,6 @@ begin msgp.mouse.y := PT.y; fpgPostMessage(nil, wg, FPGM_DROPENTER, msgp); end; - end; end; @@ -1426,6 +1432,9 @@ begin want that, for performance reasons. } if FDropPos <> PT then begin + {$IFDEF DND_DEBUG} + writeln('TfpgGDIWindow.HandleDNDPosition '); + {$ENDIF} FDropPos.x := PT.x; FDropPos.y := PT.y; fillchar(msgp, sizeof(msgp), 0); diff --git a/src/corelib/gdi/fpg_oledragdrop.pas b/src/corelib/gdi/fpg_oledragdrop.pas index 316c9799..fa17ba67 100644 --- a/src/corelib/gdi/fpg_oledragdrop.pas +++ b/src/corelib/gdi/fpg_oledragdrop.pas @@ -362,8 +362,10 @@ var begin DataObject := TfpgOLEDataObject.Create; + { append filenames as one long string delimited by #0. ie: something like a PChar } S := ''; - for I := 0 to FFileNames.Count - 1 do begin + for I := 0 to FFileNames.Count - 1 do + begin SetLength(S, Length(S)+Length(FFileNames[I])+1); Move(FFileNames[I][1], S[Length(S)-Length(FFileNames[I])], Length(FFileNames[I])); S[Length(S)] := #0; @@ -371,6 +373,7 @@ begin SetLength(S, Length(S)+1); S[Length(S)] := #0; + { description of data we are sending } New(F); F^.cfFormat := CF_HDROP; F^.ptd := nil; @@ -379,6 +382,7 @@ begin F^.tymed := TYMED_HGLOBAL; DataObject.FormatEtcList.Add(F); + { storage for data we are sending } New(M); M^.tymed := TYMED_HGLOBAL; M^.hGlobal := Cardinal(GlobalAlloc(GMEM_FIXED, SizeOf(TDropFiles)+Length(S))); @@ -389,9 +393,12 @@ begin Move(S[1], PChar(M^.hGlobal+SizeOf(TDropFiles))^, Length(S)); DataObject.StgMediumList.Add(M); - if (FAliasFileNames.Count > 0) and (FAliasFileNames.Count = FFileNames.Count) then begin + if (FAliasFileNames.Count > 0) and (FAliasFileNames.Count = FFileNames.Count) then + begin + { append filename aliases as one long string delimited by #0. ie: something like a PChar } S := ''; - for I := 0 to FAliasFileNames.Count - 1 do begin + for I := 0 to FAliasFileNames.Count - 1 do + begin SetLength(S, Length(S)+Length(FAliasFileNames[I])+1); Move(FAliasFileNames[I][1], S[Length(S)-Length(FAliasFileNames[I])], Length(FAliasFileNames[I])); S[Length(S)] := #0; @@ -399,6 +406,7 @@ begin SetLength(S, Length(S)+1); S[Length(S)] := #0; + { description of data we are sending } New(F); F^.cfFormat := CF_FILENAMEMAP; F^.ptd := nil; @@ -407,6 +415,7 @@ begin F^.tymed := TYMED_HGLOBAL; DataObject.FormatEtcList.Add(F); + { storage for data we are sending } New(M); M^.tymed := TYMED_HGLOBAL; M^.hGlobal := Cardinal(GlobalAlloc(GMEM_FIXED, Length(S))); @@ -417,8 +426,11 @@ begin DropSource := TfpgOLEDropSource.Create; dwResult := ActiveX.DoDragDrop(DataObject as IDataObject, DropSource as IDropSource, DROPEFFECT_COPY, @dwEffect); - if dwResult = DRAGDROP_S_DROP then begin - if dwEffect = DROPEFFECT_COPY then begin + if dwResult = DRAGDROP_S_DROP then + begin + if dwEffect = DROPEFFECT_COPY then + begin + // nothing to do. If this whas xxx_MOVE, we would remove data from source end; end; end; @@ -450,8 +462,7 @@ begin Result := DRAGDROP_S_USEDEFAULTCURSORS; end; -function TfpgOLEDropSource.QueryContinueDrag(fEscapePressed: BOOL; - grfKeyState: Integer): HResult; +function TfpgOLEDropSource.QueryContinueDrag(fEscapePressed: BOOL; grfKeyState: Integer): HResult; begin if FEscapePressed then Result := DRAGDROP_S_CANCEL @@ -459,6 +470,9 @@ begin Result := DRAGDROP_S_DROP else Result := S_OK; + {$IFDEF DND_DEBUG} + writeln('TfpgOLEDropSource.QueryContinueDrag Result = ', Result); + {$ENDIF} end; { TfpgOLEDataObject } @@ -503,7 +517,8 @@ end; function TfpgOLEDataObject.EnumFormatEtc(dwDirection: DWORD; out enumFormatEtc: IEnumFormatEtc): HResult; begin - if dwDirection = DATADIR_GET then begin + if dwDirection = DATADIR_GET then + begin enumFormatEtc := TfpgOLEEnumFormatEtc.Create(FFormatEtcList) as IEnumFormatEtc; Result := S_OK; end @@ -528,10 +543,12 @@ begin Idx := LookupFormatEtc(formatetcIn); if Idx = -1 then Result := DV_E_FORMATETC - else begin + else + begin medium.tymed := FFormatEtcList[Idx]^.tymed; medium.PUnkForRelease := nil; - if medium.tymed = TYMED_HGLOBAL then begin + if medium.tymed = TYMED_HGLOBAL then + begin medium.hGlobal := DupGlobalMem(FStgMediumList[Idx]^.hGlobal); Result := S_OK; end @@ -747,10 +764,14 @@ function TfpgOLEDropTarget.Drop(const dataObj: IDataObject; var Effect: TfpgOLEDragDropEffect; begin - if dwEffect and DROPEFFECT_COPY > 0 then Effect := deCopy - else if dwEffect and DROPEFFECT_MOVE > 0 then Effect := deMove - else if dwEffect and DROPEFFECT_LINK > 0 then Effect := deLink - else Effect := deNone; + if dwEffect and DROPEFFECT_COPY > 0 then + Effect := deCopy + else if dwEffect and DROPEFFECT_MOVE > 0 then + Effect := deMove + else if dwEffect and DROPEFFECT_LINK > 0 then + Effect := deLink + else + Effect := deNone; DoDragDrop(dataObj, grfKeyState, pt, Effect); Result := S_OK; end; -- cgit v1.2.3-70-g09d2 From 5b0c88e262642f787e96588599db19b618c58250 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 12:11:37 +0200 Subject: Updated X11 code due to property changes in TfpgMimeDataItem class. --- src/corelib/x11/fpg_x11.pas | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index 4f9c4ce8..e5f545e1 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -3217,11 +3217,11 @@ begin { free old array } SetLength(FMimeTypesArray, 0); { set size of new array. Extra element for the terminating x.None value } - SetLength(FMimeTypesArray, FMimedata.FormatCount+1); + SetLength(FMimeTypesArray, FMimedata.Count+1); sl := FMimeData.Formats as TStringList; try - for i := 0 to FMimeData.FormatCount-1 do + for i := 0 to FMimeData.Count-1 do begin s := PChar(sl[i]); a := XInternAtom(xapplication.Display, s, TBool(False)); @@ -3337,7 +3337,7 @@ begin xev.xclient.data.l[0] := FSource.WinHandle; - n := FMimeData.FormatCount; + n := FMimeData.Count; if n > 3 then i := 1 @@ -3489,8 +3489,7 @@ begin inherited Destroy; end; -function TfpgX11Drag.Execute(const ADropActions: TfpgDropActions; - const ADefaultAction: TfpgDropAction): TfpgDropAction; +function TfpgX11Drag.Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction): TfpgDropAction; var win: TWindow; begin @@ -3509,7 +3508,7 @@ begin raise Exception.Create('fpGUI/X11: Application failed to aquire selection owner status'); InitializeMimeTypesToAtoms; - if FMimeData.FormatCount > 3 then + if FMimeData.Count > 3 then SetTypeListProperty; end; end; -- cgit v1.2.3-70-g09d2 From d3bc090ffb6c1a96e2a6cb01f474f9318c4c84f1 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 12:38:03 +0200 Subject: Moved OnDragStartDetected from TfpgWidget to TfpgWindowBase * also introduced virtual DoDragStartDetected which executes the OnDragStartDetected event * We also added a override of DoDragStartDetected in GDI for some extra tasks. --- src/corelib/fpg_base.pas | 11 +++++++++++ src/corelib/fpg_widget.pas | 8 ++------ src/corelib/gdi/fpg_gdi.pas | 10 ++++++++++ 3 files changed, 23 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas index c81d9cd8..a5289474 100644 --- a/src/corelib/fpg_base.pas +++ b/src/corelib/fpg_base.pas @@ -435,6 +435,8 @@ type FSizeIsDirty: Boolean; FPosIsDirty: Boolean; FMouseCursorIsDirty: Boolean; + FOnDragStartDetected: TNotifyEvent; + FDragActive: boolean; function HandleIsValid: boolean; virtual; abstract; procedure DoUpdateWindowPosition; virtual; abstract; procedure DoAllocateWindowHandle(AParent: TfpgWindowBase); virtual; abstract; @@ -447,6 +449,7 @@ type procedure DoSetMouseCursor; virtual; abstract; procedure DoDNDEnabled(const AValue: boolean); virtual; abstract; procedure DoAcceptDrops(const AValue: boolean); virtual; abstract; + procedure DoDragStartDetected; virtual; procedure SetParent(const AValue: TfpgWindowBase); virtual; function GetParent: TfpgWindowBase; virtual; function GetCanvas: TfpgCanvasBase; virtual; @@ -459,6 +462,7 @@ type procedure SetWidth(const AValue: TfpgCoord); procedure HandleMove(x, y: TfpgCoord); virtual; procedure HandleResize(AWidth, AHeight: TfpgCoord); virtual; + property OnDragStartDetected: TNotifyEvent read FOnDragStartDetected write FOnDragStartDetected; public // The standard constructor. constructor Create(AOwner: TComponent); override; @@ -1137,6 +1141,12 @@ begin Result := MinHeight; end; +procedure TfpgWindowBase.DoDragStartDetected; +begin + if Assigned(FOnDragStartDetected) then + FOnDragStartDetected(self); +end; + procedure TfpgWindowBase.SetParent(const AValue: TfpgWindowBase); begin FParent := AValue; @@ -1257,6 +1267,7 @@ begin FSizeIsDirty := True; FMaxWidth := 0; FMaxHeight := 0; + FDragActive := False; end; procedure TfpgWindowBase.AfterConstruction; diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index 45a480dc..374a76ed 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -47,7 +47,6 @@ type FOnDragDrop: TfpgDragDropEvent; FOnDragEnter: TfpgDragEnterEvent; FOnDragLeave: TNotifyEvent; - FOnDragStartDetected: TNotifyEvent; FOnEnter: TNotifyEvent; FOnExit: TNotifyEvent; FOnMouseDown: TMouseButtonEvent; @@ -61,7 +60,6 @@ type FOnScreen: boolean; FOnShowHint: THintEvent; FDragStartPos: TfpgPoint; - FDragActive: boolean; alist: TList; procedure SetActiveWidget(const AValue: TfpgWidget); function IsShowHintStored: boolean; @@ -142,7 +140,6 @@ type { property events } property OnClick: TNotifyEvent read FOnClick write FOnClick; property OnDoubleClick: TMouseButtonEvent read FOnDoubleClick write FOnDoubleClick; - property OnDragStartDetected: TNotifyEvent read FOnDragStartDetected write FOnDragStartDetected; property OnEnter: TNotifyEvent read FOnEnter write FOnEnter; property OnExit: TNotifyEvent read FOnExit write FOnExit; property OnKeyPress: TKeyPressEvent read FOnKeyPress write FOnKeyPress; @@ -471,7 +468,6 @@ begin FBackgroundColor := clWindowBackground; FTextColor := clText1; FAcceptDrops := False; - FDragActive := False; FOnClickPending := False; inherited Create(AOwner); @@ -728,8 +724,8 @@ begin if not FDragActive and (FDragStartPos.ManhattanLength(fpgPoint(msg.Params.mouse.x, msg.Params.mouse.y)) > fpgApplication.StartDragDistance) then begin FDragActive := True; - if Assigned(OnDragStartDetected) then - OnDragStartDetected(self); + // In Windows dragging is a blocking function, so FDragActive is false after this call + DoDragStartDetected; end; end; diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index a6a94c4d..c1560042 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -186,6 +186,7 @@ type procedure DoSetMouseCursor; override; procedure DoDNDEnabled(const AValue: boolean); override; procedure DoAcceptDrops(const AValue: boolean); override; + procedure DoDragStartDetected; override; property WinHandle: TfpgWinHandle read FWinHandle; public constructor Create(AOwner: TComponent); override; @@ -1906,6 +1907,15 @@ begin end; end; +procedure TfpgGDIWindow.DoDragStartDetected; +begin + inherited DoDragStartDetected; + { In windows OLE dragging is a blocking function, so it never returns until + OnStartDragDetected is complete. So we need to set FDragActive to False + here. } + FDragActive := False; +end; + constructor TfpgGDIWindow.Create(AOwner: TComponent); begin inherited Create(AOwner); -- cgit v1.2.3-70-g09d2 From 1bfb9a35d6d597a9691777dfc6b757a4366b88e3 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 12:39:38 +0200 Subject: More DND debugging code for TfpgGDIDrag class. --- src/corelib/gdi/fpg_gdi.pas | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index c1560042..e4cea8a5 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -274,6 +274,7 @@ type FSource: TfpgGDIWindow; function GetSource: TfpgGDIWindow; virtual; public + destructor Destroy; override; function Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction=daCopy): TfpgDropAction; override; end; @@ -2791,6 +2792,14 @@ begin Result := FSource; end; +destructor TfpgGDIDrag.Destroy; +begin + {$IFDEF DND_DEBUG} + writeln('TfpgGDIDrag.Destroy '); + {$ENDIF} + inherited Destroy; +end; + function TfpgGDIDrag.Execute(const ADropActions: TfpgDropActions; const ADefaultAction: TfpgDropAction): TfpgDropAction; var dwEffect: DWORD; -- cgit v1.2.3-70-g09d2 From 6b581c77c401905e5bf72ed6aa133f0e046126a2 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 13:37:46 +0200 Subject: Published the DND propertys for some of the most used components. This is so they can be tested. Once DND stabilizes, I'll make the properties available on the other components too. --- src/corelib/fpg_widget.pas | 2 +- src/gui/fpg_combobox.pas | 5 +++++ src/gui/fpg_edit.pas | 2 ++ src/gui/fpg_label.pas | 1 + src/gui/fpg_listbox.pas | 10 ++++++++++ src/gui/fpg_panel.pas | 15 +++++++++++++++ 6 files changed, 34 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index 374a76ed..5e3ba007 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -165,7 +165,7 @@ type procedure Invalidate; // double check this works as developers expect???? property FormDesigner: TObject read FFormDesigner write SetFormDesigner; property Parent: TfpgWidget read GetParent write SetParent; - property AcceptDrops: boolean read FAcceptDrops write SetAcceptDrops; + property AcceptDrops: boolean read FAcceptDrops write SetAcceptDrops default False; property ActiveWidget: TfpgWidget read FActiveWidget write SetActiveWidget; property IsContainer: Boolean read FIsContainer; property Visible: boolean read FVisible write SetVisible default True; diff --git a/src/gui/fpg_combobox.pas b/src/gui/fpg_combobox.pas index bb6f90b2..5afbf326 100644 --- a/src/gui/fpg_combobox.pas +++ b/src/gui/fpg_combobox.pas @@ -135,6 +135,7 @@ type TfpgComboBox = class(TfpgBaseStaticCombo) published + property AcceptDrops; property Align; property BackgroundColor default clBoxColor; property DropDownCount; @@ -155,6 +156,10 @@ type property Width; property OnChange; property OnCloseUp; + property OnDragDrop; + property OnDragEnter; + property OnDragLeave; + property OnDragStartDetected; property OnDropDown; property OnEnter; property OnExit; diff --git a/src/gui/fpg_edit.pas b/src/gui/fpg_edit.pas index f6c7e6b4..dd7958ab 100644 --- a/src/gui/fpg_edit.pas +++ b/src/gui/fpg_edit.pas @@ -159,6 +159,7 @@ type public property PopupMenu; // UI Designer doesn't fully support it yet published + property AcceptDrops; property Align; property AutoSelect; property AutoSize; @@ -184,6 +185,7 @@ type property OnDragEnter; property OnDragLeave; property OnDragDrop; + property OnDragStartDetected; property OnEnter; property OnExit; property OnKeyPress; diff --git a/src/gui/fpg_label.pas b/src/gui/fpg_label.pas index 10e58fbf..0f9c8b4b 100644 --- a/src/gui/fpg_label.pas +++ b/src/gui/fpg_label.pas @@ -68,6 +68,7 @@ type TfpgLabel = class(TfpgCustomLabel) published + property AcceptDrops; property Align; property Alignment; property AutoSize; diff --git a/src/gui/fpg_listbox.pas b/src/gui/fpg_listbox.pas index 6a336a5c..a0cb8e93 100644 --- a/src/gui/fpg_listbox.pas +++ b/src/gui/fpg_listbox.pas @@ -134,6 +134,7 @@ type // The standard strings listbox we will actually use in a GUI. TfpgListBox = class(TfpgTextListBox) published + property AcceptDrops; property Align; property AutoHeight; property BackgroundColor default clListBox; @@ -152,6 +153,10 @@ type property TextColor; property OnChange; property OnDoubleClick; + property OnDragDrop; + property OnDragEnter; + property OnDragLeave; + property OnDragStartDetected; property OnEnter; property OnExit; property OnKeyPress; @@ -203,6 +208,7 @@ type TfpgColorListBox = class(TfpgBaseColorListBox) published + property AcceptDrops; property Align; property AutoHeight; property BackgroundColor default clListBox; @@ -221,6 +227,10 @@ type property ShowHint; property TabOrder; property TextColor; + property OnDragEnter; + property OnDragLeave; + property OnDragDrop; + property OnDragStartDetected; end; diff --git a/src/gui/fpg_panel.pas b/src/gui/fpg_panel.pas index 191dafc2..66ed5778 100644 --- a/src/gui/fpg_panel.pas +++ b/src/gui/fpg_panel.pas @@ -73,6 +73,7 @@ type protected procedure HandlePaint; override; published + property AcceptDrops; property Align; property BackgroundColor; property BorderStyle; @@ -93,6 +94,10 @@ type property Width; property OnClick; property OnDoubleClick; + property OnDragDrop; + property OnDragEnter; + property OnDragLeave; + property OnDragStartDetected; property OnMouseDown; property OnMouseMove; property OnMouseUp; @@ -131,6 +136,7 @@ type destructor Destroy; override; property Font: TfpgFont read FFont; published + property AcceptDrops; property Align; property Alignment: TAlignment read GetAlignment write SetAlignment default taCenter; property BackgroundColor; @@ -158,6 +164,10 @@ type property WrapText: boolean read GetWrapText write SetWrapText default False; property OnClick; property OnDoubleClick; + property OnDragDrop; + property OnDragEnter; + property OnDragLeave; + property OnDragStartDetected; property OnPaint; property OnShowHint; end; @@ -185,6 +195,7 @@ type function GetClientRect: TfpgRect; override; property Font: TfpgFont read FFont; published + property AcceptDrops; property Align; property Alignment: TAlignment read GetAlignment write SetAlignment default taLeftJustify; property BackgroundColor; @@ -208,6 +219,10 @@ type property Width; property OnClick; property OnDoubleClick; + property OnDragDrop; + property OnDragEnter; + property OnDragLeave; + property OnDragStartDetected; property OnPaint; property OnShowHint; end; -- cgit v1.2.3-70-g09d2 From 1be6b8dc3417de2b7b8c9c32e92755ece9d6498c Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 15:03:11 +0200 Subject: Fixed Windows DND memory leaks. --- src/corelib/gdi/fpg_gdi.pas | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index e4cea8a5..e85d81e3 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -1257,6 +1257,8 @@ end; destructor TfpgGDIApplication.Destroy; begin + if Assigned(FDrag) then + FDrag.Free; UnhookWindowsHookEx(ActivationHook); inherited Destroy; end; @@ -1389,17 +1391,19 @@ begin { enumerate the available formats and return them as a StringList } lMimeList := EnumDataToStringList(DataObj); - - if lMimeList.Count > 0 then - lMimeChoice := lMimeList[0] - else - {$NOTE We need to replace this message with a resouce string } - raise Exception.Create('fpGUI/GDI: no mime types available for DND operation'); - - lDropAction := TranslateToFPGDropAction(Effect); - if Assigned(wg.OnDragEnter) then - wg.OnDragEnter(self, nil, lMimeList, lMimeChoice, lDropAction, lAccept); - + try + if lMimeList.Count > 0 then + lMimeChoice := lMimeList[0] + else + {$NOTE We need to replace this message with a resouce string } + raise Exception.Create('fpGUI/GDI: no mime types available for DND operation'); + + lDropAction := TranslateToFPGDropAction(Effect); + if Assigned(wg.OnDragEnter) then + wg.OnDragEnter(self, nil, lMimeList, lMimeChoice, lDropAction, lAccept); + finally + lMimeList.Free; + end; if not lAccept then Effect := DROPEFFECT_NONE else @@ -1915,6 +1919,8 @@ begin OnStartDragDetected is complete. So we need to set FDragActive to False here. } FDragActive := False; + if Assigned(wapplication.FDrag) then + FreeAndNil(wapplication.FDrag); end; constructor TfpgGDIWindow.Create(AOwner: TComponent); @@ -1931,7 +1937,7 @@ end; destructor TfpgGDIWindow.Destroy; begin - if (self as TfpgWidget).AcceptDrops and Assigned(FDropManager) then + if Assigned(FDropManager) then FDropManager.Free; inherited Destroy; end; -- cgit v1.2.3-70-g09d2 From 27ce669bdf288e356e2ee2f9b73fd3b4ce6bfea0 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 15:09:30 +0200 Subject: Code cleanup by removing leftover writeln() statements. --- examples/gui/drag_n_drop/dndexample.lpr | 13 +++++-------- src/corelib/gdi/fpg_gdi.pas | 2 ++ 2 files changed, 7 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/examples/gui/drag_n_drop/dndexample.lpr b/examples/gui/drag_n_drop/dndexample.lpr index 13750e86..e134fb74 100644 --- a/examples/gui/drag_n_drop/dndexample.lpr +++ b/examples/gui/drag_n_drop/dndexample.lpr @@ -130,26 +130,23 @@ var d: TfpgDrag; v: variant; begin - writeln('in >'); m := TfpgMimeData.Create; + { via convenience properties } m.Text := 'My name is Earl'; m.HTML := 'My name is Earl'; - { via generic SetData function } - //m.SetData('text/special', 'type number three'); - //v := 'type number four'; - //m.SetData('text/four', v); - //m.SetData('text/five', 'type number five'); + { Could also have used the generic SetData function } +// m.SetData('text/plain', 'My name is Earl'); +// m.SetData('text/html', 'My name is Earl'); { tell TfpgDrag who is the Source of the drag } -// d := TfpgDrag.Create(MyDragSourceLabel); d := TfpgDrag.Create(Sender as TfpgWindow); { TfpgDrag now takes ownership of TfpgMimeData } d.MimeData := m; + { TfpgDrag instance will be freed later when DND action is completed } d.Execute([daCopy]); - writeln('< out'); end; procedure TMainForm.ShowMimeList(AMimeList: TStringList); diff --git a/src/corelib/gdi/fpg_gdi.pas b/src/corelib/gdi/fpg_gdi.pas index e85d81e3..6f95d8a8 100644 --- a/src/corelib/gdi/fpg_gdi.pas +++ b/src/corelib/gdi/fpg_gdi.pas @@ -2845,7 +2845,9 @@ begin lIsTranslated := False; {$Note OLE DND: We are only handling strings at the moment, this needs to be extended to other types too } itm := FMimeData[i]; + {$IFDEF DND_DEBUG} writeln(' Processing mime-type: ', itm.Format); + {$ENDIF} { description of data we are sending } New(F); -- cgit v1.2.3-70-g09d2 From c591c08f732d082a674e95400f6abd49917cd7f8 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 15:13:59 +0200 Subject: Removed the stray writeln() statement. --- src/corelib/x11/fpg_x11.pas | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas index e5f545e1..046f10ce 100644 --- a/src/corelib/x11/fpg_x11.pas +++ b/src/corelib/x11/fpg_x11.pas @@ -2148,7 +2148,6 @@ begin { we need to set the XdndAware property } if QueueEnabledDrops then begin - writeln('QueueEnableDrop....'); DoDNDEnabled(True); end; end; -- cgit v1.2.3-70-g09d2 From 2d5dbe02a67013a1e1812e0c030b6938b467ba51 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 17:07:49 +0200 Subject: bugfix: button click via keyboard was broken. When I changed the DoubleClick and SingleClick behaviour I accidently broke the 'click via keyboard' (Enter or SpaceBar). --- src/gui/fpg_button.pas | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_button.pas b/src/gui/fpg_button.pas index cc9866c3..b2468cf5 100644 --- a/src/gui/fpg_button.pas +++ b/src/gui/fpg_button.pas @@ -45,7 +45,7 @@ type FImageName: string; FClicked: Boolean; FShowImage: Boolean; - FClickOnPush: Boolean; + FClickOnPush: Boolean; { Used for group buttons where click happens on "down" state. Normal buttons, the click happens on "release" state } FGroupIndex: integer; FAllowAllUp: boolean; FModalResult: TfpgModalResult; @@ -695,6 +695,7 @@ procedure TfpgBaseButton.HandleKeyPress(var keycode: word; var shiftstate: TShif begin if (keycode = keyReturn) or (keycode = keySpace) or (keycode = keyPEnter) then begin + FOnClickPending := True; DoPush; Consumed := True; end @@ -706,8 +707,9 @@ procedure TfpgBaseButton.HandleKeyRelease(var keycode: word; var shiftstate: TSh begin if (keycode = keyReturn) or (keycode = keySpace) or (keycode = keyPEnter) then begin - DoRelease(1, 1); // fake co-ordinates to it executes the Click + DoRelease(1, 1); // fake co-ordinates so it executes the Click Consumed := True; + FOnClickPending := False; end else inherited; -- cgit v1.2.3-70-g09d2 From 3061b4784a7d74a5778cfc8b03a727182296f825 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 29 Oct 2010 17:08:22 +0200 Subject: TfpgButton.Down property didn't have a default in property declaration. --- src/gui/fpg_button.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/fpg_button.pas b/src/gui/fpg_button.pas index b2468cf5..52a17486 100644 --- a/src/gui/fpg_button.pas +++ b/src/gui/fpg_button.pas @@ -92,7 +92,7 @@ type property AllowDown: Boolean read GetAllowDown write SetAllowDown; property AllowMultiLineText: boolean read FAllowMultiLineText write SetAllowMultiLineText default False; property Default: boolean read FDefault write SetDefault default False; - property Down: Boolean read FDown write SetDown; + property Down: Boolean read FDown write SetDown default False; { The button will not show focus. It might also have a different down state (look). This is similar to Focusable = False, but the appearance of the down state might differ. } property Embedded: Boolean read FEmbedded write SetEmbedded default False; -- cgit v1.2.3-70-g09d2 From 5e43bb933db519828c9b0eaadee66565c0abe995 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Tue, 26 Oct 2010 21:57:40 +0200 Subject: New Grid HeaderStyle property, and new Canvas/Style.DrawBevel() method Grid.HeaderStyle has Button, Thin and Flat options New DrawBevel can draw a bevel raised or lowered using standard system colors. Quite similar to TfpgBevel. New DrawBevel() method and new Grid.HeaderStyle option. --- src/corelib/fpg_main.pas | 43 +++++++++++++++++++++++++++++++++++++++++++ src/gui/fpg_basegrid.pas | 37 ++++++++++++++++++++++++++++++++++--- src/gui/fpg_grid.pas | 1 + 3 files changed, 78 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas index 5907c1a9..b5b7fb17 100644 --- a/src/corelib/fpg_main.pas +++ b/src/corelib/fpg_main.pas @@ -180,6 +180,8 @@ type procedure DrawButtonFace(r: TfpgRect; AFlags: TFButtonFlags); procedure DrawControlFrame(x, y, w, h: TfpgCoord); procedure DrawControlFrame(r: TfpgRect); + procedure DrawBevel(x, y, w, h: TfpgCoord; ARaised: Boolean = True); + procedure DrawBevel(r: TfpgRect; ARaised: Boolean = True); procedure DrawDirectionArrow(x, y, w, h: TfpgCoord; direction: TArrowDirection); procedure DrawDirectionArrow(r: TfpgRect; direction: TArrowDirection); procedure DrawFocusRect(r: TfpgRect); @@ -203,6 +205,7 @@ type destructor Destroy; override; procedure DrawButtonFace(ACanvas: TfpgCanvas; x, y, w, h: TfpgCoord; AFlags: TFButtonFlags); virtual; procedure DrawControlFrame(ACanvas: TfpgCanvas; x, y, w, h: TfpgCoord); virtual; + procedure DrawBevel(ACanvas: TfpgCanvas; x, y, w, h: TfpgCoord; ARaised: Boolean = True); virtual; procedure DrawDirectionArrow(ACanvas: TfpgCanvas; x, y, w, h: TfpgCoord; direction: TArrowDirection); virtual; procedure DrawString(ACanvas: TfpgCanvas; x, y: TfpgCoord; AText: string; AEnabled: boolean = True); virtual; procedure DrawFocusRect(ACanvas: TfpgCanvas; r: TfpgRect); virtual; @@ -1731,6 +1734,16 @@ begin DrawControlFrame(r.Left, r.Top, r.Width, r.Height); end; +procedure TfpgCanvas.DrawBevel(x, y, w, h: TfpgCoord; ARaised: Boolean); +begin + fpgStyle.DrawBevel(self, x, y, w, h, ARaised); +end; + +procedure TfpgCanvas.DrawBevel(r: TfpgRect; ARaised: Boolean); +begin + DrawBevel(r.Left, r.Top, r.Width, r.Height, ARaised); +end; + procedure TfpgCanvas.DrawDirectionArrow(x, y, w, h: TfpgCoord; direction: TArrowDirection); begin fpgStyle.DrawDirectionArrow(self, x, y, w, h, direction); @@ -2056,6 +2069,36 @@ begin ACanvas.DrawLine(r.Right-1, r.Bottom-1, r.Left+1, r.Bottom-1); // bottom (inner) end; +procedure TfpgStyle.DrawBevel(ACanvas: TfpgCanvas; x, y, w, h: TfpgCoord; ARaised: Boolean); +var + r: TfpgRect; +begin + r.SetRect(x, y, w, h); + ACanvas.SetColor(clWindowBackground); + ACanvas.SetLineStyle(1, lsSolid); + ACanvas.FillRectangle(x, y, w, h); + + if ARaised then + ACanvas.SetColor(clHilite2) + else + ACanvas.SetColor(clShadow1); + + { top } + ACanvas.DrawLine(r.Right-1, r.Top, r.Left, r.Top); + + { left } + ACanvas.DrawLine(r.Left, r.Top, r.Left, r.Bottom); + + if ARaised then + ACanvas.SetColor(clShadow1) + else + ACanvas.SetColor(clHilite2); + + { right, then bottom } + ACanvas.DrawLine(r.Right, r.Top, r.Right, r.Bottom); + ACanvas.DrawLine(r.Right, r.Bottom, r.Left-1, r.Bottom); +end; + procedure TfpgStyle.DrawDirectionArrow(ACanvas: TfpgCanvas; x, y, w, h: TfpgCoord; direction: TArrowDirection); var { diff --git a/src/gui/fpg_basegrid.pas b/src/gui/fpg_basegrid.pas index 5b77423f..ae6584b8 100644 --- a/src/gui/fpg_basegrid.pas +++ b/src/gui/fpg_basegrid.pas @@ -37,6 +37,8 @@ type TfpgGridDrawState = set of (gdSelected, gdFocused, gdFixed); + TfpgGridHeaderStyle = (ghsButton, ghsThin, ghsFlat); + TfpgFocusChangeNotify = procedure(Sender: TObject; ARow, ACol: Integer) of object; TfpgRowChangeNotify = procedure(Sender: TObject; ARow: Integer) of object; TfpgCanSelectCellEvent = procedure(Sender: TObject; const ARow, ACol: Integer; var ACanSelect: boolean) of object; @@ -52,6 +54,7 @@ type private FColResizing: boolean; FDragPos: integer; // used for column resizing + FHeaderStyle: TfpgGridHeaderStyle; FOnDrawCell: TfpgDrawCellEvent; FResizedCol: integer; // used for column resizing FDefaultColWidth: integer; @@ -87,6 +90,7 @@ type procedure HScrollBarMove(Sender: TObject; position: integer); procedure SetFontDesc(const AValue: string); procedure SetHeaderFontDesc(const AValue: string); + procedure SetHeaderStyle(const AValue: TfpgGridHeaderStyle); procedure SetRowSelect(const AValue: boolean); procedure SetScrollBarStyle(const AValue: TfpgScrollStyle); procedure VScrollBarMove(Sender: TObject; position: integer); @@ -140,6 +144,7 @@ type property HeaderFontDesc: string read GetHeaderFontDesc write SetHeaderFontDesc; property FocusCol: Integer read FFocusCol write SetFocusCol default -1; property FocusRow: Integer read FFocusRow write SetFocusRow default -1; + property HeaderStyle: TfpgGridHeaderStyle read FHeaderStyle write SetHeaderStyle default ghsButton; property RowSelect: boolean read FRowSelect write SetRowSelect; property ColumnCount: Integer read GetColumnCount; property PopupMenu: TfpgPopupMenu read FPopupMenu write FPopupMenu; @@ -236,6 +241,14 @@ begin RePaint; end; +procedure TfpgBaseGrid.SetHeaderStyle(const AValue: TfpgGridHeaderStyle); +begin + if FHeaderStyle = AValue then + exit; + FHeaderStyle := AValue; + Repaint; +end; + procedure TfpgBaseGrid.SetRowSelect(const AValue: boolean); begin if FRowSelect = AValue then @@ -381,10 +394,27 @@ var r: TfpgRect; x: integer; begin - // Here we can implement a head style check - Canvas.DrawButtonFace(ARect, [btfIsEmbedded]); r := ARect; - InflateRect(r, -2, -2); + // Here we can implement a head style check + case FHeaderStyle of + ghsButton: + begin + Canvas.DrawButtonFace(ARect, [btfIsEmbedded]); + InflateRect(r, -2, -2); + end; + ghsThin: + begin + Canvas.DrawBevel(ARect); + end; + ghsFlat: + begin + Canvas.Color:= clGridHeader; + Canvas.FillRectangle(r); + Canvas.Color:= clShadow2; + Canvas.DrawLine(r.Left, r.Bottom, r.Right, r.Bottom); { bottom line } + Canvas.DrawLine(r.Right, r.Bottom, r.Right, r.Top-1); { right line } + end; + end; Canvas.AddClipRect(r); // text may not overshoot header border (* // drawing grid lines @@ -1243,6 +1273,7 @@ begin FScrollBarStyle := ssAutoBoth; FUpdateCount := 0; FOptions := []; + FHeaderStyle := ghsButton; FFont := fpgGetFont('#Grid'); FHeaderFont := fpgGetFont('#GridHeader'); diff --git a/src/gui/fpg_grid.pas b/src/gui/fpg_grid.pas index 56c1b968..320c2408 100644 --- a/src/gui/fpg_grid.pas +++ b/src/gui/fpg_grid.pas @@ -141,6 +141,7 @@ type property FontDesc; property HeaderFontDesc; property HeaderHeight; + property HeaderStyle; property Hint; property Options; property ParentShowHint; -- cgit v1.2.3-70-g09d2 From d493fe1181c73b78a35b82010954032994110980 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 1 Nov 2010 21:29:57 +0200 Subject: fpg_tab: Refactored HandleLMousUp and extracted most of the code into a new method called TabSheetAtPos(). This allows the developer to reuse this method too for other things. --- src/gui/fpg_tab.pas | 178 ++++++++++++++++++++++++++++------------------------ 1 file changed, 96 insertions(+), 82 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_tab.pas b/src/gui/fpg_tab.pas index 0e50e2fd..d93d72d0 100644 --- a/src/gui/fpg_tab.pas +++ b/src/gui/fpg_tab.pas @@ -137,6 +137,7 @@ type public constructor Create(AOwner: TComponent); override; destructor Destroy; override; + function TabSheetAtPos(const x, y: integer): TfpgTabSheet; function AppendTabSheet(ATitle: string): TfpgTabSheet; procedure RemoveTabSheet(ATabSheet: TfpgTabSheet); property PageCount: Integer read GetPageCount; @@ -982,90 +983,17 @@ end; procedure TfpgPageControl.HandleLMouseUp(x, y: integer; shiftstate: TShiftState); var - h: TfpgTabSheet; - lp: integer; // left position - bw: integer; // button width - bh: integer; // button height - p1, p2: integer; // tab boundaries for mouse click to take affect + ts: TfpgTabSheet; begin // debugln('>> TfpgPageControl.HandleLMouseUp'); - h := TfpgTabSheet(FPages.First); - if h = nil then - Exit; //==> - - lp := FMargin; - if MaxButtonWidthSum > (Width-(FMargin*2)) then - h := FFirstTabButton; - - case TabPosition of - tpTop: - begin - p1 := FMargin; - p2 := ButtonHeight; - end; - - tpBottom: - begin - p1 := Height - FMargin - ButtonHeight; - p2 := Height - FMargin; - end; - - tpRight: - begin - p1 := Width - MaxButtonWidth; - p2 := Width; - end; - - tpLeft: - begin - p1 := FMargin; - p2 := FMargin + MaxButtonWidth; - end; - end; - - if TabPosition in [tpTop, tpBottom] then - begin - if (y > p1) and (y < p2) then - begin - while h <> nil do - begin - bw := ButtonWidth(h.Text); // initialize button width - if (x > lp) and (x < lp + bw) then - begin - if h <> ActivePage then - ActivePage := h; - exit; - end; { if } - lp := lp + bw; - if h <> TfpgTabSheet(FPages.Last) then - h := TfpgTabSheet(FPages[FPages.IndexOf(h)+1]) - else - h := nil; - end; { while } - end; { if } - end; - - if TabPosition in [tpLeft, tpRight] then - begin - if (x > p1) and (x < p2) then - begin - while h <> nil do - begin - bh := ButtonHeight; // initialize button height - if (y > lp) and (y < lp + bh) then - begin - if h <> ActivePage then - ActivePage := h; - exit; - end; { if } - lp := lp + bh; - if h <> TfpgTabSheet(FPages.Last) then - h := TfpgTabSheet(FPages[FPages.IndexOf(h)+1]) - else - h := nil; - end; { while } - end; { if } - end; + ts := TfpgTabSheet(FPages.First); + if ts = nil then + exit; //==> { This means there are no tabs } + + ts := TabSheetAtPos(x, y); + + if Assigned(ts) then + ActivePage := ts; inherited HandleLMouseUp(x, y, shiftstate); end; @@ -1164,6 +1092,92 @@ begin inherited Destroy; end; +function TfpgPageControl.TabSheetAtPos(const x, y: integer): TfpgTabSheet; +var + h: TfpgTabSheet; + lp: integer; // left position + bw: integer; // button width + bh: integer; // button height + p1, p2: integer; // tab boundaries for mouse click to take affect +begin + Result := nil; + h := TfpgTabSheet(FPages.First); + + lp := FMargin; + if MaxButtonWidthSum > (Width-(FMargin*2)) then + h := FFirstTabButton; + + case TabPosition of + tpTop: + begin + p1 := FMargin; + p2 := ButtonHeight; + end; + + tpBottom: + begin + p1 := Height - FMargin - ButtonHeight; + p2 := Height - FMargin; + end; + + tpRight: + begin + p1 := Width - MaxButtonWidth; + p2 := Width; + end; + + tpLeft: + begin + p1 := FMargin; + p2 := FMargin + MaxButtonWidth; + end; + end; + + if TabPosition in [tpTop, tpBottom] then + begin + if (y > p1) and (y < p2) then + begin + while h <> nil do + begin + bw := ButtonWidth(h.Text); // initialize button width + if (x > lp) and (x < lp + bw) then + begin + if h <> ActivePage then + Result := h; + exit; + end; { if } + lp := lp + bw; + if h <> TfpgTabSheet(FPages.Last) then + h := TfpgTabSheet(FPages[FPages.IndexOf(h)+1]) + else + h := nil; + end; { while } + end; { if } + end; + + if TabPosition in [tpLeft, tpRight] then + begin + if (x > p1) and (x < p2) then + begin + while h <> nil do + begin + bh := ButtonHeight; // initialize button height + if (y > lp) and (y < lp + bh) then + begin + if h <> ActivePage then + Result := h; + exit; + end; { if } + lp := lp + bh; + if h <> TfpgTabSheet(FPages.Last) then + h := TfpgTabSheet(FPages[FPages.IndexOf(h)+1]) + else + h := nil; + end; { while } + end; { if } + end; +end; + function TfpgPageControl.AppendTabSheet(ATitle: string): TfpgTabSheet; begin Result := TfpgTabSheet.Create(self); -- cgit v1.2.3-70-g09d2 From 735aec8207036adb17f2174ffcb9056bee712ed3 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Mon, 1 Nov 2010 21:51:27 +0200 Subject: PageControl: Right click popup menu caption now shows tab you clicked over * The popup menu caption changes if you click over any non-active tabs * Selecting the popup menu item, closes the tab you clicked over - no need to set it as the active tabsheet first, before closing. --- src/gui/fpg_tab.pas | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/gui/fpg_tab.pas b/src/gui/fpg_tab.pas index d93d72d0..66f73d2d 100644 --- a/src/gui/fpg_tab.pas +++ b/src/gui/fpg_tab.pas @@ -101,6 +101,7 @@ type FTabPosition: TfpgTabPosition; FPopupMenu: TfpgPopupMenu; FTabOptions: TfpgTabOptions; + FLastRClickPos: TfpgPoint; function GetActivePageIndex: integer; function GetPage(AIndex: integer): TfpgTabSheet; function GetPageCount: Integer; @@ -641,9 +642,11 @@ procedure TfpgPageControl.pmCloseTab(Sender: TObject); var ts: TfpgTabSheet; begin - ts := ActivePage; + ts := TabSheetAtPos(FLastRClickPos.x, FLastRClickPos.y); + if not Assigned(ts) then + ts := ActivePage; if ts = nil then - Exit; + exit; RemovePage(ts); DoTabSheetClosing(ts); ts.Free; @@ -999,15 +1002,32 @@ begin end; procedure TfpgPageControl.HandleRMouseUp(x, y: integer; shiftstate: TShiftState); +var + ts: TfpgTabSheet; + s: TfpgString; begin inherited HandleRMouseUp(x, y, shiftstate); -// ShowDefaultPopupMenu(x, y, ShiftState); + + { store the position for later usage } + FLastRClickPos := fpgPoint(x,y); + if to_PMenuClose in FTabOptions then begin + ts := TabSheetAtPos(x, y); + {$NOTE TODO: This text needs to become a resource string } + if Assigned(ts) then + s := Format('Close "%s" Tab', [ts.Text]) + else + s := 'Close Tab'; + if not Assigned(FPopupMenu) then begin FPopupMenu := TfpgPopupMenu.Create(self); - FPopupMenu.AddMenuItem('Close Tab', '', @pmCloseTab); + FPopupMenu.AddMenuItem(s, '', @pmCloseTab); + end + else + begin + FPopupMenu.MenuItem(0).Text := s; { This is dangerous but works for now } end; FPopupMenu.ShowAt(self, x, y); end; -- cgit v1.2.3-70-g09d2