Seite 1 von 1

Textfarbe für Window Button setzen mit API

Verfasst: 22.10.2008 19:36
von dl5ndh

Code: Alles auswählen

ButtonGadget(#Button_DXI_Starten88, 821, 520, 190, 40, "DXI Alarm starten")
SetGadgetFont(#Button_DXI_Starten88, FontID2)
SetSysColors_(#Button_DXI_Starten88,COLOR_BTNTEXT*lpaElements,RGB(255,0,0)*lpaRgbValues)
GadgetToolTip(#Button_DXI_Starten88, "DXI Alarm starten")
Hallo, ich habe versucht, mit dem Windows API-Befehl SetSysColors_(siehe oben) den Text eines bestimmten Button mit roter Schrift darzustellen. Der API-Befehl ist dort, wo noch die Fenster deklariert sind. Ich benutze für dieses Programmprojekt noch die Version 3.80.
Beim Compilieren wird kein Fehler angemakelt, jedoch bleibt die Schriftfarbe des betreffenden Button schwarz. Weiß jemand, ob ich diesen Befehl trotzdem falsch eingesetzt habe, oder warum geht das nicht, ist er an der falschen Stelle im Programm?

Noch eine zusätzliche Frage betreffs der Textfarbe in ListIconGadgets. Da habe ich es geschafft, die Textfarbe des Textes der Einträge zu ändern

mit SendMessage_(GadgetID(#ListIcon_DXClusterInternet),#LVM_SETTEXTCOLOR,0,RGB(200,0,0))

das hat auch funktioniert. Jedoch sind dann alle Texte der gesamten Liste in der anderen Farbe. Habe nichts gefunden, dass man die Farbe zum Beispiel nur eines Listeneintrages verändern kann, hmmm....
Weiß auch hier jemand Rat ?

Gerhard :cry:

Verfasst: 23.10.2008 10:44
von Shardik
dl5ndh hat geschrieben:Ich benutze für dieses Programmprojekt noch die Version 3.80.
dl5ndh hat geschrieben:Habe nichts gefunden, dass man die Farbe zum Beispiel nur eines Listeneintrages verändern kann, hmmm....
Mit einer aktuelleren PB-Version ab 4 geht dies ohne API über den neu hinzugekommenen Befehl SetGadgetItemColor():

Code: Alles auswählen

If OpenWindow(0, 0, 0, 215, 184, "Farbwechsel", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CompilerIf #PB_Compiler_Version < 430
    CreateGadgetList(WindowID(0))
  CompilerEndIf

  ListIconGadget(0, 10, 10, 195, 164, "Spalte 1", 95)
  AddGadgetColumn(0, 1, "Spalte 2", 95)

  For i = 1 To 10
    AddGadgetItem(0, i - 1, "Zeile " + Str(i) + ", Spalte 1" + #LF$ + "Zeile " + Str(i) + ", Spalte 2" )

    If i & 1
      SetGadgetItemColor(0, i - 1, #PB_Gadget_FrontColor, #Red)
    EndIf
  Next i
  
  Repeat
  Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Für eine PB 3.x-Version ist es komplizierter. Christian hat dazu im englischen Forum eine Lösung mit Callback gezeigt:
http://www.purebasic.fr/english/viewtop ... 6&start=18

Verfasst: 23.10.2008 10:54
von NicTheQuick
Die Spezfikationen von 'SetSysColors()' findest du hier.

Verfasst: 23.10.2008 13:51
von dl5ndh
Shardik hat geschrieben:
dl5ndh hat geschrieben:Ich benutze für dieses Programmprojekt noch die Version 3.80.
dl5ndh hat geschrieben:Habe nichts gefunden, dass man die Farbe zum Beispiel nur eines Listeneintrages verändern kann, hmmm....
Mit einer aktuelleren PB-Version ab 4 geht dies ohne API über den neu hinzugekommenen Befehl SetGadgetItemColor():

Code: Alles auswählen

If OpenWindow(0, 0, 0, 215, 184, "Farbwechsel", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CompilerIf #PB_Compiler_Version < 430
    CreateGadgetList(WindowID(0))
  CompilerEndIf

  ListIconGadget(0, 10, 10, 195, 164, "Spalte 1", 95)
  AddGadgetColumn(0, 1, "Spalte 2", 95)

  For i = 1 To 10
    AddGadgetItem(0, i - 1, "Zeile " + Str(i) + ", Spalte 1" + #LF$ + "Zeile " + Str(i) + ", Spalte 2" )

    If i & 1
      SetGadgetItemColor(0, i - 1, #PB_Gadget_FrontColor, #Red)
    EndIf
  Next i
  
  Repeat
  Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Für eine PB 3.x-Version ist es komplizierter. Christian hat dazu im englischen Forum eine Lösung mit Callback gezeigt:
http://www.purebasic.fr/english/viewtop ... 6&start=18
Hallo Shardik,
habe gar nicht gerechnet, das jemand hier noch Rat weiß. Ihr seid ja super drauf. Das probiere ich aus. DANKE

Verfasst: 23.10.2008 13:52
von dl5ndh
NicTheQuick hat geschrieben:Die Spezfikationen von 'SetSysColors()' findest du hier.
Danke auch Dir, NictheQuick. Leseich mir gleich durch.
Gerhard

Verfasst: 23.10.2008 21:49
von dl5ndh
Hallo ihr beiden,
danke noch mal, da ich aber spezielle dieses eine Programm-Projekt noch unter PB 3.80 weiterentwickle, mußte ichmich für den Windows Callback Weg entscheiden, sicher wäre es inder PB4.20 leichter, aber das nützt mir im Moment nichts, vielleicht bei einem anderen Projekt.
So geht es aber auch, danke vielmals.
Gerhard

Verfasst: 23.10.2008 22:53
von dl5ndh
Shardik hat geschrieben:
dl5ndh hat geschrieben:Ich benutze für dieses Programmprojekt noch die Version 3.80.
dl5ndh hat geschrieben:Habe nichts gefunden, dass man die Farbe zum Beispiel nur eines Listeneintrages verändern kann, hmmm....
Mit einer aktuelleren PB-Version ab 4 geht dies ohne API über den neu hinzugekommenen Befehl SetGadgetItemColor():

Code: Alles auswählen

If OpenWindow(0, 0, 0, 215, 184, "Farbwechsel", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CompilerIf #PB_Compiler_Version < 430
    CreateGadgetList(WindowID(0))
  CompilerEndIf

  ListIconGadget(0, 10, 10, 195, 164, "Spalte 1", 95)
  AddGadgetColumn(0, 1, "Spalte 2", 95)

  For i = 1 To 10
    AddGadgetItem(0, i - 1, "Zeile " + Str(i) + ", Spalte 1" + #LF$ + "Zeile " + Str(i) + ", Spalte 2" )

    If i & 1
      SetGadgetItemColor(0, i - 1, #PB_Gadget_FrontColor, #Red)
    EndIf
  Next i
  
  Repeat
  Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Für eine PB 3.x-Version ist es komplizierter. Christian hat dazu im englischen Forum eine Lösung mit Callback gezeigt:
http://www.purebasic.fr/english/viewtop ... 6&start=18

[img]file://C:/PureBasic_3.80/QUELLTEXT/ListIconGagdet_Einzelzeilenfarbig.png[/img]

Mit Deiner Lösung bzgl. dem englischen Link ist das obige Ergebnis entstanden. Unwichtige DX-Meldungen in schwarz und solche, die für den Logbuchinhaber wichtig sind, in ROT ;-)
Hmm, ich wollte Euch einen Screendump mit dem Ergebnis anzeigen, aber das klappt irgendwie nicht....
Danke vielmals
Gerhard

Verfasst: 23.10.2008 23:12
von Kiffi
dl5ndh hat geschrieben:Hmm, ich wollte Euch einen Screendump mit dem Ergebnis anzeigen, aber das klappt irgendwie nicht....
das ist klar, weil wir (zu Deinem Glück) nicht auf Deine Platte gucken dürfen. ;-)

Lade Dein Bild einfach auf abload.de hoch.

Grüße ... Kiffi

Verfasst: 23.10.2008 23:22
von dl5ndh
Kiffi hat geschrieben:
dl5ndh hat geschrieben:Hmm, ich wollte Euch einen Screendump mit dem Ergebnis anzeigen, aber das klappt irgendwie nicht....
das ist klar, weil wir (zu Deinem Glück) nicht auf Deine Platte gucken dürfen. ;-)

Lade Dein Bild einfach auf abload.de hoch.

Grüße ... Kiffi
[img][img]http://www.abload.de/thumb/listicongagdet_einzelze7c6.png[/img] [/img]

Danke, Kiffi, wieder was dazugelernt. Also hier ist das Ergebnis, dass es dank Eurer Hilfe auch mit PB3.80 geht, die einzelnen Zeilen unterschiedlich einzufärben. Es muß nicht sein, aber in diesem Fall ist es aufgrund einer Wichtigkeit doch tragkräftig,hi
Ciao Gerhard