Changeset 109 for trunk/Packages/Common
- Timestamp:
- Jul 26, 2016, 11:22:43 PM (8 years ago)
- Location:
- trunk/Packages/Common
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Packages/Common/UCommon.pas
r43 r109 64 64 procedure ExecuteProgram(CommandLine: string); 65 65 procedure FreeThenNil(var Obj); 66 function RemoveQuotes(Text: string): string; 66 67 67 68 … … 440 441 end; 441 442 443 function RemoveQuotes(Text: string): string; 444 begin 445 Result := Text; 446 if (Pos('"', Text) = 1) and (Text[Length(Text)] = '"') then 447 Result := Copy(Text, 2, Length(Text) - 2); 448 end; 449 450 442 451 initialization 443 452 -
trunk/Packages/Common/UFindFile.pas
r43 r109 55 55 end; 56 56 57 const 58 {$IFDEF WINDOWS} 59 FilterAll = '*.*'; 60 {$ENDIF} 61 {$IFDEF LINUX} 62 FilterAll = '*'; 63 {$ENDIF} 64 57 65 procedure Register; 58 66 … … 71 79 inherited Create(AOwner); 72 80 Path := IncludeTrailingBackslash(UTF8Encode(GetCurrentDir)); 73 FileMask := '*.*';81 FileMask := FilterAll; 74 82 FileAttr := [ffaAnyFile]; 75 83 s := TStringList.Create; … … 127 135 If not InSubFolders then Exit; 128 136 129 if SysUtils.FindFirst(UTF8Decode(inPath + '*.*'), faDirectory, Rec) = 0 then137 if SysUtils.FindFirst(UTF8Decode(inPath + FilterAll), faDirectory, Rec) = 0 then 130 138 try 131 139 repeat -
trunk/Packages/Common/UListViewSort.pas
r43 r109 73 73 procedure UpdateFromListView(ListView: TListView); 74 74 function TextEntered: Boolean; 75 function TextEnteredColumn(Index: Integer): Boolean; 75 76 function GetColValue(Index: Integer): string; 76 77 property StringGrid: TStringGrid read FStringGrid1 write FStringGrid1; … … 142 143 end; 143 144 end; 145 end; 146 147 function TListViewFilter.TextEnteredColumn(Index: Integer): Boolean; 148 begin 149 Result := FStringGrid1.Cells[Index, 0] <> ''; 144 150 end; 145 151 -
trunk/Packages/Common/UPersistentForm.pas
r43 r109 3 3 {$mode delphi} 4 4 5 // Date: 201 0-06-015 // Date: 2015-04-18 6 6 7 7 interface … … 20 20 FRegistryContext: TRegistryContext; 21 21 public 22 FormNormalSize: TRect; 23 FormRestoredSize: TRect; 24 FormWindowState: TWindowState; 25 Form: TForm; 26 procedure LoadFromRegistry(RegistryContext: TRegistryContext); 27 procedure SaveToRegistry(RegistryContext: TRegistryContext); 22 28 function CheckEntireVisible(Rect: TRect): TRect; 23 29 function CheckPartVisible(Rect: TRect; Part: Integer): TRect; … … 44 50 { TPersistentForm } 45 51 52 procedure TPersistentForm.LoadFromRegistry(RegistryContext: TRegistryContext); 53 begin 54 with TRegistryEx.Create do 55 try 56 RootKey := RegistryContext.RootKey; 57 OpenKey(RegistryContext.Key + '\Forms\' + Form.Name, True); 58 // Normal size 59 FormNormalSize.Left := ReadIntegerWithDefault('NormalLeft', FormNormalSize.Left); 60 FormNormalSize.Top := ReadIntegerWithDefault('NormalTop', FormNormalSize.Top); 61 FormNormalSize.Right := ReadIntegerWithDefault('NormalWidth', FormNormalSize.Right - FormNormalSize.Left) 62 + FormNormalSize.Left; 63 FormNormalSize.Bottom := ReadIntegerWithDefault('NormalHeight', FormNormalSize.Bottom - FormNormalSize.Top) 64 + FormNormalSize.Top; 65 // Restored size 66 FormRestoredSize.Left := ReadIntegerWithDefault('RestoredLeft', FormRestoredSize.Left); 67 FormRestoredSize.Top := ReadIntegerWithDefault('RestoredTop', FormRestoredSize.Top); 68 FormRestoredSize.Right := ReadIntegerWithDefault('RestoredWidth', FormRestoredSize.Right - FormRestoredSize.Left) 69 + FormRestoredSize.Left; 70 FormRestoredSize.Bottom := ReadIntegerWithDefault('RestoredHeight', FormRestoredSize.Bottom - FormRestoredSize.Top) 71 + FormRestoredSize.Top; 72 // Other state 73 FormWindowState := TWindowState(ReadIntegerWithDefault('WindowState', Integer(wsNormal))); 74 finally 75 Free; 76 end; 77 end; 78 79 procedure TPersistentForm.SaveToRegistry(RegistryContext: TRegistryContext); 80 begin 81 with Form, TRegistryEx.Create do 82 try 83 RootKey := RegistryContext.RootKey; 84 OpenKey(RegistryContext.Key + '\Forms\' + Form.Name, True); 85 // Normal state 86 WriteInteger('NormalWidth', FormNormalSize.Right - FormNormalSize.Left); 87 WriteInteger('NormalHeight', FormNormalSize.Bottom - FormNormalSize.Top); 88 WriteInteger('NormalTop', FormNormalSize.Top); 89 WriteInteger('NormalLeft', FormNormalSize.Left); 90 // Restored state 91 WriteInteger('RestoredWidth', FormRestoredSize.Right - FormRestoredSize.Left); 92 WriteInteger('RestoredHeight', FormRestoredSize.Bottom - FormRestoredSize.Top); 93 WriteInteger('RestoredTop', FormRestoredSize.Top); 94 WriteInteger('RestoredLeft', FormRestoredSize.Left); 95 // Other state 96 WriteInteger('WindowState', Integer(FormWindowState)); 97 finally 98 Free; 99 end; 100 end; 101 46 102 function TPersistentForm.CheckEntireVisible(Rect: TRect): TRect; 47 103 var … … 98 154 procedure TPersistentForm.Load(Form: TForm; DefaultMaximized: Boolean = False); 99 155 var 100 Normal: TRect;101 Restored: TRect;102 156 LoadDefaults: Boolean; 103 157 begin 104 with TRegistryEx.Create do 105 try 106 RootKey := RegistryContext.RootKey; 107 OpenKey(RegistryContext.Key + '\Forms\' + Form.Name, True); 108 109 //RestoredWindowState := TWindowState(ReadIntegerWithDefault('WindowState', Integer(Form.WindowState))); 110 //if RestoredWindowState = wsMinimized then 111 // RestoredWindowState := wsNormal; 112 //Form.WindowState := RestoredWindowState; 113 LoadDefaults := not ValueExists('NormalLeft'); 114 Normal := Bounds(ReadIntegerWithDefault('NormalLeft', (Screen.Width - Form.Width) div 2), 115 ReadIntegerWithDefault('NormalTop', (Screen.Height - Form.Height) div 2), 116 ReadIntegerWithDefault('NormalWidth', Form.Width), 117 ReadIntegerWithDefault('NormalHeight', Form.Height)); 118 Restored := Bounds(ReadIntegerWithDefault('RestoredLeft', (Screen.Width - Form.Width) div 2), 119 ReadIntegerWithDefault('RestoredTop', (Screen.Height - Form.Height) div 2), 120 ReadIntegerWithDefault('RestoredWidth', Form.Width), 121 ReadIntegerWithDefault('RestoredHeight', Form.Height)); 122 123 if not EqualRect(Normal, Restored) or 124 (LoadDefaults and DefaultMaximized) then begin 125 // Restore to maximized state 126 Form.WindowState := wsNormal; 127 if not EqualRect(Restored, Form.BoundsRect) then 128 Form.BoundsRect := Restored; 129 Form.WindowState := wsMaximized; 130 end else begin 131 // Restore to normal state 132 Form.WindowState := wsNormal; 133 if FEntireVisible then Normal := CheckEntireVisible(Normal) 134 else if FMinVisiblePart > 0 then 135 Normal := CheckPartVisible(Normal, FMinVisiblePart); 136 if not EqualRect(Normal, Form.BoundsRect) then 137 Form.BoundsRect := Normal; 138 end; 139 140 //if ReadBoolWithDefault('Visible', False) then Form.Show; 141 finally 142 Free; 143 end; 158 Self.Form := Form; 159 // Set default 160 FormNormalSize := Bounds((Screen.Width - Form.Width) div 2, 161 (Screen.Height - Form.Height) div 2, Form.Width, Form.Height); 162 FormRestoredSize := Bounds((Screen.Width - Form.Width) div 2, 163 (Screen.Height - Form.Height) div 2, Form.Width, Form.Height); 164 165 LoadFromRegistry(RegistryContext); 166 167 if not EqualRect(FormNormalSize, FormRestoredSize) or 168 (LoadDefaults and DefaultMaximized) then begin 169 // Restore to maximized state 170 Form.WindowState := wsNormal; 171 if not EqualRect(FormRestoredSize, Form.BoundsRect) then 172 Form.BoundsRect := FormRestoredSize; 173 Form.WindowState := wsMaximized; 174 end else begin 175 // Restore to normal state 176 Form.WindowState := wsNormal; 177 if FEntireVisible then FormNormalSize := CheckEntireVisible(FormNormalSize) 178 else if FMinVisiblePart > 0 then 179 FormNormalSize := CheckPartVisible(FormNormalSize, FMinVisiblePart); 180 if not EqualRect(FormNormalSize, Form.BoundsRect) then 181 Form.BoundsRect := FormNormalSize; 182 end; 144 183 end; 145 184 146 185 procedure TPersistentForm.Save(Form: TForm); 147 186 begin 148 with Form, TRegistryEx.Create do 149 try 150 RootKey := RegistryContext.RootKey; 151 OpenKey(RegistryContext.Key + '\Forms\' + Form.Name, True); 152 WriteInteger('NormalWidth', Form.Width); 153 WriteInteger('NormalHeight', Form.Height); 154 WriteInteger('NormalTop', Form.Top); 155 WriteInteger('NormalLeft', Form.Left); 156 WriteInteger('RestoredWidth', Form.RestoredWidth); 157 WriteInteger('RestoredHeight', Form.RestoredHeight); 158 WriteInteger('RestoredTop', Form.RestoredTop); 159 WriteInteger('RestoredLeft', Form.RestoredLeft); 160 //WriteInteger('WindowState', Integer(Form.WindowState)); 161 //WriteBool('Visible', Form.Visible); 162 finally 163 Free; 164 end; 187 Self.Form := Form; 188 FormNormalSize := Bounds(Form.Left, Form.Top, Form.Width, Form.Height); 189 FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth, 190 Form.RestoredHeight); 191 FormWindowState := Form.WindowState; 192 SaveToRegistry(RegistryContext); 165 193 end; 166 194 … … 168 196 begin 169 197 inherited; 198 if AOwner is TForm then Form := TForm(AOwner) 199 else Form := nil; 170 200 FMinVisiblePart := 50; 171 201 FRegistryContext.RootKey := HKEY_CURRENT_USER; -
trunk/Packages/Common/UXMLUtils.pas
r64 r109 12 12 function DateTimeToXMLTime(Value: TDateTime; ApplyLocalBias: Boolean = True): WideString; 13 13 procedure WriteInteger(Node: TDOMNode; Name: string; Value: Integer); 14 procedure WriteInt64(Node: TDOMNode; Name: string; Value: Int64); 14 15 procedure WriteBoolean(Node: TDOMNode; Name: string; Value: Boolean); 15 16 procedure WriteString(Node: TDOMNode; Name: string; Value: string); 17 procedure WriteDateTime(Node: TDOMNode; Name: string; Value: TDateTime); 16 18 function ReadInteger(Node: TDOMNode; Name: string; DefaultValue: Integer): Integer; 19 function ReadInt64(Node: TDOMNode; Name: string; DefaultValue: Int64): Int64; 17 20 function ReadBoolean(Node: TDOMNode; Name: string; DefaultValue: Boolean): Boolean; 18 21 function ReadString(Node: TDOMNode; Name: string; DefaultValue: string): string; 22 function ReadDateTime(Node: TDOMNode; Name: string; DefaultValue: TDateTime): TDateTime; 19 23 20 24 … … 72 76 Minute: Integer; 73 77 Second: Integer; 78 SecondFraction: Double; 74 79 Millisecond: Integer; 75 80 begin … … 94 99 if Pos('Z', XMLDateTime) > 0 then 95 100 LeftCutString(XMLDateTime, Part, 'Z'); 96 Millisecond := StrToInt(Part); 101 SecondFraction := StrToFloat('0' + DecimalSeparator + Part); 102 Millisecond := Trunc(SecondFraction * 1000); 97 103 end else begin 98 104 if Pos('+', XMLDateTime) > 0 then … … 138 144 end; 139 145 146 procedure WriteInt64(Node: TDOMNode; Name: string; Value: Int64); 147 var 148 NewNode: TDOMNode; 149 begin 150 NewNode := Node.OwnerDocument.CreateElement(Name); 151 NewNode.TextContent := IntToStr(Value); 152 Node.AppendChild(NewNode); 153 end; 154 140 155 procedure WriteBoolean(Node: TDOMNode; Name: string; Value: Boolean); 141 156 var … … 156 171 end; 157 172 173 procedure WriteDateTime(Node: TDOMNode; Name: string; Value: TDateTime); 174 var 175 NewNode: TDOMNode; 176 begin 177 NewNode := Node.OwnerDocument.CreateElement(Name); 178 NewNode.TextContent := DateTimeToXMLTime(Value); 179 Node.AppendChild(NewNode); 180 end; 181 158 182 function ReadInteger(Node: TDOMNode; Name: string; DefaultValue: Integer): Integer; 159 183 var … … 166 190 end; 167 191 192 function ReadInt64(Node: TDOMNode; Name: string; DefaultValue: Int64): Int64; 193 var 194 NewNode: TDOMNode; 195 begin 196 Result := DefaultValue; 197 NewNode := Node.FindNode(Name); 198 if Assigned(NewNode) then 199 Result := StrToInt64(NewNode.TextContent); 200 end; 201 168 202 function ReadBoolean(Node: TDOMNode; Name: string; DefaultValue: Boolean): Boolean; 169 203 var … … 186 220 end; 187 221 222 function ReadDateTime(Node: TDOMNode; Name: string; DefaultValue: TDateTime 223 ): TDateTime; 224 var 225 NewNode: TDOMNode; 226 begin 227 Result := DefaultValue; 228 NewNode := Node.FindNode(Name); 229 if Assigned(NewNode) then 230 Result := XMLTimeToDateTime(NewNode.TextContent); 231 end; 232 188 233 end. 189 234
Note:
See TracChangeset
for help on using the changeset viewer.