ListIcon -> Column ....

Anfängerfragen zum Programmieren mit PureBasic.
Schlingel
Beiträge: 30
Registriert: 28.06.2007 20:06

ListIcon -> Column ....

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: ListIcon -> Column ....

Beitrag 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
a²+b²=mc²
Schlingel
Beiträge: 30
Registriert: 28.06.2007 20:06

Beitrag 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
Antworten