[Gambas-user] Delete an object

Timothy Marshal-Nichols timothy.marshal-nichols at ...247...
Mon Apr 3 17:56:31 CEST 2006


Should you have

    FOR iI = 0 TO (hObj.Count -1)

You have hObj.Count objects. But they are numbered 0 to (hObj.Count -1). In
the original you have an error when you go past the end of the collection.
Thanks

8-{)} Timothy Marshal-Nichols
<mailto: timothy.marshal-nichols at ...247...>

  -----Original Message-----
  From: gambas-user-admin at lists.sourceforge.net
[mailto:gambas-user-admin at lists.sourceforge.net]On Behalf Of Almanova
Sistemi
  Sent: Monday, 03 April 2006 09:22
  To: gambas-user at lists.sourceforge.net
  Subject: Re: [Gambas-user] Delete an object


  Benoit Minisini ha scritto:
On Saturday 01 April 2006 16:31, Almanova Sistemi wrote:
  I delete a text area (TextArea.Delete). The on-line help says: Note that
a destroyed control becomes an invalid object.
How can I delete an object whitout an invalid object as result?

Thank's

Massimo


Why do you want to use something that does not exist anymore? :-)

  No, I don't want to use an object that not exist.
  This is my problem:
  I have a panel and I want add and/or delete some objetcts from them.
  Now, the objects are stored in a collection and when I delete them from
the panel, delete also from the collection.
  When I insert (into the panel and into the collection) a new object (Text
Area, Drawing Area etc.) and select them I get
  an invalid object.

  This is a fragment of code:

  ....
  PRIVATE hForm AS Object
  PRIVATE hBorder AS Integer
  PRIVATE hTag AS String
  PRIVATE Height AS Integer
  PRIVATE Width AS Integer

  PRIVATE hObj AS NEW Collection
  ....
  '--- this get the position of the object and activate the border
  PUBLIC SUB vForm_Enter()
    DIM iI AS Integer

    DIM Xa AS Integer
    DIM Xb AS Integer
    DIM Xc AS Integer
    DIM Xd AS Integer

    DIM Ya AS Integer
    DIM Yb AS Integer
    DIM Yc AS Integer
    DIM Yd AS Integer

    DIM W AS Integer
    DIM H AS Integer

    IF Selected THEN
      $MX = Mouse.ScreenX
      $MY = Mouse.ScreenY
      $X = LAST.X
      $Y = LAST.Y
      IF Right(hForm.Tag, 1) = "T" THEN
        hForm.ReadOnly = TRUE
      END IF
    END IF

    FOR iI = 1 TO hObj.Count
      MX = Mouse.ScreenX
      MY = Mouse.ScreenY

      W = hObj[iI].Width     '<-- here I get Not an object
      H = hObj[iI].Height

      Xa = hObj[iI].ScreenX
      Xb = Xa + W
      Xc = Xa
      Xd = Xb

      Ya = hObj[iI].ScreenY
      Yb = Ya
      Yc = Ya + H
      Yd = Yc

      IF Xa <= MX AND Xb >= MX AND Ya <= MY AND Yc >= MY THEN
        hForm = hObj[iI]
      END IF
    NEXT
    hBorder = hForm.Border
    hForm.Border = Border.Plain

  END
  ....
  '--- this insert a new Text Area
  PUBLIC SUB Testo_Click()

    Unselect(hForm)
    hForm = NEW TextArea(pnaEtichetta) AS "vForm"
    hForm.Font.Name = cmbBoxFontName[cmbBoxFontName.Index].Text
    hForm.Font.Size = Val(cmbBoxFontSize[2].Text)
    hForm.X = 20
    hForm.Y = 10
    hForm.Visible = TRUE
    hForm.Enabled = TRUE
    hForm.Resize(pnaEtichetta.Width - 24, 24)
    Height = hForm.Height
    Stile()
    iI = iI + 1
    hForm.Tag = Str(iI) & "T"
    hObj.Add(hForm, iI)
    Select(hForm, TRUE)

  END
  ....
  '--- this delete the object
  PUBLIC SUB hTaglia_Click()

    IF Left(hForm.Tag,1) ="S" THEN
      hObj.Remove(Mid(hForm.Tag, 2, 1))
      unselect(hForm)
      hForm.Delete
    END IF
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20060403/f59eec6e/attachment.html>


More information about the User mailing list