Seite 1 von 1

ListIcon Spalte immer Vollehöhe

Verfasst: 07.03.2006 22:56
von Buggymonkey
Hi,
Ich brauche Hlfe bei dem "designen" eines ListIcon Gadgets!
Ich habe folgenden Code dazu im Englishen Forum gefunden:

Code: Alles auswählen

#CDDS_ITEM = $10000 
#CDDS_SUBITEM = $20000 
#CDDS_PREPAINT = $1 
#CDDS_ITEMPREPAINT = #CDDS_ITEM|#CDDS_PREPAINT 
#CDDS_SUBITEMPREPAINT = #CDDS_SUBITEM|#CDDS_ITEMPREPAINT 
#CDRF_DODEFAULT = $0 
#CDRF_NOTIFYITEMDRAW = $20 
#CDRF_NOTIFYSUBITEMDRAW = $20 
#CDRF_NEWFONT = $2 


;The following callback proc is required to colour ListIcon cells or set individual cellfonts. 
Procedure WinCallbackproc(hWnd, uMsg, wParam, lParam) 
  protected result, row, col 
  Protected *pnmh.NMHDR, *LVCDHeader.NMLVCUSTOMDRAW 
  result = #PB_ProcessPureBasicEvents 

  select uMsg 
    Case #WM_NOTIFY 
      *pnmh.NMHDR = lParam 
      Select *pnmh\code 
        Case #NM_CUSTOMDRAW 
          *LVCDHeader.NMLVCUSTOMDRAW = lParam 
          Select *LVCDHeader\nmcd\dwDrawStage 
            Case #CDDS_PREPAINT 
              result = #CDRF_NOTIFYITEMDRAW 
            Case #CDDS_ITEMPREPAINT 
              result = #CDRF_NOTIFYSUBITEMDRAW 
            Case #CDDS_SUBITEMPREPAINT 
              row = *LVCDHeader\nmcd\dwItemSpec 
              col = *LVCDHeader\iSubItem 
              if col = 0 
                *LVCDHeader\clrTextBk = #green 
                *LVCDHeader\clrText = #blue ;Text colour 
               SelectObject_(*LVCDHeader\nmcd\hDC, usefont(1)) 
              Else 
                *LVCDHeader\clrTextBk = #yellow 
                *LVCDHeader\clrText = #red 
                SelectObject_(*LVCDHeader\nmcd\hDC, usefont(2)) 
              endif 
              result = #CDRF_NEWFONT 
            EndSelect 
      EndSelect 
  endselect 
  procedurereturn result 
EndProcedure 


If OpenWindow(0,0,0,640,300,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_Invisible|#PB_Window_ScreenCentered,"Multiple Fonts") And CreateGadgetList(WindowID(0)) 
  ShowWindow_(WindowID(), #SW_MAXIMIZE) 
  listicongadget(1, 50, 50, 350, 250,"Font 1",120) 

  SetWindowCallback(@WinCallbackproc()) 

;******************************************SET FONTS*************************************** 
loadfont(1,"ARIAL", 18) 
loadfont(2,"TIMES NEW ROMAN", 18,#PB_Font_Bold |#PB_Font_Italic) 
;****************************************************************************************** 

  setgadgetfont(1,usefont(1))  ;To ensure the row height is large enough to accommodate the fonts. 

  AddGadgetColumn(1,1,"Font 2",120) 
  For b=0 To 3; Add 40 rows. 
    AddGadgetItem(1,-1,"Font 1" + chr(10) + "Font 2") 
  Next 

  Repeat 
    EventID = WaitWindowEvent() 
    Select EventID 
    EndSelect 
  Until EventID = #PB_Event_CloseWindow 
EndIf 
end
Ich hab die anzahl der Einträge ein bisschen runtergestzt,
leider hören die Spalten mittem im Gadget auf, kann man dagegen irgendwas tun? ich möchte das so haben, das das so aussieht:
Bild

Ich hoffe ihr könnt mir helfen!!
Gruß Nils :wink:

Verfasst: 07.03.2006 23:04
von AND51
Da hilft dir die Lib von (ich glaub) gnozal, such mal nach

PureLVSORT library

die ist exakt für ListIcon Gadgets in der Detailansicht und kann damnn alles, was du willst, realisieren.

Verfasst: 08.03.2006 17:04
von Leonhard
Wo wir grad beim ListViewGadget sind, Ich hab da auch noch nen Paar Fragen:
  • Wie läst sich eine ProgressBar in eine Spalte einbinden?
    Wie kann ich eine Baum-Ansicht aus den Einträgen machen?
Ich hab bei diesen vorkommenden Gadgets nachgeforscht, und bin dazu gekommen, das es das diese Gadgets die gleiche Classe wie das ListViewGadget besitzen.

Verfasst: 08.03.2006 18:31
von Buggymonkey
HI,
erstmal danke für eure schnellen antworten!

in der PureLVSORT library konnte ich leider nix finden zum thema Spalten färben etc.

allerdings hat gnozal eine andere Lib gemacht, die sich "PureCOLOR library" nennt. Damit kann man allerdings auch nur Den teil der Spalte färben in der sich zeilen befinden....

folgendes kann man mit dem Callback oder der lib von gnozal erzeugen:
Bild

Ich möchte aber dass es so aussieht:
Bild

Ist das realisierbar?

Gruß Nils

Verfasst: 08.03.2006 18:56
von roherter
Kann sein das ich mich irre aber geht das nicht auch mit der neuen version von pb also Purebasic4.0.

Verfasst: 08.03.2006 21:41
von Buggymonkey
Also in dem ChangeLog von PB4 hab ich nur folgendes gefunden:
- Supports SetGadgetItemColor() for front and backcolor (can be set for each cell individually)
ich glaube damit kann man auch nur dass machen wie mit dem Callback bzw. der Lib.

Ich habe allerdings mal drüber nachgedacht, ob sich das evtl. mit einem Backgroundimage realisieren lässt, man müsste es nur hinbekommen, dass das image immer mitscrollt, oder das sich das immer wieder in einer unter ein ander setzt...

Bin über jede Antwort echt dankbar!

Verfasst: 10.03.2006 16:54
von Leonhard