Seite 2 von 3
Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts
Verfasst: 24.08.2018 19:21
von ccode_new
Kann ich es irgendwie erreichen, dass die Dropdown-Liste unverändert bleibt?
(d.h. die Farbveränderungen hier nicht greifen)
Schaue dir den Code mal genau an. Du kannst auch die Farben beliebig anpassen.
Oder einfach mal diese Zeilen Auskommentieren.
Code: Alles auswählen
FillRect_(*DRAWITEM\hDC,*DRAWITEM\rcItem,bgbrush)
FrameRect_(*DRAWITEM\hDC,*DRAWITEM\rcItem,bgbrush)
SetBkColor_(*DRAWITEM\hDC, bgcolor)
SetTextColor_(*DRAWITEM\hDC, fgcolor)
Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts
Verfasst: 24.08.2018 19:22
von techniker
Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts
Verfasst: 24.08.2018 19:26
von ccode_new
Leider wird man Plattformunabhängig nicht um ein GUI-Framework, oder das selber zeichnen einer Combobox (über Canvas), kommen.
Windows-API Lösungen sind zwar unter Windows gut, aber decken eben auch nur Windows ab.
Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts
Verfasst: 24.08.2018 19:28
von techniker
Das ist richtig - in meinem Fall wird die Software aber definitiv nur unter Windows verwendet..

Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts
Verfasst: 24.08.2018 19:51
von techniker
Noch eine Frage:
Ich überzeichne das CBG mittels DRAWITEMSTRUCT. Den Zeiger hierfür bekomme ich
aus dem lParam - also rein ereignisgetriggert über den Callback. Wie kann ich jedoch
programmatisch die Farben über einen Befehl zu beliebiger Zeit ändern?

Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts
Verfasst: 24.08.2018 19:53
von RSBasic
Über eine globale Variable.
Oder per SendMessage_() über eine eigene Konstante.
Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts
Verfasst: 24.08.2018 19:55
von techniker
Ist das die einzige Möglichkeit?
Ich habe eine gewisse Abneigung gegen globale Variablen..
SendMessage hört sich gut an.
Eigene Konstante? Und diese dann im Callback Abfangen?
Ab welchem Wert fangen Custom-Konstanten an?
Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts
Verfasst: 24.08.2018 20:02
von ccode_new
Hier einmal ein Link (aus diesem Super-Forum) zum studieren.
http://forums.purebasic.com/german/view ... 36e3419d23
Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts
Verfasst: 24.08.2018 20:08
von RSBasic
Nur als Beispielvorlage:
Code: Alles auswählen
#WM_DeineKonstante = 123456
Procedure WndProc(hwnd, uMsg, wParam, lParam)
Result = #PB_ProcessPureBasicEvents
Select uMsg
Case #WM_DeineKonstante
Debug wParam
Debug lParam
EndSelect
ProcedureReturn Result
EndProcedure
;-Main
OpenWindow(0,0,0,640,480, "Mein ComboBox-Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget )
SetWindowCallback(@WndProc())
ComboBoxGadget(1,10,10,180, 40,#CBS_OWNERDRAWFIXED)
AddGadgetItem(1,-1, "")
AddGadgetItem(1,-1, "")
AddGadgetItem(1,-1, "")
SendMessage_(WindowID(0), #WM_DeineKonstante, RGB(255, 0, 0), RGB(0, 0, 255))
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Welcher Konstantenwert noch frei ist, kannst du mit dem Programm
Konstantia ermitteln.
Als Beispiel habe ich den Wert 123456 genommen.
Das Beispiel soll dir nur zeigen, wie du mit SendMessage_() einen oder zwei Werte an ein Callback senden kannst.
Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts
Verfasst: 24.08.2018 20:13
von techniker
Genau so hab ich mir das vorgestellt..
Aber ab welchem Wert dürfen Custom-Konstanten angelegt werden, ohne dass es mit einem anderen Ereignis kollidiert..
PS: Mit dieser Lösung fehlt mir jedoch immer noch der Wert von lParam, falls dieser noch nicht aufgetreten ist..
