Comboboxgadget: Vertikale Ausrichtung des Inhalts

Für allgemeine Fragen zur Programmierung mit PureBasic.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts

Beitrag 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)
Zuletzt geändert von ccode_new am 24.08.2018 19:23, insgesamt 1-mal geändert.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
techniker
Beiträge: 160
Registriert: 27.01.2016 11:08
Wohnort: BY

Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts

Beitrag von techniker »

:oops:
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts

Beitrag 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.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
techniker
Beiträge: 160
Registriert: 27.01.2016 11:08
Wohnort: BY

Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts

Beitrag von techniker »

Das ist richtig - in meinem Fall wird die Software aber definitiv nur unter Windows verwendet.. ;)
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
Benutzeravatar
techniker
Beiträge: 160
Registriert: 27.01.2016 11:08
Wohnort: BY

Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts

Beitrag von techniker »

Noch eine Frage: :oops:

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? :?
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts

Beitrag von RSBasic »

Über eine globale Variable.
Oder per SendMessage_() über eine eigene Konstante.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
techniker
Beiträge: 160
Registriert: 27.01.2016 11:08
Wohnort: BY

Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts

Beitrag von techniker »

Ist das die einzige Möglichkeit?
Ich habe eine gewisse Abneigung gegen globale Variablen.. :angry: :wink:

SendMessage hört sich gut an. :)
Eigene Konstante? Und diese dann im Callback Abfangen?
Ab welchem Wert fangen Custom-Konstanten an?
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts

Beitrag von ccode_new »

Hier einmal ein Link (aus diesem Super-Forum) zum studieren.

http://forums.purebasic.com/german/view ... 36e3419d23
Zuletzt geändert von ccode_new am 24.08.2018 20:08, insgesamt 1-mal geändert.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
techniker
Beiträge: 160
Registriert: 27.01.2016 11:08
Wohnort: BY

Re: Comboboxgadget: Vertikale Ausrichtung des Inhalts

Beitrag von techniker »

Genau so hab ich mir das vorgestellt.. 8)
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.. :?
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
Antworten