Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

objekte.bi

Uploader:MitgliedBraesident
Datum/Zeit:07.04.2013 00:26:34

' Funktion zur Objektverwaltung
' (anzeigen und zb Mausverhalten auf diese)
'
' BMPs - Buttons - Textfelder
' CreOb (,,,,,,,,,,)
' CreOb (ObjName(0/1/>999), pos_W, pos_H, groesse_W, groesse_H, BG_farbe,
'        BG_Grafik_bmp(mussgleiche groesse wie Txtfeld), Text, Textfarbe,
'        Textart(0/1), Serie(1-10), Move(0/1))
'
' ObjName ist ehr eine Nummer
' ObjName = 0 - Nummer wird beibehalten und mit selben verknuepft wobei SERIE
'     die Reihenfolge festlegt
' ObjName = 1 - Nummer wird neu erstellt - MUSS gewaehlt werden werden das erste mal
'                                          ein Objekt angelegt wird (mit automatischer
'                                          Nummerrierung)
' ObjName > 999 selbstfesgelegter Name
'
' Serie 1-10 ist nur bei selbst festgelegtem ObjNamen anzugeben, sonst 0 angeben
'
' Pos.. = 0 so wird diese per RANDOMIZE TIMER festgelegt
'
' BG_farbe > 0 dann wird Grafik ignoriert
'
' wird ein BG oder eine Graphik angegeben UND auch TEXT so wird dieser mittig
'     des BGs angezeigt
'
' Textart = 0 - normaler FB String
' Textart = 1 - kleiner String per autowrite
'
' Move = 1 - Objekt ist mit Maus verschiebbar
'
' weitere Idee:
'
' Aufruf zum loeschen des Objektes
' Rückgabefunktionen zB der Pos zum neu setzen der Pos durch verschieben mit
' der Maus
' ##############################################################################
#Include Once "autowrite.bi"
#Include Once "openBildPSET.bi"

TYPE Objektblock
  Nummer  AS Integer
  pwide   AS INTEGER
  phigh   AS INTEGER
  owide   AS INTEGER
  ohigh   AS INTEGER
  farbe   AS Double
  Grafik  AS String
  Text    AS String
  TextF   AS Double
  Textart AS Integer
  Serie   AS Integer
  Move    AS Integer
  visibility AS String
END TYPE
DIM SHARED Objekt() AS Objektblock
TYPE Objektblock2
  Nummer  AS Integer
  pwide   AS INTEGER
  phigh   AS INTEGER
  owide   AS INTEGER
  ohigh   AS INTEGER
  farbe   AS Double
  Grafik  AS String
  Text    AS String
  TextF   AS Double
  Textart AS Integer
  Serie   AS Integer
  Move    AS Integer
  visibility AS String
END TYPE
DIM SHARED Ob_tmp(10) AS Objektblock2
TYPE Objektblock3
  pw_a   AS INTEGER
  ph_a   AS INTEGER
END TYPE
DIM SHARED Ob_koor(2 TO 10) AS Objektblock3

DIM SHARED AS Integer TALAS1 ' (This Arraynumber is the Last Arraynumber with Seriesnumber 1)
DIM SHARED AS Integer i_array, i_counter, i_objekt, info_W, info_H, text_spalte, text_zeile, _
                      Obj_maus_W, Obj_maus_H, Obj_maus_B, Obj_in_Move, Obj_TO_Move, markiert, _
                      Obj_maus_Wa, Obj_maus_Ha, Obj_wide_a, Obj_high_a, New_Dim, Kill_num, _
                      focus_number, Obj_maus_Wext, Obj_maus_Hext
DIM SHARED AS Integer i_serie = 1
DIM Shared AS Integer ObjektName = 0

Randomize Timer

DIM SHARED AS Integer i_test ' fuer testzwecke

' ################################## DECLAREs ##################################
Declare SUB CreOb(Obj_Name AS Integer, Obj_pos_W AS Integer, Obj_pos_H AS Integer, _
  Obj_gr_W AS Integer, Obj_gr_H AS Integer, Obj_BG_farbe AS Double, Obj_Grafik AS String, _
  Obj_Text AS String, Obj_Textfarbe AS Double, Obj_Textart AS Integer, Obj_Serie AS Integer, Obj_Move AS Integer)

Declare SUB ShowOb(von_num AS Integer, bis_num AS Integer)

Declare SUB ObjMove

Declare SUB Kill_Obj(Obj_num AS Integer)

Declare SUB SetPos(Obj_num AS Integer, new_W AS Integer, new_H AS Integer)

Declare SUB SetText(Obj_num AS Integer, Obj_Serie AS Integer, new_T AS String)

Declare SUB SetMouseFrame(Obj_S AS Integer, framecolor AS Double)

Declare SUB Hide_Obj(Obj_num AS Integer)

Declare SUB Unhide_Obj(Obj_num AS Integer)

Declare SUB testi

Declare Function in_Focus AS Integer

Declare Function click_on_series(obj_num AS Integer, Obj_S AS Integer) AS Integer

Declare Function Objekt_APP AS Integer

Declare Function GetText(obj_num AS Integer, obj_Serie AS Integer) AS String
' Declare Function click_on(Obj_number AS Integer) AS Integer


' ##################################### SUBs ###################################

SUB CreOb(Obj_Name AS Integer, Obj_pos_W AS Integer, Obj_pos_H AS Integer, _
  Obj_gr_W AS Integer, Obj_gr_H AS Integer, Obj_BG_farbe AS Double, Obj_Grafik AS String, _
  Obj_Text AS String, Obj_Textfarbe AS Double, Obj_Textart AS Integer, Obj_Serie AS Integer, Obj_Move AS Integer)

  REDIM PRESERVE Objekt(UBound(Objekt) + 1)
  ScreenInfo info_W, info_H

  IF Obj_Name = 0 THEN      ' Erkennungsnummer beibehalten
    Objekt(UBound(objekt)).Nummer = ObjektName
    i_serie += 1              ' -hierbei wird Serie autom. erhoeht
    Objekt(UBound(objekt)).Serie = i_serie
  ELSEIF Obj_Name = 1 THEN      ' NEUE Erkennungsnumer
    FOR i_objekt = 1 TO 99
      ObjektName = i_objekt
      FOR i_array = 1 TO UBound(objekt)
        IF objekt(i_array).Nummer = i_objekt THEN ObjektName = 0
      NEXT i_array
      IF ObjektName > 0 THEN EXIT FOR
    NEXT i_objekt

    Objekt(UBound(objekt)).Nummer = ObjektName
    i_serie = 1                 ' -Serie ist hierbei 1
    Objekt(UBound(objekt)).Serie = i_serie
    TALAS1 = UBound(objekt)
  ELSEIF Obj_Name > 99 THEN      ' Erkennungsnummer wurde selbst definiert
    Objekt(UBound(objekt)).Nummer = Obj_Name
    Objekt(UBound(objekt)).Serie = Obj_Serie      ' -hier wird selbstdefinierte Seriennummer gebraucht
    IF Obj_Serie = 1 THEN TALAS1 = UBound(objekt)
  ELSE
    EXIT SUB
  END IF

  IF objekt(UBound(objekt)).Serie > 1 THEN
    FOR i_array = 1 TO UBound(objekt)
      IF objekt(i_array).Nummer = Objekt(UBound(objekt)).Nummer AND objekt(i_array).Serie = 1 THEN
        objekt(UBound(objekt)).pwide = objekt(i_array).pwide + Obj_pos_W
        objekt(UBound(objekt)).phigh = objekt(i_array).phigh + Obj_pos_H
        EXIT FOR
      END IF
    NEXT i_array
  ELSE
    IF Obj_pos_W = 0 THEN
      objekt(UBound(objekt)).pwide = int(rnd * (info_W - Obj_gr_W)) + 1
    ELSE
      objekt(UBound(objekt)).pwide = Obj_pos_W
    END IF
    IF Obj_pos_H = 0 THEN
      objekt(UBound(objekt)).phigh = int(rnd * (info_H - Obj_gr_H)) + 1
    ELSE
      objekt(UBound(objekt)).phigh = Obj_pos_H
    END IF
  END IF

  Objekt(UBound(objekt)).owide = Obj_gr_W
  Objekt(UBound(objekt)).ohigh = Obj_gr_H
  Objekt(UBound(objekt)).farbe = Obj_BG_farbe
  Objekt(UBound(objekt)).Grafik = Obj_Grafik
  Objekt(UBound(objekt)).Text = Obj_Text
  Objekt(UBound(objekt)).TextF = Obj_Textfarbe
  Objekt(UBound(objekt)).Textart = Obj_Textart
  Objekt(UBound(objekt)).Move = Obj_Move
  Objekt(UBound(objekt)).visibility = "unhide"

End Sub

SUB ShowOb(von_num AS Integer, bis_num AS Integer)
  IF von_num < 1 THEN EXIT SUB
  IF bis_num < 1 THEN bis_num = von_num

FOR i_array = 1 TO UBound(objekt)
 FOR i_objekt = von_num TO bis_num
   IF i_objekt = objekt(i_array).Nummer AND Objekt(i_array).visibility = "unhide" THEN

    IF objekt(i_array).farbe <> 0 THEN
      Line(objekt(i_array).pwide, objekt(i_array).phigh) - _
      STEP(objekt(i_array).owide, objekt(i_array).ohigh), objekt(i_array).farbe, BF
    ELSEIF objekt(i_array).farbe = 0 AND objekt(i_array).Grafik <> "" THEN
      openbildPSET(objekt(i_array).Grafik, objekt(i_array).owide, objekt(i_array).ohigh, objekt(i_array).pwide, objekt(i_array).phigh)
    END IF

    IF (objekt(i_array).farbe <> 0 OR objekt(i_array).Grafik <> "") AND _
      objekt(i_array).Text <> "" AND objekt(i_array).Textart = 0 THEN
      Color objekt(i_array).TextF
      Draw String ((objekt(i_array).pwide + (objekt(i_array).owide / 2)) - (LEN(objekt(i_array).Text) * 4), _
      (objekt(i_array).phigh + (objekt(i_array).ohigh / 2)) - 4), objekt(i_array).Text

    ELSEIF (objekt(i_array).farbe <> 0 OR objekt(i_array).Grafik <> "") AND _
      objekt(i_array).Text <> "" AND objekt(i_array).Textart = 1 THEN
      autowrite(objekt(i_array).TextF, (objekt(i_array).pwide + (objekt(i_array).owide / 2)) - (LEN(objekt(i_array).Text) * 3) + 1, _
      (objekt(i_array).phigh + (objekt(i_array).ohigh / 2)) - 3, objekt(i_array).Text, 0)

    ELSEIF objekt(i_array).farbe = 0 AND objekt(i_array).Grafik = "" AND _
      objekt(i_array).Text <> "" AND objekt(i_array).Textart = 0 THEN
      text_spalte = 0: text_zeile = 0: Color objekt(i_array).TextF
      FOR i_counter = 1 TO LEN(objekt(i_array).Text)
        Draw String (objekt(i_array).pwide + text_spalte, objekt(i_array).phigh + text_zeile), _
        MID(objekt(i_array).Text, i_counter, 1)
        text_spalte += 8
        IF text_spalte + 8 > objekt(i_array).owide THEN text_spalte = 0: text_zeile += 11
        IF text_zeile + 11 > objekt(i_array).ohigh THEN EXIT FOR
      NEXT i_counter

    ELSEIF objekt(i_array).farbe = 0 AND objekt(i_array).Grafik = "" AND _
      objekt(i_array).Text <> "" AND objekt(i_array).Textart = 1 THEN
      text_spalte = 0: text_zeile = 0
      FOR i_counter = 1 TO LEN(objekt(i_array).Text)
        autowrite(objekt(i_array).TextF, objekt(i_array).pwide + text_spalte, objekt(i_array).phigh + text_zeile, _
        MID(objekt(i_array).Text, i_counter, 1), 0)
        text_spalte += 6
        IF text_spalte + 6 > objekt(i_array).owide THEN text_spalte = 0: text_zeile += 9
        IF text_zeile + 9 > objekt(i_array).ohigh THEN EXIT FOR
      NEXT i_counter
    END IF

   END IF
  NEXT i_objekt
NEXT i_array
END SUB

SUB ObjMove
  DIM AS Integer dif_W, dif_H

  GetMouse (Obj_maus_W, Obj_maus_H, , Obj_maus_B)

  IF Obj_maus_B = 0 THEN
    Obj_in_Move = 0: EXIT SUB
  ELSEIF (Obj_maus_B = 1) AND (objekt(TALAS1).Move) AND (Objekt(TALAS1).visibility = "unhide") THEN

    IF Obj_in_Move = 0 THEN
      IF in_Focus = 0 THEN EXIT SUB
      Obj_maus_Wa = Obj_maus_Wext
      Obj_maus_Ha = Obj_maus_Hext
      Obj_wide_a = objekt(TALAS1).pwide
      Obj_high_a = objekt(TALAS1).phigh
      IF TALAS1 < UBound(objekt) THEN
        FOR i_objekt = (TALAS1 + 1) TO UBound(objekt)
          ob_koor(objekt(i_objekt).Serie).pw_a = objekt(i_objekt).pwide - objekt(TALAS1).pwide
          ob_koor(objekt(i_objekt).Serie).ph_a = objekt(i_objekt).phigh - objekt(TALAS1).phigh
        NEXT i_objekt
      END IF
      Obj_in_Move = 1
    END IF

    dif_W = Obj_maus_W - Obj_maus_Wa
    dif_H = Obj_maus_H - Obj_maus_Ha

    IF Obj_wide_a + dif_W < 1 THEN
      objekt(TALAS1).pwide = 1
    ELSEIF (Obj_wide_a + dif_W) + objekt(TALAS1).owide > info_W THEN
      objekt(TALAS1).pwide = info_W - objekt(TALAS1).owide
    ELSE
      objekt(TALAS1).pwide = Obj_wide_a + dif_W
    END IF
    IF Obj_high_a + dif_H < 1 THEN
      objekt(TALAS1).phigh = 1
    ELSEIF (Obj_high_a + dif_H) + objekt(TALAS1).ohigh > info_H THEN
      objekt(TALAS1).phigh = info_H - objekt(TALAS1).ohigh
    ELSE
      objekt(TALAS1).phigh = Obj_high_a + dif_H
    END IF

    IF TALAS1 < UBound(objekt) THEN
      FOR i_objekt = (TALAS1 + 1) TO UBound(objekt)
        objekt(i_objekt).pwide = objekt(TALAS1).pwide + ob_koor(objekt(i_objekt).Serie).pw_a
        objekt(i_objekt).phigh = objekt(TALAS1).phigh + ob_koor(objekt(i_objekt).Serie).ph_a
      NEXT i_objekt
    END IF
  END IF
END SUB

SUB Kill_Obj(obj_num AS Integer)

  IF Obj_num < 1 THEN EXIT SUB


  Obj_TO_Move = 0
  FOR i_array = 1 TO UBound(objekt)
    IF objekt(i_array).Nummer = Obj_num THEN
      Obj_TO_Move += 1
      objekt(i_array).Nummer = 0
    END IF
  NEXT i_array

  ' Lueckenaufschluss
  FOR i_objekt = 1 TO Obj_TO_Move
    FOR i_counter = 1 TO (UBound(objekt) - 1)
      IF objekt(i_counter).Nummer = 0 THEN
        objekt(i_counter).Nummer = objekt(i_counter + 1).Nummer
        objekt(i_counter + 1).Nummer = 0
        objekt(i_counter).pwide = objekt(i_counter + 1).pwide
        objekt(i_counter).phigh = objekt(i_counter + 1).phigh
        objekt(i_counter).owide = objekt(i_counter + 1).owide
        objekt(i_counter).ohigh = objekt(i_counter + 1).ohigh
        objekt(i_counter).farbe = objekt(i_counter + 1).farbe
        objekt(i_counter).Grafik = objekt(i_counter + 1).Grafik
        objekt(i_counter).Text = objekt(i_counter + 1).Text
        objekt(i_counter).Textf = objekt(i_counter + 1).TextF
        objekt(i_counter).Textart = objekt(i_counter + 1).Textart
        objekt(i_counter).Serie = objekt(i_counter + 1).Serie
        objekt(i_counter).Move = objekt(i_counter + 1).Move
        Objekt(i_counter).visibility = Objekt(i_counter + 1).visibility
      END IF
    NEXT i_counter
  NEXT i_objekt

  New_Dim = UBound(objekt) - Obj_TO_Move
  Redim Preserve objekt(New_Dim)

  i_array = UBound(objekt)
  DO
    SLEEP 1
    IF objekt(i_array).Serie = 1 THEN TALAS1 = i_array: EXIT DO
    i_array -= 1
  LOOP Until i_array < 1
END SUB


SUB SetPos(Obj_num AS Integer, new_W AS Integer, new_H AS Integer)
  DIM AS Integer dif_W, dif_H
  ScreenInfo info_W, info_H

  FOR i_array = 1 TO UBound(objekt)
    IF objekt(i_array).Nummer = obj_num THEN
      IF objekt(i_array).Serie = 1 THEN
        IF new_W < 1 THEN
          dif_W = objekt(i_array).pwide - 1
          objekt(i_array).pwide = 1
        ELSEIF new_W + objekt(i_array).owide > info_W THEN
          dif_W = objekt(i_array).pwide - (info_W - objekt(i_array).owide)
          objekt(i_array).pwide = info_W - objekt(i_array).owide
        ELSE
          dif_W = objekt(i_array).pwide - new_W
          objekt(i_array).pwide = new_W
        END IF
        IF new_H < 1 THEN
          dif_H = objekt(i_array).phigh - 1
          objekt(i_array).phigh = 1
        ELSEIF new_H + objekt(i_array).ohigh > info_H THEN
          dif_H = objekt(i_array).phigh - (info_H - objekt(i_array).ohigh)
          objekt(i_array).phigh = info_H - objekt(i_array).ohigh
        ELSE
          dif_H = objekt(i_array).phigh - new_H
          objekt(i_array).phigh = new_H
        END IF
      ELSE
        objekt(i_array).pwide -= dif_W
        objekt(i_array).phigh -= dif_H
      END IF
    END IF
  NEXT i_array
END SUB


SUB SetText(Obj_num AS Integer, Obj_Serie AS Integer, new_T AS String)
  FOR i_array = 1 TO UBound(objekt)
    IF objekt(i_array).Nummer = Obj_num AND objekt(i_array).Serie = Obj_Serie THEN
      objekt(i_array).Text = new_T
      EXIT FOR
    END IF
  NEXT i_array
END SUB


SUB SetMouseFrame(Obj_S AS Integer, framecolor AS Double)
  FOR i_array = 1 TO UBound(objekt)
    IF (objekt(i_array).Serie = Obj_S) AND (Objekt(i_array).visibility = "unhide") AND _
      (Obj_maus_W >=  objekt(i_array).pwide) AND _
      (Obj_maus_W <= (Objekt(i_array).pwide + objekt(i_array).owide)) AND _
      (Obj_maus_H >=  objekt(i_array).phigh) AND _
      (Obj_maus_H <= (objekt(i_array).phigh + objekt(i_array).ohigh)) THEN
      Line (Objekt(i_array).pwide, objekt(i_array).phigh) - STEP(objekt(i_array).owide, objekt(i_array).ohigh), framecolor, B
      EXIT FOR
    END IF
  NEXT i_array
END SUB


SUB Hide_Obj(Obj_num AS Integer)
  FOR i_array = 1 TO UBound(objekt)
    IF Objekt(i_array).Nummer = Obj_Num THEN
      Objekt(i_array).visibility = "hide"
    END IF
  NEXT i_array
END SUB


SUB Unhide_Obj(Obj_num AS Integer)
  FOR i_array = 1 TO UBound(objekt)
    IF Objekt(i_array).Nummer = Obj_Num THEN
      Objekt(i_array).visibility = "unhide"
    END IF
  NEXT i_array
END SUB


SUB testi
  Color &h00aa00
  locate 1
  FOR i_test = 1 TO UBound(objekt)

    ? "N " & objekt(i_test).Nummer & "  S " & objekt(i_test).Serie

  NEXT i_test
  Locate 1
  FOR i_test = 1 TO 10

    Locate , 15: ? "N " & ob_tmp(i_test).Nummer & "  S " & ob_tmp(i_test).Serie

  NEXT i_test
  ? "TALAS1 " & TALAS1
END SUB


' ################################## FUNCTIONs #################################

Function in_Focus AS Integer
  GetMouse (Obj_maus_W, Obj_maus_H, , Obj_maus_B)
  IF (Objekt(TALAS1).visibility = "unhide") AND (Obj_maus_W >=  objekt(TALAS1).pwide) AND _
     (Obj_maus_W <= (Objekt(TALAS1).pwide + objekt(TALAS1).owide)) AND _
     (Obj_maus_H >=  objekt(TALAS1).phigh) AND _
     (Obj_maus_H <= (objekt(TALAS1).phigh + objekt(TALAS1).ohigh)) THEN
    focus_number = objekt(TALAS1).Nummer
    in_Focus = 1
  ELSE
    in_Focus = 0
  END IF
END Function

Function click_on_series(obj_num AS Integer, Obj_S AS Integer) AS Integer
  FOR i_array = 1 TO UBound(objekt)
    IF objekt(i_array).Nummer = obj_num AND objekt(i_array).Serie = obj_S THEN
      IF (Obj_maus_W >=  objekt(i_array).pwide) AND _
         (Obj_maus_W <= (Objekt(i_array).pwide + objekt(i_array).owide)) AND _
         (Obj_maus_H >=  objekt(i_array).phigh) AND _
         (Obj_maus_H <= (objekt(i_array).phigh + objekt(i_array).ohigh)) THEN

         click_on_series = 1: EXIT Function

      ELSE
        click_on_series = 0: EXIT Function
      END IF
    END IF
  NEXT i_array
END Function

Function Objekt_APP AS Integer
  ' Maus bewegt ein Objekt dann kein Klick
  IF Obj_in_Move THEN ObjMove: EXIT Function

  GetMouse (Obj_maus_W, Obj_maus_H, , Obj_maus_B)
  ' uebernehme mauskoor. fuer bewegung
  Obj_maus_Wext = Obj_maus_W: Obj_maus_Hext = Obj_maus_H
  ' Pruefe ob Obj. unter Mausz. das oberste Obj.
  ' und ob die LINKE Maustaste gedrückt wurde
  IF (in_Focus) AND (Obj_maus_B = 1) THEN
    SLeep 150
    GetMouse (Obj_maus_W, Obj_maus_H, , Obj_maus_B)

    IF Obj_maus_B = 0 THEN
      Objekt_APP = objekt(TALAS1).Nummer: EXIT Function
    ELSE
      ObjMove: EXIT Function
    END IF

  ELSEIF (Obj_maus_B = 1) AND (in_Focus = 0) THEN
    i_array = (TALAS1 - 1)
    DO
      Sleep 1
      ' geklicktes Objekt in tmp-array verschieben
      IF (Obj_maus_W >=  objekt(i_array).pwide) AND _
         (Obj_maus_W <= (Objekt(i_array).pwide + objekt(i_array).owide)) AND _
         (Obj_maus_H >=  objekt(i_array).phigh) AND _
         (Obj_maus_H <= (objekt(i_array).phigh + objekt(i_array).ohigh)) AND _
         objekt(i_array).Serie = 1 THEN
         markiert = objekt(i_array).Nummer
         Obj_TO_Move = 0
         FOR i_counter = 1 TO UBound(objekt)
           IF objekt(i_counter).Nummer = markiert THEN
             Obj_TO_Move += 1
             Ob_tmp(objekt(i_counter).Serie).Nummer = objekt(i_counter).Nummer
             objekt(i_counter).Nummer = 0
             Ob_tmp(objekt(i_counter).Serie).pwide = objekt(i_counter).pwide
             Ob_tmp(objekt(i_counter).Serie).phigh = objekt(i_counter).phigh
             Ob_tmp(objekt(i_counter).Serie).owide = objekt(i_counter).owide
             Ob_tmp(objekt(i_counter).Serie).ohigh = objekt(i_counter).ohigh
             Ob_tmp(objekt(i_counter).Serie).farbe = objekt(i_counter).farbe
             Ob_tmp(objekt(i_counter).Serie).Grafik = objekt(i_counter).Grafik
             Ob_tmp(objekt(i_counter).Serie).Text = objekt(i_counter).Text
             Ob_tmp(objekt(i_counter).Serie).Textf = objekt(i_counter).TextF
             Ob_tmp(objekt(i_counter).Serie).Textart = objekt(i_counter).Textart
             Ob_tmp(objekt(i_counter).Serie).Serie = objekt(i_counter).Serie
             Ob_tmp(objekt(i_counter).Serie).Move = objekt(i_counter).Move
             Ob_tmp(objekt(i_counter).Serie).visibility = Objekt(i_counter).visibility
           END IF
         NEXT i_counter

         ' Lueckenaufschluss
         FOR i_objekt = 1 TO Obj_TO_Move
           FOR i_counter = 1 TO (UBound(objekt) - 1)
             IF objekt(i_counter).Nummer = 0 THEN
               objekt(i_counter).Nummer = objekt(i_counter + 1).Nummer
               objekt(i_counter + 1).Nummer = 0
               objekt(i_counter).pwide = objekt(i_counter + 1).pwide
               objekt(i_counter).phigh = objekt(i_counter + 1).phigh
               objekt(i_counter).owide = objekt(i_counter + 1).owide
               objekt(i_counter).ohigh = objekt(i_counter + 1).ohigh
               objekt(i_counter).farbe = objekt(i_counter + 1).farbe
               objekt(i_counter).Grafik = objekt(i_counter + 1).Grafik
               objekt(i_counter).Text = objekt(i_counter + 1).Text
               objekt(i_counter).Textf = objekt(i_counter + 1).TextF
               objekt(i_counter).Textart = objekt(i_counter + 1).Textart
               objekt(i_counter).Serie = objekt(i_counter + 1).Serie
               objekt(i_counter).Move = objekt(i_counter + 1).Move
               Objekt(i_counter).visibility = Objekt(i_counter + 1).visibility
             END IF
           NEXT i_counter
         NEXT i_objekt

         ' tmp wieder zurueck (ans Ende)      8 + 3 = 11 - 10 = 1
         FOR i_objekt = (UBound(objekt) - Obj_TO_Move) + 1 TO UBound(objekt)
           objekt(i_objekt).Nummer = ob_tmp((i_objekt + Obj_TO_Move) - UBound(objekt)).Nummer
           objekt(i_objekt).pwide = ob_tmp((i_objekt + Obj_TO_Move) - UBound(objekt)).pwide
           objekt(i_objekt).phigh = ob_tmp((i_objekt + Obj_TO_Move) - UBound(objekt)).phigh
           objekt(i_objekt).owide = ob_tmp((i_objekt + Obj_TO_Move) - UBound(objekt)).owide
           objekt(i_objekt).ohigh = ob_tmp((i_objekt + Obj_TO_Move) - UBound(objekt)).ohigh
           objekt(i_objekt).farbe = ob_tmp((i_objekt + Obj_TO_Move) - UBound(objekt)).farbe
           objekt(i_objekt).Grafik = ob_tmp((i_objekt + Obj_TO_Move) - UBound(objekt)).Grafik
           objekt(i_objekt).Text = ob_tmp((i_objekt + Obj_TO_Move) - UBound(objekt)).Text
           objekt(i_objekt).Textf = ob_tmp((i_objekt + Obj_TO_Move) - UBound(objekt)).TextF
           objekt(i_objekt).Textart = ob_tmp((i_objekt + Obj_TO_Move) - UBound(objekt)).Textart
           objekt(i_objekt).Serie = ob_tmp((i_objekt + Obj_TO_Move) - UBound(objekt)).Serie
           objekt(i_objekt).Move = ob_tmp((i_objekt + Obj_TO_Move) - UBound(objekt)).Move
           Objekt(i_objekt).visibility = Ob_tmp((i_objekt + Obj_TO_Move) - UBound(objekt)).visibility
           IF (i_objekt + Obj_TO_Move) - UBound(objekt) = 1 THEN TALAS1 = i_objekt
         NEXT i_objekt
         IF objekt(UBound(objekt)).Nummer < 100 THEN
           Objekt_APP = 0: EXIT Function
         ELSE
           Objekt_APP = objekt(TALAS1).Nummer: EXIT Function
         END IF
      END IF
      i_array -= 1
    LOOP Until i_array < 1
  END IF
END Function

Function GetText(obj_num AS Integer, obj_Serie AS Integer) AS String
  FOR i_array = 1 TO UBound(objekt)
    IF objekt(i_array).Serie = obj_serie AND objekt(i_array).Nummer = obj_num THEN
      GetText = objekt(i_array).Text
      EXIT Function
    END IF
  NEXT i_array
  GetText = ""
END Function