Seite 1 von 1

ListIcon -> Column ....

Verfasst: 31.07.2007 15:35
von Schlingel
Hallo,

zum Glück gibts keine Beiträge sonst könnte man noch meinen ich tue das nur deswegen xD

Habe eine Frage...

Code: Alles auswählen

;Stand mal irgendwo im Inet.... funzt au ermitteln zumind. die Anzahl..
Procedure ListIcon_GetColumnCount(gadget) 
  Col.LV_COLUMN\mask = #LVCF_WIDTH 
  Repeat 
    a+1:x=SendMessage_(GadgetID(gadget),#LVM_GETCOLUMN,a,@Col) 
  Until x = 0 
  ProcedureReturn a 
EndProcedure 


Procedure add_spalten(gid.query.s) 
  
  ClearGadgetItemList(gid)
  
  RemoveGadgetColumn(gid,0)
  AddGadgetColumn(gid,0,"Typ",60)
  
  If DatabaseQuery(#db1,query+" LIMIT 1;")
    For i=0 To DatabaseColumns(#db1)-1 Step 1
      spalte.s = DatabaseColumnName(#db1,i)
      RemoveGadgetColumn(gid,i+1)
      AddGadgetColumn(gid,i+1,spalte,60)
      a=i
    Next i
  EndIf
  For j=0 To 3      
    For i=(a+2) To ListIcon_GetColumnCount(gid) Step 1
      RemoveGadgetColumn(gid,i) 
    Next i
  Next j
  
EndProcedure
Bei der Variante läuft es wie geschmiert..... ohne Probleme....

Doch bei der bleiben die Spalten am Ende stehen... wenn die vorhergehende mehr Spalten hatte als die eben geaddete...
Durch probieren hab ich rausgefunden das diese untere For Schleife mit dem Remove mehrmal durchlaufen muss. Doch nun meine Frage.. warum?
Müsste es nicht theoretisch auch ohne diese (j=0 to 3) funktionieren ?

Code: Alles auswählen

;Stand mal irgendwo im Inet.... funzt au ermitteln zumind. die Anzahl..
Procedure ListIcon_GetColumnCount(gadget) 
  Col.LV_COLUMN\mask = #LVCF_WIDTH 
  Repeat 
    a+1:x=SendMessage_(GadgetID(gadget),#LVM_GETCOLUMN,a,@Col) 
  Until x = 0 
  ProcedureReturn a 
EndProcedure 


Procedure add_spalten(gid.query.s) 
  
  ClearGadgetItemList(gid)
  
  RemoveGadgetColumn(gid,0)
  AddGadgetColumn(gid,0,"Typ",60)
  
  If DatabaseQuery(#db1,query+" LIMIT 1;")
    For i=0 To DatabaseColumns(#db1)-1 Step 1
      spalte.s = DatabaseColumnName(#db1,i)
      RemoveGadgetColumn(gid,i+1)
      AddGadgetColumn(gid,i+1,spalte,60)
      a=i
    Next i
  EndIf
  
  For i=(a+2) To ListIcon_GetColumnCount(gid) Step 1
      RemoveGadgetColumn(gid,i) 
  Next i

  
EndProcedure

Re: ListIcon -> Column ....

Verfasst: 31.07.2007 16:02
von Kiffi
Schlingel hat geschrieben:geaddete...
ge... was?

Bei Entfernen von Spalten oder Listeneinträgen immer darauf achten, dass
die Schleife von hinten nach vorne (bzw. von unten nach oben) läuft.
Ansonsten entfernt man nur jeden 2. Eintrag.

Grüße ... Kiffi

Verfasst: 31.07.2007 16:12
von Schlingel
ge... was?
Vermutlich Denglisch.... Deutsche Zeitform versucht mit Englischen Wort zu mischen xD
Naja gut Sprachen waren noch nie so mein Fall.

Aber danke hmm.. gut zu Wissen...

Es könn aber noch mehr Fragen über solche Kleinigenkeiten kommen.. da ich momentan mehr oder weniger gezwungen bin mich mit PB auseinnander zusetzen. Wenn dazu dann noch Müdigkeit hinzu kommt... erst Recht :P