source: trunk/UDataTypes.pas

Last change on this file was 26, checked in by chronos, 20 months ago
  • Removed: TemplateGenerics as required package. Used Generics.Collections instead.
File size: 7.4 KB
Line 
1unit UDataTypes;
2
3interface
4
5uses
6 Classes, SysUtils, UDatabase, USqlDatabase;
7
8type
9 { TValueString }
10
11 TValueString = class(TValue)
12 Value: string;
13 procedure Assign(Source: TValue); override;
14 function GetString: string; override;
15 procedure SetString(Value: string); override;
16 end;
17
18 { TValueInteger }
19
20 TValueInteger = class(TValue)
21 Value: Integer;
22 procedure Assign(Source: TValue); override;
23 function GetString: string; override;
24 procedure SetString(Value: string); override;
25 end;
26
27 { TValueDateTime }
28
29 TValueDateTime = class(TValue)
30 Value: TDateTime;
31 procedure Assign(Source: TValue); override;
32 function GetString: string; override;
33 procedure SetString(Value: string); override;
34 end;
35
36 { TValueDate }
37
38 TValueDate = class(TValueDateTime)
39 end;
40
41 { TValueTime }
42
43 TValueTime = class(TValueDateTime)
44 end;
45
46 { TValueBoolean }
47
48 TValueBoolean = class(TValue)
49 Value: Boolean;
50 procedure Assign(Source: TValue); override;
51 function GetString: string; override;
52 procedure SetString(Value: string); override;
53 end;
54
55 { TValueFloat }
56
57 TValueFloat = class(TValue)
58 Value: Double;
59 procedure Assign(Source: TValue); override;
60 function GetString: string; override;
61 procedure SetString(Value: string); override;
62 end;
63
64 { TValueReference }
65
66 TValueReference = class(TValueInteger)
67 end;
68
69 { TFieldString }
70
71 TFieldString = class(TFieldTypeSpecific)
72 DefaultValue: string;
73 procedure Assign(Source: TFieldTypeSpecific); override;
74 function GetValueClass: TValueClass; override;
75 end;
76
77 { TFieldInteger }
78
79 TFieldInteger = class(TFieldTypeSpecific)
80 Min: Integer;
81 Max: Integer;
82 DefaultValue: Integer;
83 procedure Assign(Source: TFieldTypeSpecific); override;
84 function GetValueClass: TValueClass; override;
85 end;
86
87 { TFieldFloat }
88
89 TFieldFloat = class(TFieldTypeSpecific)
90 Min: Double;
91 Max: Double;
92 DefaultValue: Double;
93 procedure Assign(Source: TFieldTypeSpecific); override;
94 function GetValueClass: TValueClass; override;
95 end;
96
97 { TFieldDateTime }
98
99 TFieldDateTime = class(TFieldTypeSpecific)
100 Min: TDateTime;
101 Max: TDateTime;
102 procedure Assign(Source: TFieldTypeSpecific); override;
103 function GetValueClass: TValueClass; override;
104 end;
105
106 TFieldDate = class(TFieldTypeSpecific)
107 Min: TDate;
108 Max: TDate;
109 procedure Assign(Source: TFieldTypeSpecific); override;
110 function GetValueClass: TValueClass; override;
111 end;
112
113 { TFieldTime }
114
115 TFieldTime = class(TFieldTypeSpecific)
116 Min: TTime;
117 Max: TTime;
118 procedure Assign(Source: TFieldTypeSpecific); override;
119 function GetValueClass: TValueClass; override;
120 end;
121
122 TFieldImage = class(TFieldTypeSpecific)
123 MinSize: TPoint;
124 MaxSize: TPoint;
125 end;
126
127 { TFieldReference }
128
129 TFieldReference = class(TFieldTypeSpecific)
130 TableName: string;
131 Id: Integer;
132 procedure Assign(Source: TFieldTypeSpecific); override;
133 function GetValueClass: TValueClass; override;
134 end;
135
136 { TFieldBoolean }
137
138 TFieldBoolean = class(TFieldTypeSpecific)
139 DefaultValue: Boolean;
140 procedure Assign(Source: TFieldTypeSpecific); override;
141 function GetValueClass: TValueClass; override;
142 end;
143
144 TFieldMapPosition = class(TFieldTypeSpecific)
145 end;
146
147
148implementation
149
150{ TFieldReference }
151
152procedure TFieldReference.Assign(Source: TFieldTypeSpecific);
153begin
154 if Source is TFieldReference then begin
155 Id := TFieldReference(Source).Id;
156 TableName := TFieldReference(Source).TableName;
157 end;
158end;
159
160function TFieldReference.GetValueClass: TValueClass;
161begin
162 Result := TValueReference;
163end;
164
165{ TFieldTime }
166
167procedure TFieldTime.Assign(Source: TFieldTypeSpecific);
168begin
169 if Source is TFieldTime then begin
170 Min := TFieldTime(Source).Min;
171 Max := TFieldTime(Source).Max;
172 end;
173end;
174
175function TFieldTime.GetValueClass: TValueClass;
176begin
177 Result := TValueTime;
178end;
179
180{ TFieldDate }
181
182procedure TFieldDate.Assign(Source: TFieldTypeSpecific);
183begin
184 if Source is TFieldDate then begin
185 Min := TFieldDate(Source).Min;
186 Max := TFieldDate(Source).Max;
187 end;
188end;
189
190function TFieldDate.GetValueClass: TValueClass;
191begin
192 Result := TValueDate;
193end;
194
195
196{ TValueFloat }
197
198procedure TValueFloat.Assign(Source: TValue);
199begin
200 if Source is TValueFloat then
201 Value := TValueFloat(Source).Value;
202end;
203
204function TValueFloat.GetString: string;
205begin
206 Result := FloatToStr(Value);
207end;
208
209procedure TValueFloat.SetString(Value: string);
210begin
211 Self.Value := StrToFloat(Value);
212end;
213
214{ TFieldBoolean }
215
216procedure TFieldBoolean.Assign(Source: TFieldTypeSpecific);
217begin
218 if Source is TFieldBoolean then begin
219 DefaultValue := TFieldBoolean(Source).DefaultValue;
220 end;
221end;
222
223function TFieldBoolean.GetValueClass: TValueClass;
224begin
225 Result := TValueBoolean;
226end;
227
228{ TFieldFloat }
229
230procedure TFieldFloat.Assign(Source: TFieldTypeSpecific);
231begin
232 if Source is TFieldFloat then begin
233 DefaultValue:= TFieldFloat(Source).DefaultValue;
234 Min:= TFieldFloat(Source).Min;
235 Max:= TFieldFloat(Source).Max;
236 end;
237end;
238
239function TFieldFloat.GetValueClass: TValueClass;
240begin
241 Result := TValueFloat;
242end;
243
244{ TFieldInteger }
245
246procedure TFieldInteger.Assign(Source: TFieldTypeSpecific);
247begin
248 if Source is TFieldInteger then begin
249 DefaultValue:= TFieldInteger(Source).DefaultValue;
250 Min:= TFieldInteger(Source).Min;
251 Max:= TFieldInteger(Source).Max;
252 end;
253end;
254
255function TFieldInteger.GetValueClass: TValueClass;
256begin
257 Result := TValueInteger;
258end;
259
260{ TValueBoolean }
261
262procedure TValueBoolean.Assign(Source: TValue);
263begin
264 if Source is TValueBoolean then
265 Value := TValueBoolean(Source).Value;
266end;
267
268function TValueBoolean.GetString: string;
269begin
270 Result := BoolToStr(Value);
271end;
272
273procedure TValueBoolean.SetString(Value: string);
274begin
275 Self.Value := StrToBool(Value);
276end;
277
278{ TValueInteger }
279
280procedure TValueInteger.Assign(Source: TValue);
281begin
282 if Source is TValueInteger then
283 Value := TValueInteger(Source).Value;
284end;
285
286function TValueInteger.GetString: string;
287begin
288 Result := IntToStr(Value);
289end;
290
291procedure TValueInteger.SetString(Value: string);
292var
293 IntVal: Integer;
294begin
295 if TryStrToInt(Value, IntVal) then Self.Value := IntVal;
296end;
297
298{ TFieldDateTime }
299
300procedure TFieldDateTime.Assign(Source: TFieldTypeSpecific);
301begin
302 if Source is TFieldDateTime then begin
303 Min := TFieldDateTime(Source).Min;
304 Max := TFieldDateTime(Source).Max;
305 end;
306end;
307
308function TFieldDateTime.GetValueClass: TValueClass;
309begin
310 Result := TValueDateTime;
311end;
312
313{ TValueDateTime }
314
315procedure TValueDateTime.Assign(Source: TValue);
316begin
317 if Source is TValueDateTime then
318 Value := TValueDateTime(Source).Value;
319end;
320
321function TValueDateTime.GetString: string;
322begin
323 Result := DateTimeToStr(Value);
324end;
325
326procedure TValueDateTime.SetString(Value: string);
327begin
328 Self.Value := SQLToDateTime(Value);
329// if not TryStrToDateTime(Value, Self.Value) then begin
330// end;
331end;
332
333{ TValueString }
334
335procedure TValueString.Assign(Source: TValue);
336begin
337 if Source is TValueString then
338 Value := TValueString(Source).Value;
339end;
340
341function TValueString.GetString: string;
342begin
343 Result := Value;
344end;
345
346procedure TValueString.SetString(Value: string);
347begin
348 Self.Value := Value;
349end;
350
351{ TFieldString }
352
353procedure TFieldString.Assign(Source: TFieldTypeSpecific);
354begin
355 if Source is TFieldString then
356 DefaultValue:= TFieldString(Source).DefaultValue;
357end;
358
359function TFieldString.GetValueClass: TValueClass;
360begin
361 Result := TValueString;
362end;
363
364end.
365
Note: See TracBrowser for help on using the repository browser.