Exemplo n.º 1
0
        /// <summary>
        /// Start Excel and open supplied workbook name, optionally activate requested sheet
        /// </summary>
        /// <param name="fileName">Full path-name of file to open</param>
        /// <param name="sheet">Name or number of worksheet to activate</param>
        /// <returns>boolean indicating success status</returns>
        public bool OpenExcel(string fileName, string sheet = "")
        {
            var  xlFile = Path.GetFileName(fileName);
            bool result = false;

            if (File.Exists(fileName))
            {
                int sheetNo = 0;
                try
                {
                    xlType        = Type.GetTypeFromProgID("Excel.Application");
                    xlApp         = Activator.CreateInstance(xlType);
                    xlApp.Visible = Visible;
                    xlWorkbook    = xlApp.Workbooks.Open(fileName);
                    if (sheet == "")
                    {
                        xlWorksheet = xlWorkbook.Sheets[1];
                    }
                    else if (int.TryParse(sheet, out sheetNo))
                    {
                        xlWorksheet = xlWorkbook.Sheets[sheetNo];
                    }
                    else
                    {
                        try
                        {
                            xlWorksheet = xlWorkbook.Sheets[sheet];
                        }
                        catch (Exception)
                        {
                            xlWorksheet = xlWorkbook.Sheets[1];
                        }
                    }
                    xlWorksheet.Activate();
                    workbookOpen = true;
                    LastError    = "";
                    result       = true;
                }
                catch (Exception ex)
                {
                    LastError = $"Error opening Excel file \"{xlFile}\": {ex.Message}";
                    result    = false;
                }
            }
            else
            {
                LastError = $"Could not find Excel file \"{xlFile}\"";
                result    = false;
            }
            return(result);
        }
Exemplo n.º 2
0
        public dynamic GetWorksheet(dynamic xlWb, string worksheetName)
        {
            dynamic xlWs = null;

            if (worksheetName == string.Empty)
            {
                xlWs = xlWb.ActiveSheet;
            }
            else
            {
                xlWs = xlWb.Item(worksheetName);
            }
            xlWs.Activate();
            return(xlWs);
        }
Exemplo n.º 3
0
        public dynamic GetWorkbook(dynamic xlApp, string workbookName)
        {
            dynamic xlWb = null;

            if (workbookName == string.Empty)
            {
                xlWb = xlApp.ActiveWorkbook ?? xlApp.Workbooks.Add();
            }
            else
            {
                xlWb = xlApp.Workbooks.Item(workbookName);
            }
            xlWb.Activate();
            return(xlWb);
        }
Exemplo n.º 4
0
        public static bool SendSMS(string mobNbr, string msg)
        {
            clsSalesTransSMS salestrans = new clsSalesTransSMS();

            try
            {
                string device      = "";
                int    deviceCount = objGsmOut.GetDeviceCount();
                if (deviceCount < 1)
                {
                    MessageBox.Show("No Device Found");
                    salestrans.updateMSGSTATUS = false;
                    return(false);
                }
                else
                {
                    device = objGsmOut.GetDevice(0);
                }
                objGsmOut.Activate("AC11-2C93-43EA-E96DC");
                objGsmIn.Activate("AC11-2C93-43EA-E96DC");
                objGsmOut.Device           = device;
                objGsmOut.DeviceSpeed      = 0;
                objGsmOut.MessageRecipient = mobNbr;
                objGsmOut.MessageData      = msg;
                objGsmOut.MessageType      = objConstants.asMESSAGETYPE_UNICODE_MULTIPART;
                objGsmOut.Send();
                //Application.DoEvents();
                //Application.DoEvents();
                int err = objGsmOut.LastError;

                if (err == 0)
                {
                    salestrans.updateMSGSTATUS = true;
                    return(true);
                }
                else
                {
                    salestrans.updateMSGSTATUS = true;
                    return(false);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                salestrans.updateMSGSTATUS = false;
                return(false);
            }
        }
Exemplo n.º 5
0
        public Dynamic.Tekla.Structures.MacroBuilder Activate(
            System.String dialog,
            System.String field)
        {
            try
            {
                var result = teklaObject.Activate(dialog, field);

                var _result = Dynamic.Tekla.Structures.MacroBuilder_.FromTSObject(result);
                return(_result);
            }
            catch (Microsoft.CSharp.RuntimeBinder.RuntimeBinderException ex)
            {
                throw DynamicAPINotFoundException.CouldNotFindMethod(nameof(Activate), ex);
            }
        }
Exemplo n.º 6
0
        private void cnx002_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (vg_frm_pad.IsMdiContainer == true)
            {
                vg_frm_pad.Enabled = true;
                vg_frm_pad.Activate();
            }
            else
            {
                vg_frm_pad.MdiParent.Enabled = true;
                vg_frm_pad.MdiParent.Activate();
            }

            //Actualiza nombre de Ventana en parte inferior
            o_mg_glo_bal.fg_mue_nap(vg_frm_pad);
        }
Exemplo n.º 7
0
        /// <summary>
        /// 获得一个已经打开的 MDI 子窗口,如果没有,则新打开一个
        /// </summary>
        /// <typeparam name="T">子窗口类型</typeparam>
        /// <returns>子窗口对象</returns>
        public T EnsureChildForm <T>(bool bActivate = false)
        {
            T form = GetTopChildWindow <T>();

            if (form == null)
            {
                form = Activator.CreateInstance <T>();
                dynamic o = form;
                o.MdiParent = this;

                {
                    try
                    {
                        // 2017/4/25
                        if (o.MainForm == null)
                        {
                            o.MainForm = this;
                        }
                    }
                    catch
                    {
                        // 等将来所有窗口类型的 MainForm 都是只读的以后,再修改这里
                    }
                }
                o.Show();
            }
            else
            {
                if (bActivate == true)
                {
                    try
                    {
                        dynamic o = form;
                        o.Activate();

                        if (o.WindowState == FormWindowState.Minimized)
                        {
                            o.WindowState = FormWindowState.Normal;
                        }
                    }
                    catch
                    {
                    }
                }
            }
            return(form);
        }
Exemplo n.º 8
0
        // ---------------------------------------------------------------------------------------------------------------------------------------------------------------
        // PENDING: SaveFlowDocumentAsWordDocument
        // SEE: http://msdn.microsoft.com/en-us/library/bb448854.aspx

        // ---------------------------------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>
        /// Save the Word document in the specified document-location as PDF, using Microsoft Word.
        /// </summary>
        public static string SaveWordDocumentAsPDF(string DocumentLocation)
        {
            string ErrorMessage = null;

            try
            {
                // Create a new Microsoft Word application object
                dynamic WordApp = Activator.CreateInstance(Type.GetTypeFromProgID("Word.Application"));

                // Get a Word file
                FileInfo wordFile = new FileInfo(DocumentLocation);

                WordApp.Visible        = false;
                WordApp.ScreenUpdating = false;

                // Cast as Object for word Open method
                Object filename = (Object)wordFile.FullName;

                // Use the dummy value as a placeholder for optional arguments
                dynamic doc = WordApp.Documents.Open(filename);
                doc.Activate();

                object outputFileName = wordFile.FullName.Replace(".docx", ".pdf");
                object fileFormat     = 17 /* PDF */;

                // Save document into PDF Format
                doc.SaveAs(outputFileName, fileFormat);

                // Close the Word document, but leave the Word application open.
                // doc has to be cast to type _Document so that it will find the
                // correct Close method.
                int saveChanges = 0 /* do not save changes*/;
                doc.Close(saveChanges);
                doc = null;

                // word has to be cast to type _Application so that it will find
                // the correct Quit method.
                WordApp.Quit();
                WordApp = null;
            }
            catch (Exception Problem)
            {
                ErrorMessage = Problem.Message;
            }

            return(ErrorMessage);
        }
Exemplo n.º 9
0
        private static void OpenInVisualStudio(dynamic dte, string fileName, string line)
        {
            dte.ExecuteCommand("File.OpenFile", TextUtility.EnsureQuotes(fileName));
            dte.ExecuteCommand("Edit.Goto", line);

            dynamic mainWindow = dte.MainWindow;
            object  hWnd       = mainWindow.HWnd;

            if (hWnd is IntPtr mainWindowHandle)
            {
                NativeMethods.BringWindowForward(mainWindowHandle);
                const int MillisecondsPerSecond = 1000;
                Thread.Sleep(MillisecondsPerSecond);

                mainWindow.Activate();
                mainWindow.Visible = true;
            }
        }
Exemplo n.º 10
0
 public void OpenExcel(string fileName, bool isReadOnly)
 {
     wkb = app.Workbooks.Open(fileName,
                              Type.Missing,
                              isReadOnly,
                              Type.Missing,
                              Type.Missing,
                              Type.Missing,
                              Type.Missing,
                              Type.Missing,
                              Type.Missing,
                              Type.Missing,
                              Type.Missing,
                              Type.Missing,
                              Type.Missing,
                              Type.Missing,
                              Type.Missing);
     wkb.Activate();
 }
Exemplo n.º 11
0
 public void OpenWord(string fileName, bool isReadOnly)
 {
     openFileName = fileName;
     wordDoc      = wordApp.Documents.Open(fileName,
                                           Missing.Value,
                                           isReadOnly,
                                           Missing.Value,
                                           Missing.Value,
                                           Missing.Value,
                                           Missing.Value,
                                           Missing.Value,
                                           Missing.Value,
                                           Missing.Value,
                                           Missing.Value,
                                           false,
                                           Missing.Value,
                                           Missing.Value,
                                           Missing.Value,
                                           Missing.Value);
     wordDoc.Activate();
 }
Exemplo n.º 12
0
        /// <summary>
        /// Creates a hidden storage worksheet
        /// </summary>
        private void CreateStoreWorksheet()
        {
            if (Workbook == null)
            {
                Logger.Warn("CreateStoreWorksheet: No workbook; exiting...");
            }

            bool    wasSaved      = Workbook.Saved;
            dynamic previousSheet = Workbook.ActiveSheet;
            dynamic previousSel   = Workbook.Application.Selection;
            Sheets  sheets        = Workbook.Worksheets;

            Logger.Info("CreateStoreWorksheet: Adding new sheet");
            // If the COMException is raised, the worksheet likely does not exist
            _storeSheet = sheets.Add();

            // xlSheetVeryHidden hides the sheet so much that it cannot be made
            // visible from the Excel graphical user interface
            _storeSheet.Visible = XlSheetVisibility.xlSheetVeryHidden;

            // Give the worksheet a special name
            _storeSheet.Name = STORESHEETNAME;

            if (previousSheet != null)
            {
                Logger.Info("CreateStoreWorksheet: Activating previously active sheet");
                previousSheet.Activate();
                Bovender.ComHelpers.ReleaseComObject(previousSheet);
            }
            if (previousSel != null)
            {
                Logger.Info("CreateStoreWorksheet: Selecting previous selection");
                previousSel.Select();
                Bovender.ComHelpers.ReleaseComObject(previousSel);
            }
            Workbook.Saved = wasSaved;
            Bovender.ComHelpers.ReleaseComObject(sheets);
        }
Exemplo n.º 13
0
        private void OpenFile(string fileName)
        {
            fileName = System.IO.Path.Combine(this.tracker.WorkingDirectory, fileName);

            if (string.IsNullOrWhiteSpace(fileName))
            {
                return;
            }

            fileName = fileName.Replace("/", "\\");
            var   dte      = toolWindow.dte;
            bool  opened   = false;
            Array projects = (Array)dte.ActiveSolutionProjects;

            foreach (dynamic project in projects)
            {
                foreach (dynamic item in project.ProjectItems)
                {
                    if (string.Compare(item.FileNames[0], fileName, true) == 0)
                    {
                        dynamic wnd = item.Open(EnvDTE.Constants.vsViewKindPrimary);
                        wnd.Activate();
                        opened = true;
                        break;
                    }
                }
                if (opened)
                {
                    break;
                }
            }

            if (!opened)
            {
                dte.ItemOperations.OpenFile(fileName);
            }
        }
Exemplo n.º 14
0
        /// <summary>
        /// Get Range for supplied name or address, optionally select the range
        /// </summary>
        /// <param name="nameOrAddress">Named range or range address</param>
        /// <param name="select">If true, range is selected in workbook</param>
        /// <returns>Boolean indicating success</returns>
        /// <remarks>Sets class' internal range object which other methods depend on</remarks>
        public bool GetRange(string nameOrAddress, bool select = false)
        {
            bool result = false;

            if (xlApp != null && xlWorkbook != null)
            {
                try
                {
                    xlRange = xlApp.Range(nameOrAddress);
                    if (select)
                    {
                        xlRange.Activate();
                    }

                    result    = true;
                    LastError = "";
                }
                catch (Exception ex)
                {
                    LastError = ex.Message;
                }
            }
            return(result);
        }
Exemplo n.º 15
0
        /// <summary>
        /// This procedure will insert summary details and format the sheet.
        /// </summary>
        /// <returns>True or False.</returns>
        public static bool InsertSummaryDetailsAndFormat()
        {
            var      excelApp = new ApplicationClass();
            Workbook workbook = null;

            try
            {
                workbook = WorkBookUtility.OpenWorkBook(excelApp, FilePath);

                dynamic tcworksheet = (Worksheet)workbook.Sheets["TestIterations"];

                //// Set as active sheet
                tcworksheet.Activate();

                //// Set summary details
                ((Range)tcworksheet.Cells[1, 2]).Value = Timing.TotalStartTime.ToString("MM/dd/yyyy hh:mm:ss tt");
                ((Range)tcworksheet.Cells[2, 2]).Value = Timing.TotalEndTime.ToString("MM/dd/yyyy hh:mm:ss tt");
                ((Range)tcworksheet.Cells[3, 2]).Value = Timing.Totalduration.ToString();

                //// Set style for results, column 4 from row 6
                var     row    = 6;
                dynamic result = (Range)tcworksheet.Cells[row, 4];
                while (!string.IsNullOrEmpty(result.Value))
                {
                    //// Set style for result
                    if (result.Value == Entities.Constants.Pass)
                    {
                        var tmp = workbook.Styles;
                        result.Style = GetStyle(ReportingStyles.StylePassed, ref tmp);
                        ((Range)tcworksheet.Cells[row, 1]).EntireRow.AutoFit();
                        ((Range)tcworksheet.Cells[row, 1]).EntireRow.WrapText = false;
                        ((Range)tcworksheet.Cells[row, 2]).EntireRow.WrapText = false;
                        ((Range)tcworksheet.Cells[row, 3]).EntireRow.WrapText = false;
                        ((Range)tcworksheet.Cells[row, 4]).EntireRow.WrapText = false;
                        ((Range)tcworksheet.Cells[row, 5]).EntireRow.WrapText = false;
                        ((Range)tcworksheet.Cells[row, 6]).EntireRow.WrapText = false;
                    }
                    else if (result.Value == Entities.Constants.Fail)
                    {
                        var tmp = workbook.Styles;
                        result.Style = GetStyle(ReportingStyles.StyleFailed, ref tmp);
                        ((Range)tcworksheet.Cells[row, 1]).EntireRow.AutoFit();
                        ((Range)tcworksheet.Cells[row, 1]).EntireRow.WrapText = false;
                        ((Range)tcworksheet.Cells[row, 2]).EntireRow.WrapText = false;
                        ((Range)tcworksheet.Cells[row, 3]).EntireRow.WrapText = false;
                        ((Range)tcworksheet.Cells[row, 4]).EntireRow.WrapText = false;
                        ((Range)tcworksheet.Cells[row, 5]).EntireRow.WrapText = false;
                        ((Range)tcworksheet.Cells[row, 6]).EntireRow.WrapText = false;
                    }

                    row   += 1;
                    result = (Range)tcworksheet.Cells[row, 4];
                }

                //// Autofit all columns
                ((Range)tcworksheet.Cells[1, 1]).EntireColumn.AutoFit();
                ((Range)tcworksheet.Cells[1, 2]).EntireColumn.AutoFit();
                ((Range)tcworksheet.Cells[1, 3]).EntireColumn.AutoFit();
                ((Range)tcworksheet.Cells[1, 4]).EntireColumn.AutoFit();
                ((Range)tcworksheet.Cells[1, 5]).EntireColumn.AutoFit();
                ((Range)tcworksheet.Cells[1, 6]).EntireColumn.TextToColumns();
                ((Range)tcworksheet.Cells[1, 6]).EntireColumn.AutoFit();

                return(true);
            }
            catch (Exception ex)
            {
                LogHelper.ErrorLog(ex, Entities.Constants.ClassName.Reporting, MethodBase.GetCurrentMethod().Name);
                throw;
            }
            finally
            {
                var b = workbook;
                if (b != null)
                {
                    workbook.Save();
                }
                //// Close objects
                if (workbook != null)
                {
                    WorkBookUtility.CloseWorkBook(workbook, true, string.Empty);
                }

                WorkBookUtility.CloseExcel(excelApp, string.Empty);
            }
        }
 static void EmulateActivate(dynamic pane)
 {
     pane.Activate();
 }
Exemplo n.º 17
0
        private void CheckSpelling()
        {
            ThreadHelper.ThrowIfNotOnUIThread();
            TextDocumentHandler handler = new(this.dte);

            if (handler.HasNonEmptySelection)
            {
                try
                {
                    // Launch Word.
                    Type    wordType = Type.GetTypeFromProgID("Word.Application");
                    dynamic wordApp  = Activator.CreateInstance(wordType);

                    // Add a document.
                    dynamic wordDoc = wordApp.Documents.Add();

                    // Clear current contents.
                    dynamic range = wordApp.Selection.Range;
                    range.WholeStory();
                    range.Delete();
                    range = null;

                    // Add the text the user selected.
                    wordApp.Selection.Text = handler.SelectedText;

                    // Show it
                    wordApp.Visible = true;
                    wordApp.Activate();
                    wordDoc.Activate();

                    // Check spelling
                    wordDoc.CheckSpelling();

                    // Get the edited text back
                    wordApp.Selection.WholeStory();
                    string newText = wordApp.Selection.Text;

                    // Word always adds an extra CR, so strip that off.
                    // Also it converts all LFs to CRs, so change
                    // that back.
                    if (!string.IsNullOrEmpty(newText))
                    {
                        if (newText.EndsWith("\r"))
                        {
                            newText = newText.Substring(0, newText.Length - 1);
                        }

                        newText = newText.Replace("\r", "\r\n");
                    }

                    handler.SetSelectedTextIfUnchanged(newText, "Check Spelling With MS Word");

                    // Tell the doc and Word to go away.
                    object saveChanges = false;
                    wordDoc.Close(ref saveChanges);
                    wordApp.Visible = false;
                    wordApp.Quit();
                }
                catch (COMException ex)
                {
                    // If we get REGDB_E_CLASSNOTREG, then Word probably isn't installed.
                    const uint REGDB_E_CLASSNOTREG = 0x80040154;
                    if (unchecked ((uint)ex.ErrorCode) == REGDB_E_CLASSNOTREG)
                    {
                        this.package.ShowMessageBox(
                            "Microsoft Word is required in order to check spelling, but it isn't available.\r\n\r\nDetails:\r\n" + ex.Message,
                            true);
                    }
                    else
                    {
                        throw;
                    }
                }
            }
        }
Exemplo n.º 18
0
 /// <summary>
 /// 選択をA1セルに固定します
 /// </summary>
 /// <param name="worksheet"></param>
 private void SelectA1(dynamic worksheet)
 {
     worksheet.Activate();
     worksheet.Range["A1"].Select();
     worksheet.Range["A1"].Activate();
 }
Exemplo n.º 19
0
 private void bt_can_cel_Click(object sender, EventArgs e)
 {
     vg_frm_pad.Enabled = true;
     vg_frm_pad.Activate();
     Close();
 }
        /// <summary>
        /// Abre formulario (desde menu del formulario buscar) CON PARAMETROS OPCIONAL
        /// </summary>
        /// <param name="ar_frm_nvo">Formulario nuevo a abrir</param>
        /// <param name="ar_frm_pad">Formulario padre de donde es llamado el nuevo formulario a crear</param>
        /// <param name="ar_tip_nvl">Nivel en el que se abrira el nuevo formulario (1=abierto desde formulario MDI ; 2=Abierto desde otro formulario 'Buscar'</param>
        /// <param name="ar_str_ucc">Estructura para pasar parametros al nuevo formulario (OPCIONAL)</param>
        public void mg_ads000_01(dynamic ar_frm_nvo, dynamic ar_frm_pad, int ar_tip_nvl, DataTable ar_str_ucc = null)
        {
            try
            {
                if (ar_tip_nvl == 1)
                {
                    if (ar_frm_pad.IsMdiContainer == true)
                    {
                        ar_frm_nvo.MdiParent = ar_frm_pad;
                        //Deshabilita la caja de botones Aceptar/Cancelar
                        ar_frm_nvo.gb_ctr_frm.Enabled = false;
                    }
                    else
                    {
                        ar_frm_nvo.MdiParent = ar_frm_pad.MdiParent;
                        //Habilita la caja de botones Aceptar/Cancelar
                        ar_frm_nvo.gb_ctr_frm.Enabled = true;
                    }

                    ar_frm_pad.mn_pri_nci.Visible = false;
                    ar_frm_pad.MenuStrip1.Visible = true;

                    // pasa el padre quien llamo a la ventana
                    ar_frm_nvo.vg_frm_pad = ar_frm_pad;

                    //Pasa la estructura de parametros a la nueva ventana en caso de que se necesite
                    if (ar_str_ucc != null)
                    {
                        ar_frm_nvo.vg_str_ucc = ar_str_ucc;
                    }

                    // Abre y activa formulario
                    ar_frm_nvo.Show();
                    ar_frm_nvo.Activate();

                    // Obtiene el usuario logueado
                    string cod_usr = Program.gl_usr_usr;
                    ar_frm_pad.MenuStrip1 = fg_ver_mnu(cod_usr, ar_frm_nvo.Name, ar_frm_pad.MenuStrip1);
                }

                if (ar_tip_nvl == 2)
                {
                    //deshabilita formulario padre
                    ar_frm_pad.Enabled = false;
                    //Cierra las ventanas hijas del formulario padre
                    foreach (dynamic va_frm_aux in ar_frm_pad.MdiParent.MdiChildren)
                    {
                        if (va_frm_aux.vg_frm_pad.Name == ar_frm_pad.Name)
                        {
                            va_frm_aux.Close();
                        }
                    }

                    //Deshabilita la caja de botones Aceptar/Cancelar
                    ar_frm_nvo.gb_ctr_frm.Enabled = false;


                    ar_frm_nvo.MdiParent  = ar_frm_pad.MdiParent;
                    ar_frm_nvo.vg_frm_pad = ar_frm_pad;

                    //Pasa la estructura de parametros a la nueva ventana en caso de que se necesite
                    if (ar_str_ucc != null)
                    {
                        ar_frm_nvo.vg_str_ucc = ar_str_ucc;
                    }

                    // Obtiene el usuario logueado
                    string cod_usr = Program.gl_usr_usr;
                    ar_frm_nvo.mn_pri_nci = fg_ver_mnu(cod_usr, ar_frm_nvo.Name, ar_frm_nvo.mn_pri_nci);

                    ar_frm_nvo.Show();
                    ar_frm_nvo.Activate();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 21
0
        /// <param name="radius">If left at -1, will use ExplosionRadius.</param>
        /// <param name="directCall">If true, will not credit kill or activate pick-ups.</param>
        public override void Explode(Vector2f pos, float radius = -1, bool directCall = false)
        {
            if (radius == -1)
            {
                radius = ExplosionRadius;
            }
            // Collision
            bool hitSomething = false;
            int  numChildren  = Game.Layer_Objects.NumChildren;

            for (int i = 0; i < numChildren; i++)
            {
                dynamic obj = Game.Layer_Objects.GetChildAt(i);

                if (obj is PhysicalEntity && !obj.CanTakeDamage)
                {
                    continue;
                }
                if ((!(obj is CollisionEntity) || obj.Collision == null) && !Utils.InCircle(pos, radius, obj.Position)) // Collide with Position if obj is not a CollisionEntity or has no Collision
                {
                    continue;
                }
                if (obj.Collision is CircleShape && !Utils.CircleCircleCollision(pos, radius, obj.Position, obj.Collision.Radius))
                {
                    continue;
                }
                if (obj.Collision is RectangleShape && !Utils.CircleRectangleCollision(pos, radius, obj.Collision, obj.Rotation, obj.Position))
                {
                    continue;
                }

                if (obj is PhysicalEntity)
                {
                    // Damage
                    obj.Damage(Damage, 0, !directCall ? SourceObject : null);
                }
                else if (!directCall && obj is Pickup)
                {
                    // Pickup
                    obj.Activate(SourceObject);
                }

                // Removed?
                if (obj.Parent != Game.Layer_Objects && i <= numChildren - 1)
                {
                    i--;
                    numChildren--;
                }

                hitSomething = true;
            }

            if (hitSomething || Utils.InCircle(Game.Island, pos))
            {
                // Explosion
                Explosion explosion = new Explosion(Game, radius);
                explosion.Position = pos;
                Game.Layer_OtherAbove.AddChild(explosion);

                // Sound
                if (Utils.RandomInt() == 0)
                {
                    ExplosionSound1.Play();
                }
                else
                {
                    ExplosionSound2.Play();
                }
            }
            else
            {
                // Splash
                Explosion explosion = new Explosion(Game, 15);
                explosion.Position = pos;
                Game.Layer_OtherAbove.AddChild(explosion);

                // Sound
                if (Utils.RandomInt() == 0)
                {
                    SplashSound1.Play();
                }
                else
                {
                    SplashSound2.Play();
                }
            }


            if (directCall || Game.Player == null)
            {
                return;
            }
            if (hitSomething)
            {
                Game.Player.IncreaseScoreMultiplier();
            }
            else if (!Game.Player.HasPowerup(Powerup.TRIPLE_CANNON) && !Game.Player.HasPowerup(Powerup.OCTUPLE_CANNON))
            {
                Game.Player.ResetScoreMultiplier();
            }
        }