@@ -93,6 +93,7 @@ TfrmAutoGetItMain = class(TForm)
9393 function ParseGetItName (const GetItLine: string): string;
9494 function CountChecked : Integer;
9595 function SelectedBDSVersion : string;
96+ function IsPackageIndexValid : Boolean;
9697 property PackageCount: Integer write SetPackageCount;
9798 property DownloadTime: Integer write SetDownloadTime;
9899 property ExecLine: string write SetExecLine;
@@ -159,19 +160,29 @@ function TfrmAutoGetItMain.GetItUninstallCmd(const GetItPackageName: string): st
159160 end
160161end ;
161162
163+ function TfrmAutoGetItMain.IsPackageIndexValid : Boolean;
164+ begin
165+ Result := (lbPackages.ItemIndex > -1 ) and (lbPackages.ItemIndex < lbPackages.Items.Count);
166+ end ;
167+
162168procedure TfrmAutoGetItMain.lbPackagesClick (Sender: TObject);
163169begin
164- actInstallOne.Enabled := (lbPackages.ItemIndex > -1 ) and (lbPackages.ItemIndex < lbPackages.Items.Count);
165- actUninstallOne.Enabled := (lbPackages.ItemIndex > -1 ) and (lbPackages.ItemIndex < lbPackages.Items.Count);
170+ if IsPackageIndexValid then begin
171+ actInstallOne.Enabled := True;
172+ actUninstallOne.Enabled := True;
166173
167- mmoDescription.Text := lbPackages.Items[lbPackages.ItemIndex];
174+ mmoDescription.Text := lbPackages.Items[lbPackages.ItemIndex];
168175
169- if actInstallOne.Enabled then begin
170- actInstallOne.Caption := ' Install ' + ParseGetItName(lbPackages.Items[lbPackages.ItemIndex]);
171- actUninstallOne.Caption := ' Uninstall ' + ParseGetItName(lbPackages.Items[lbPackages.ItemIndex]);
176+ if actInstallOne.Enabled then begin
177+ actInstallOne.Caption := ' Install ' + ParseGetItName(lbPackages.Items[lbPackages.ItemIndex]);
178+ actUninstallOne.Caption := ' Uninstall ' + ParseGetItName(lbPackages.Items[lbPackages.ItemIndex]);
179+ end else begin
180+ actInstallOne.Caption := ' Install ...' ;
181+ actUninstallOne.Caption := ' Uninstall ...' ;
182+ end ;
172183 end else begin
173- actInstallOne.Caption := ' Install ... ' ;
174- actUninstallOne.Caption := ' Uninstall ... ' ;
184+ actInstallOne.Enabled := False ;
185+ actUninstallOne.Enabled := False ;
175186 end ;
176187end ;
177188
@@ -207,34 +218,38 @@ procedure TfrmAutoGetItMain.actUninstallCheckedExecute(Sender: TObject);
207218
208219procedure TfrmAutoGetItMain.actInstallOneExecute (Sender: TObject);
209220begin
210- actInstallOne.Enabled := False;
211- actRefresh.Enabled := False;
212- try
213- frmInstallLog.Initialize;
214- frmInstallLog.ProcessGetItPackage(BDSBinDir,
215- GetItInstallCmd(ParseGetItName(lbPackages.Items[lbPackages.ItemIndex])),
216- 1 , 1 , FInstallAborted);
221+ if IsPackageIndexValid then begin
222+ actInstallOne.Enabled := False;
223+ actRefresh.Enabled := False;
224+ try
225+ frmInstallLog.Initialize;
226+ frmInstallLog.ProcessGetItPackage(BDSBinDir,
227+ GetItInstallCmd(ParseGetItName(lbPackages.Items[lbPackages.ItemIndex])),
228+ 1 , 1 , FInstallAborted);
217229
218- frmInstallLog.NotifyFinished;
219- finally
220- actInstallOne.Enabled := True;
221- actRefresh.Enabled := True;
230+ frmInstallLog.NotifyFinished;
231+ finally
232+ actInstallOne.Enabled := True;
233+ actRefresh.Enabled := True;
234+ end ;
222235 end ;
223236end ;
224237
225238procedure TfrmAutoGetItMain.actUninstallOneExecute (Sender: TObject);
226239begin
227- actUninstallOne.Enabled := False;
228- actRefresh.Enabled := False;
229- try
230- frmInstallLog.Initialize;
231- frmInstallLog.ProcessGetItPackage(BDSBinDir,
232- GetItUninstallCmd(ParseGetItName(lbPackages.Items[lbPackages.ItemIndex])),
233- 1 , 1 , FInstallAborted);
234- frmInstallLog.NotifyFinished;
235- finally
236- actUninstallOne.Enabled := True;
237- actRefresh.Enabled := True;
240+ if IsPackageIndexValid then begin
241+ actUninstallOne.Enabled := False;
242+ actRefresh.Enabled := False;
243+ try
244+ frmInstallLog.Initialize;
245+ frmInstallLog.ProcessGetItPackage(BDSBinDir,
246+ GetItUninstallCmd(ParseGetItName(lbPackages.Items[lbPackages.ItemIndex])),
247+ 1 , 1 , FInstallAborted);
248+ frmInstallLog.NotifyFinished;
249+ finally
250+ actUninstallOne.Enabled := True;
251+ actRefresh.Enabled := True;
252+ end ;
238253 end ;
239254end ;
240255
0 commit comments