Hintergrund von TreeViewItems bei Umgehung von AddGadgetItem

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
hm
Beiträge: 5
Registriert: 10.09.2004 05:34

Hintergrund von TreeViewItems bei Umgehung von AddGadgetItem

Beitrag von hm »

Hallo,

weiss jemand, warum bei folgendem Code die TreeViewItems, die in den TreeView eingefügt werden, schwarze Schrift auf schwarzem Hintergrund haben? Dies tritt nur auf, wenn man vorher nicht mittels AddGadgetItem ein TreeViewItem hinzufügt. Muss man irgendwo einen Style ändern oder der #TVM_INSERTITEM Message spezielle Parameter mitgeben?

Danke für Eure Hilfe. Gruß -hm

Code: Alles auswählen

Global *hWnd.l
Global *hTV.l

Procedure Tree_InsertItemSort(TreeGadget, hItemParent, label.s )
  ; TV_INSERTSTRUCT und TV_ITEM füllen
  insertstruct.TV_INSERTSTRUCT\hParent = hItemParent
  insertstruct.TV_INSERTSTRUCT\hInsertAfter = #TVI_SORT
  insertstruct.TV_INSERTSTRUCT\item\Mask = #TVIF_TEXT
  insertstruct.TV_INSERTSTRUCT\item\pszText = @label
  lResult = SendMessage_(GadgetID(TreeGadget), #TVM_INSERTITEM, 0, @insertstruct)
  ProcedureReturn lResult
EndProcedure

Procedure Open_WindowMain()
*hWnd = OpenWindow(0, 307, 332, 368, 300, "Main",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If *hWnd
  If CreateGadgetList(WindowID(0))
    *hTV = TreeGadget(0, 10, 10, 230, 280, #PB_Tree_AlwaysShowSelection | #PB_Tree_CheckBoxes)
    ButtonGadget(1, 250, 260, 110, 30, "Exit")
  EndIf
EndIf
  
EndProcedure


Open_WindowMain()

;AddGadgetItem(0, -1, "blabla", 0)

For i=0 To 10
  Tree_InsertItemSort(0, #TVI_ROOT, "bla " + Str(i))
  ;AddGadgetItem(0, -1, "bla " + Str(i), 0)
Next i
    

Repeat ; Start of the event loop
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  GadgetID = EventGadget() ; Is it a gadget event?
  EventType = EventType() ; The event type
  
  ;You can place code here, and use the result as parameters for the procedures
  If Event = #PB_Event_Gadget
    If GadgetID = 0
      
    ElseIf GadgetID = 1
      End
    EndIf
  EndIf
  
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

Das Problem der Textdarstellung mit schwarzer Schrift auf schwarzem Hintergrund tritt nur in PB 4 auf, nicht in PB 3.94. Ich habe daher dieses Problem auch einmal im englischen Forum vorgestellt:
http://www.purebasic.fr/english/viewtopic.php?t=22196
Ich habe gestern längere Zeit am Code herumgebastelt und alles mögliche ausprobiert. Selbst das Einfügen der Prozedur AddTVItem() von freak (http://www.purebasic.fr/english/viewtopic.php?t=1929) führte zum gleichen Ergebnis (Darstellung in PB 3.94 korrekt, fehlerhaft in PB 4).
Antworten