ListIcon Spalte immer Vollehöhe

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Buggymonkey
Beiträge: 47
Registriert: 02.09.2004 19:36
Wohnort: Löhne
Kontaktdaten:

ListIcon Spalte immer Vollehöhe

Beitrag 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:
wenn wer rechtschreibfehler findet, kann er sie behalten, :)

Ich würde gern die Welt verändern,
doch Gott gibt mir den Quellcode nicht!

http://www.house-of-chat.de umbedingt mal vorbei schaun ^^
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Leonhard
Beiträge: 602
Registriert: 01.03.2006 21:25

Beitrag 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.
Benutzeravatar
Buggymonkey
Beiträge: 47
Registriert: 02.09.2004 19:36
Wohnort: Löhne
Kontaktdaten:

Beitrag 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
wenn wer rechtschreibfehler findet, kann er sie behalten, :)

Ich würde gern die Welt verändern,
doch Gott gibt mir den Quellcode nicht!

http://www.house-of-chat.de umbedingt mal vorbei schaun ^^
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Kann sein das ich mich irre aber geht das nicht auch mit der neuen version von pb also Purebasic4.0.
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
Buggymonkey
Beiträge: 47
Registriert: 02.09.2004 19:36
Wohnort: Löhne
Kontaktdaten:

Beitrag 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!
wenn wer rechtschreibfehler findet, kann er sie behalten, :)

Ich würde gern die Welt verändern,
doch Gott gibt mir den Quellcode nicht!

http://www.house-of-chat.de umbedingt mal vorbei schaun ^^
Antworten