/[projects]/dao/DelphiScanner/Components/tpsystools_4.04/examples/CBuilder/Ex1DArrU.cpp
ViewVC logotype

Contents of /dao/DelphiScanner/Components/tpsystools_4.04/examples/CBuilder/Ex1DArrU.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2671 - (show annotations) (download)
Tue Aug 25 18:15:15 2015 UTC (8 years, 8 months ago) by torben
File size: 7930 byte(s)
Added tpsystools component
1 // ***** 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 #include <vcl\vcl.h>
27 #pragma hdrstop
28
29 #include <stdlib.h>
30 #include "Ex1DArrU.h"
31 //---------------------------------------------------------------------------
32 #pragma package(smart_init)
33 #pragma link "StLArr"
34
35 #pragma resource "*.dfm"
36 TForm1 *Form1;
37 //---------------------------------------------------------------------------
38 __fastcall TForm1::TForm1(TComponent* Owner)
39 : TForm(Owner)
40 {
41 }
42 //---------------------------------------------------------------------------
43 void __fastcall TForm1::FormCreate(TObject *Sender)
44 {
45 //RegisterClass should be used, but it is not there in C++Builder 1.0
46 RegisterClassAlias(__classid(TStLArray), "TStLArray");
47 UpdateButtons(false);
48 }
49 //---------------------------------------------------------------------------
50 void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
51 {
52 delete MyLArray;
53 }
54 //---------------------------------------------------------------------------
55 void TForm1::SetBusy(Boolean B)
56 {
57 if (B) {
58 Screen->Cursor = crHourGlass;
59 }
60 else {
61 Screen->Cursor = crDefault;
62 }
63 };
64 //---------------------------------------------------------------------------
65 int __fastcall MyArraySort(const void* El1, const void* El2)
66 {
67 ARecord R1, R2;
68 int Res;
69
70 R1 = *(ARecord*) El1;
71 R2 = *(ARecord*) El2;
72
73 Res = (R1.X - R2.X);
74 if (Res == 0) {
75 Res = (R1.Y - R2.Y);
76 if (Res == 0) {
77 Res = floor(R1.Mag - R2.Mag);
78 if (Res == 0) {
79 Res = CompareText(R1.Name1, R2.Name1);
80 if (Res == 0)
81 Res = CompareText(R1.Name2, R2.Name2);
82 }
83 }
84 }
85 return Res;
86 };
87 //---------------------------------------------------------------------------
88 void TForm1::FillControls()
89 {
90 Edit1->Text = ARec.Name1;
91 Edit2->Text = ARec.Name2;
92 Edit3->Text = IntToStr((int)ARec.X);
93 Edit4->Text = IntToStr((int)ARec.Y);
94 Edit5->Text = FloatToStr(ARec.Mag);
95 };
96 //---------------------------------------------------------------------------
97 void TForm1::FillListBox()
98 {
99 int Step;
100
101 SetBusy(true);
102 LB1->Clear();
103 LB1->Perform(WM_SETREDRAW, 0, 0);
104
105 for (Step = 0; Step < MyLArray->Count; Step++) {
106 MyLArray->Get(Step, &ARec);
107 LB1->Items->Add(IntToStr((int)ARec.X) + ", " + IntToStr((int)ARec.Y));
108 };
109
110 LB1->Perform(WM_SETREDRAW,1,0);
111 LB1->Update();
112 MyLArray->Get(0, &ARec);
113 SetBusy(false);
114 };
115 //---------------------------------------------------------------------------
116 bool TForm1::CheckControls(ARecord& AR)
117 {
118 if ((Edit1->Text == "") || (Edit2->Text == "") ||
119 (Edit3->Text == "") ||
120 (Edit4->Text == "") ||
121 (Edit5->Text == ""))
122 return false;
123
124 AR.Name1 = Edit1->Text;
125 AR.Name2 = Edit2->Text;
126 AR.X = StrToInt(Edit3->Text);
127 AR.Y = StrToInt(Edit4->Text);
128 AR.Mag = StrToFloat(Edit5->Text);
129
130 return true;
131 };
132 //---------------------------------------------------------------------------
133 void TForm1::UpdateButtons(bool AOK)
134 {
135 ClearBtn->Enabled = AOK;
136 FillBtn->Enabled = AOK;
137 GetBtn->Enabled = AOK;
138 PutBtn->Enabled = AOK;
139 SortBtn->Enabled = AOK;
140 SaveBtn->Enabled = AOK;
141 };
142 //---------------------------------------------------------------------------
143 void __fastcall TForm1::LB1DblClick(TObject *Sender)
144 {
145 MyLArray->Get(LB1->ItemIndex, &ARec);
146 ElemNum->Text = IntToStr(LB1->ItemIndex);
147 FillControls();
148 }
149 //---------------------------------------------------------------------------
150 void __fastcall TForm1::CreateBtnClick(TObject *Sender)
151 {
152 int Step;
153 int I;
154 int Value;
155
156 LB1->Clear();
157 SetBusy(true);
158
159 if (MyLArray)
160 delete MyLArray;
161
162 UpdateButtons(false);
163 MyLArray = new TStLArray(5000, sizeof(ARec));
164
165 MyLArray->ElementsStorable = true;
166 MyLArray->Clear();
167
168 Randomize();
169 LB1->Perform(WM_SETREDRAW,0,0);
170 Value = MyLArray->Count;
171
172 for (Step = 0; Step < Value-1; Step++) {
173 ARec.Name1 = "";
174 ARec.Name2 = "";
175 for (I = 1; I <= 10; I++) {
176 ARec.Name1 = ARec.Name1 + (char)(random(26) + 'A');
177 ARec.Name2 = ARec.Name2 + (char)(random(26) + 'A');
178 };
179
180 ARec.X = floor(random(1000));
181 ARec.Y = floor(random(1000));
182 ARec.Mag = sqrt(random(25000));
183
184 MyLArray->Put(Step, &ARec);
185 LB1->Items->Add(IntToStr((int)ARec.X) + ", " + IntToStr((int)ARec.Y));
186 };
187 LB1->Perform(WM_SETREDRAW,1,0);
188 LB1->Update();
189
190 ElemNum->Text = "0";
191 MyLArray->Get(0, &ARec);
192 FillControls();
193 UpdateButtons(true);
194 SetBusy(false);
195 }
196 //---------------------------------------------------------------------------
197 void __fastcall TForm1::ClearBtnClick(TObject *Sender)
198 {
199 MyLArray->Clear();
200 LB1->Clear();
201
202 ElemNum->Text = "0";
203 MyLArray->Get(0, &ARec);
204 FillControls();
205 }
206 //---------------------------------------------------------------------------
207 void __fastcall TForm1::FillBtnClick(TObject *Sender)
208 {
209 if (!CheckControls(ARec)) {
210 ShowMessage("One or more invalid entries");
211 return;
212 };
213
214 MyLArray->Fill(&ARec);
215
216 FillListBox();
217 ElemNum->Text = "0";
218 MyLArray->Get(0, &ARec);
219 FillControls();
220 }
221 //---------------------------------------------------------------------------
222 void __fastcall TForm1::GetBtnClick(TObject *Sender)
223 {
224 long E;
225
226 if (ElemNum->Text == "")
227 ElemNum->Text = "0";
228
229 E = StrToInt(ElemNum->Text);
230 MyLArray->Get(E, &ARec);
231
232 FillControls();
233 }
234 //---------------------------------------------------------------------------
235 void __fastcall TForm1::PutBtnClick(TObject *Sender)
236 {
237 long E;
238
239 if (ElemNum->Text == "")
240 ElemNum->Text = "0";
241
242 if (!CheckControls(ARec)) {
243 ShowMessage("One or more invalid entries");
244 return;
245 };
246
247 E = StrToInt(ElemNum->Text);
248 MyLArray->Put(E, &ARec);
249 LB1->Items->Strings[E] = (IntToStr((int)ARec.X) + ", " + IntToStr((int)ARec.Y));
250
251 MyLArray->Get(E, &ARec);
252 FillControls();
253 }
254 //---------------------------------------------------------------------------
255 void __fastcall TForm1::SortBtnClick(TObject *Sender)
256 {
257 SetBusy(true);
258 MyLArray->Sort(MyArraySort);
259 SetBusy(false);
260
261 FillListBox();
262 FillControls();
263 SetBusy(false);
264 }
265 //---------------------------------------------------------------------------
266 void __fastcall TForm1::LoadBtnClick(TObject *Sender)
267 {
268 if (OD1->Execute()) {
269 if (!MyLArray) {
270 UpdateButtons(false);
271 MyLArray = new TStLArray(5000, sizeof(ARec));
272 MyLArray->ElementsStorable = true;
273 };
274
275 MyLArray->Clear();
276 MyLArray->LoadFromFile(OD1->FileName);
277
278 FillListBox();
279 FillControls();
280 UpdateButtons(true);
281 };
282 }
283 //---------------------------------------------------------------------------
284 void __fastcall TForm1::SaveBtnClick(TObject *Sender)
285 {
286 if (SD1->Execute())
287 MyLArray->StoreToFile(SD1->FileName);
288 }
289 //---------------------------------------------------------------------------

  ViewVC Help
Powered by ViewVC 1.1.20