/[projects]/dao/DelphiScanner/Components/tpsystools_4.04/examples/Delphi/Ex2DArrU.pas
ViewVC logotype

Annotation of /dao/DelphiScanner/Components/tpsystools_4.04/examples/Delphi/Ex2DArrU.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2671 - (hide annotations) (download)
Tue Aug 25 18:15:15 2015 UTC (8 years, 10 months ago) by torben
File size: 8612 byte(s)
Added tpsystools component
1 torben 2671 (* ***** BEGIN LICENSE BLOCK *****
2     * Version: MPL 1.1
3     *
4     * The contents of this file are subject to the Mozilla Public License Version
5     * 1.1 (the "License"); you may not use this file except in compliance with
6     * the License. You may obtain a copy of the License at
7     * http://www.mozilla.org/MPL/
8     *
9     * Software distributed under the License is distributed on an "AS IS" basis,
10     * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11     * for the specific language governing rights and limitations under the
12     * License.
13     *
14     * The Original Code is TurboPower SysTools
15     *
16     * The Initial Developer of the Original Code is
17     * TurboPower Software
18     *
19     * Portions created by the Initial Developer are Copyright (C) 1996-2002
20     * the Initial Developer. All Rights Reserved.
21     *
22     * Contributor(s):
23     *
24     * ***** END LICENSE BLOCK ***** *)
25    
26     unit Ex2DArrU;
27    
28     interface
29    
30     uses
31     Windows, Messages, SysUtils, Classes, Graphics, Controls,
32     Forms, Dialogs, StdCtrls, Buttons, ExtCtrls,
33    
34     StConst, StUtils, StBase, StLArr;
35    
36     type
37     TSTDlg = class(TForm)
38     ArrayLB: TListBox;
39     CreateBtn: TButton;
40     Label5: TLabel;
41     LMValue: TEdit;
42     Label6: TLabel;
43     LMRow: TEdit;
44     LMCol: TEdit;
45     ClearBtn: TButton;
46     FillBtn: TButton;
47     PutBtn: TButton;
48     PutRowBtn: TButton;
49     GetBtn: TButton;
50     GetRowBtn: TButton;
51     SortBtn: TButton;
52     LoadBtn: TButton;
53     SaveBtn: TButton;
54     OD1: TOpenDialog;
55     SD1: TSaveDialog;
56    
57     procedure FormCreate(Sender: TObject);
58     procedure FormClose(Sender: TObject; var Action: TCloseAction);
59    
60     procedure CreateBtnClick(Sender: TObject);
61     procedure ClearBtnClick(Sender: TObject);
62     procedure FillBtnClick(Sender: TObject);
63     procedure PutBtnClick(Sender: TObject);
64     procedure GetBtnClick(Sender: TObject);
65     procedure PutRowBtnClick(Sender: TObject);
66     procedure GetRowBtnClick(Sender: TObject);
67     procedure SortBtnClick(Sender: TObject);
68     procedure LoadBtnClick(Sender: TObject);
69     procedure SaveBtnClick(Sender: TObject);
70     procedure ArrayLBDblClick(Sender: TObject);
71     private
72     { Private declarations }
73     public
74     { Public declarations }
75     procedure SetBusy(B : Boolean);
76     procedure FillListBox;
77     procedure UpdateButtons(AOK : Boolean);
78     end;
79    
80     var
81     STDlg: TSTDlg;
82    
83     implementation
84    
85     {$R *.DFM}
86    
87     type
88     S10 = string[10];
89    
90     const
91     MaxRows = 1000;
92     MaxCols = 10;
93    
94     var
95     MyLMatrix : TStLMatrix;
96     LIArray : array[1..MaxCols] of LongInt;
97    
98     function MyArraySort(const E1, E2) : Integer; far;
99     begin
100     Result := LongInt(E1) - LongInt(E2);
101     end;
102    
103     procedure TSTDlg.UpdateButtons(AOK : Boolean);
104     begin
105     ClearBtn.Enabled := AOK;
106     FillBtn.Enabled := AOK;
107     PutBtn.Enabled := AOK;
108     PutRowBtn.Enabled := AOK;
109     GetBtn.Enabled := AOK;
110     GetRowBtn.Enabled := AOK;
111     SortBtn.Enabled := AOK;
112     SaveBtn.Enabled := AOK;
113     end;
114    
115     procedure TSTDlg.SetBusy(B : Boolean);
116     begin
117     if B then
118     Screen.Cursor := crHourGlass
119     else
120     Screen.Cursor := crDefault;
121     end;
122    
123     procedure TSTDlg.FormCreate(Sender: TObject);
124     begin
125     RegisterClass(TStLMatrix);
126     UpdateButtons(False);
127     end;
128    
129     procedure TSTDlg.FormClose(Sender: TObject;
130     var Action: TCloseAction);
131     begin
132     MyLMatrix.Free;
133     end;
134    
135     procedure TSTDlg.FillListBox;
136     var
137     row,
138     col,
139     Value : LongInt;
140     begin
141     SetBusy(True);
142     ArrayLB.Clear;
143     ArrayLB.Perform(WM_SETREDRAW,0,0);
144    
145     for row := 0 to MyLMatrix.Rows-1 do
146     begin
147     for col := 0 to MyLMatrix.Cols-1 do
148     begin
149     MyLMatrix.Get(row,col,Value);
150     ArrayLB.Items.Add(IntToStr(row) + ',' +
151     IntToStr(col) + ' = ' + IntToStr(Value));
152     end;
153     end;
154     ArrayLB.Perform(WM_SETREDRAW,1,0);
155     ArrayLB.Update;
156     SetBusy(False);
157     end;
158    
159    
160     procedure TSTDlg.CreateBtnClick(Sender: TObject);
161     var
162     row,
163     col,
164     Value : LongInt;
165     begin
166     ArrayLB.Clear;
167    
168     if Assigned(MyLMatrix) then
169     MyLMatrix.Free;
170    
171     UpdateButtons(False);
172     MyLMatrix := TStLMatrix.Create(MaxRows,MaxCols,sizeof(LongInt));
173     MyLMatrix.ElementsStorable := True;
174    
175     SetBusy(True);
176     for row := 0 to MaxRows-1 do
177     begin
178     for col := 0 to MaxCols-1 do
179     begin
180     Value := Trunc(Random(10000));
181     MyLMatrix.Put(row,col,Value);
182     end;
183     end;
184     SetBusy(False);
185    
186     FillListBox;
187     UpdateButtons(True);
188    
189     LMRow.Text := '0';
190     LMCol.Text := '0';
191     MyLMatrix.Get(0,0,Value);
192     LMValue.Text := IntToStr(Value);
193     end;
194    
195     procedure TSTDlg.ClearBtnClick(Sender: TObject);
196     var
197     Value : LongInt;
198     begin
199     MyLMatrix.Clear;
200     ArrayLB.Clear;
201    
202     LMRow.Text := '0';
203     LMCol.Text := '0';
204     MyLMatrix.Get(0,0,Value);
205     LMValue.Text := IntToStr(Value);
206     end;
207    
208     procedure TSTDlg.FillBtnClick(Sender: TObject);
209     var
210     row,
211     col,
212     Value : LongInt;
213     begin
214     if (LMValue.Text = '') then
215     begin
216     ShowMessage('No value entered');
217     Exit;
218     end;
219    
220     Value := StrToInt(LMValue.Text);
221     MyLMatrix.Fill(Value);
222    
223     FillListBox;
224    
225     row := 0;
226     col := 0;
227     LMRow.Text := IntToStr(row);
228     LMCol.Text := IntToStr(col);
229    
230     MyLMatrix.Get(row, col, Value);
231     LMValue.Text := IntToStr(Value);
232    
233     SetBusy(False);
234     end;
235    
236     procedure TSTDlg.PutBtnClick(Sender: TObject);
237     var
238     LBE,
239     row,
240     col,
241     Value : LongInt;
242     begin
243     if (LMValue.Text = '') then
244     begin
245     ShowMessage('No value entered');
246     Exit;
247     end;
248    
249     if (LMRow.Text = '') then
250     LMRow.Text := '0';
251     if (LMCol.Text = '') then
252     LMCol.Text := '0';
253    
254     Value := StrToInt(LMValue.Text);
255     row := StrToInt(LMRow.Text);
256     col := StrToInt(LMCol.Text);
257     MyLMatrix.Put(row,col,Value);
258    
259     LBE := (row * MaxRows) + col;
260     ArrayLB.Items[LBE] := IntToStr(row) + ',' +
261     IntToStr(col) + ' = ' + IntToStr(Value);
262    
263     row := StrToInt(LMRow.Text);
264     col := StrToInt(LMCol.Text);
265     MyLMatrix.Get(row, col, Value);
266     LMValue.Text := IntToStr(Value);
267     end;
268    
269     procedure TSTDlg.GetBtnClick(Sender: TObject);
270     var
271     LBE,
272     row,
273     col,
274     Value : LongInt;
275     begin
276     if (LMValue.Text = '') then begin
277     ShowMessage('No value entered');
278     Exit;
279     end;
280    
281     if (LMRow.Text = '') then
282     LMRow.Text := '0';
283     if (LMCol.Text = '') then
284     LMCol.Text := '0';
285    
286     Value := StrToInt(LMValue.Text);
287     row := StrToInt(LMRow.Text);
288     col := StrToInt(LMCol.Text);
289     MyLMatrix.Get(row,col,Value);
290    
291     LMRow.Text := IntToStr(row);
292     LMCol.Text := IntToStr(col);
293     LMValue.Text := IntToStr(Value);
294    
295     LBE := (row * MaxCols) + col;
296     ArrayLB.ItemIndex := LBE;
297     end;
298    
299     procedure TSTDlg.PutRowBtnClick(Sender: TObject);
300     var
301     row,
302     col,
303     Value : LongInt;
304    
305     begin
306     if (LMValue.Text = '') then
307     begin
308     ShowMessage('No value entered');
309     Exit;
310     end;
311    
312     if (LMRow.Text = '') then
313     LMRow.Text := '0';
314    
315     Value := StrToInt(LMValue.Text);
316     row := StrToInt(LMRow.Text);
317    
318     FillStruct(LIArray,MaxCols,Value,SizeOf(Value));
319    
320     MyLMatrix.PutRow(row,LIArray);
321     FillListBox;
322    
323     row := StrToInt(LMRow.Text);
324     col := 0;
325     MyLMatrix.Get(row, col, Value);
326    
327     LMValue.Text := IntToStr(Value);
328     LMCol.Text := '0';
329     end;
330    
331     procedure TSTDlg.GetRowBtnClick(Sender: TObject);
332     var
333     step,
334     LIV : LongInt;
335    
336     begin
337     if (LMRow.Text = '') then
338     LMRow.Text := '0';
339    
340     LIV := 0;
341     FillStruct(LIArray,MaxCols,LIV,SizeOf(LIV));
342     MyLMatrix.GetRow(0,LIArray);
343    
344     ArrayLB.Clear;
345     ArrayLB.Perform(WM_SETREDRAW,0,0);
346    
347     for step := 1 to MaxCols do
348     ArrayLB.Items.Add('Col' + IntToStr(step-1) + ': ' + IntToStr(LIArray[step]));
349    
350     ArrayLB.Perform(WM_SETREDRAW,1,0);
351     ArrayLB.Update;
352     end;
353    
354     procedure TSTDlg.SortBtnClick(Sender: TObject);
355     begin
356     MyLMatrix.SortRows(0,MyArraySort);
357     FillListBox;
358     end;
359    
360     procedure TSTDlg.LoadBtnClick(Sender: TObject);
361     begin
362     if (OD1.Execute) then
363     begin
364     if NOT (Assigned(MyLMatrix)) then
365     begin
366     UpdateButtons(False);
367     MyLMatrix := TStLMatrix.Create(MaxRows,MaxCols,sizeof(LongInt));
368     MyLMatrix.ElementsStorable := True;
369     end;
370     MyLMatrix.LoadFromFile(OD1.FileName);
371     FillListBox;
372     UpdateButtons(True);
373     end;
374     end;
375    
376     procedure TSTDlg.SaveBtnClick(Sender: TObject);
377     begin
378     if (SD1.Execute) then
379     MyLMatrix.StoreToFile(SD1.FileName);
380     end;
381    
382     procedure TSTDlg.ArrayLBDblClick(Sender: TObject);
383     var
384     row,
385     col,
386     I,
387     Value : LongInt;
388    
389     begin
390     I := ArrayLB.ItemIndex;
391     row := I div MaxCols;
392     col := I mod MaxCols;
393    
394     MyLMatrix.Get(row, col, Value);
395     LMRow.Text := IntToStr(row);
396     LMCol.Text := IntToStr(col);
397     LMValue.Text := IntToStr(Value);
398     end;
399    
400    
401    
402     end.

  ViewVC Help
Powered by ViewVC 1.1.20