XbpComboBox linksbündige Anzeige

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

XbpComboBox linksbündige Anzeige

Beitrag von Werner_Bayern »

Code: Alles auswählen

   oXbp := XbpComboBox():new( oXbp2, , {nX, nY}, {110, nY2})
   oXbp:tabstop := .T.
   oXbp:type := XBPCOMBO_DROPDOWN
   oXbp:align := XBPSLE_LEFT
   oXbp:create()
   oXbp:keyBoard := {|nTaste, uNIL, oSelf| ComboTasten(oSelf, nTaste)}
   aeval(saSparten, {|x| oXbp:addItem(x)})
   oXbp:XbpSLE:dataLink := {|x| IF( x == NIL, if((nPos := (ascan(saSparten, gn(2, adresse->sparte)))) > 0, saSparten[nPos],;
   str(adresse->sparte)), adresse->sparte := val(left(x, 2)) )}
   oXbp:XbpSLE:setData()
Wird mir so angezeigt:
Combobox.PNG
Combobox.PNG (1.77 KiB) 3075 mal betrachtet
Warum nicht linksbündig? Warum markiert?
Klar, align gilt nur fürs Editieren, aber was ist mit der Anzeige vor dem Editieren?
Markiert sind sie nur deshalb, weil der Platz nicht ausreicht. Wie kann man das aber abstellen und linksbündig darstellen?

Danke!
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpComboBox linksbündige Anzeige

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:Warum nicht linksbündig? Warum markiert?
Klar, align gilt nur fürs Editieren, aber was ist mit der Anzeige vor dem Editieren?
Markiert sind sie nur deshalb, weil der Platz nicht ausreicht.
ich habe es mal mit dem native Control ausprobiert und das selbe Verhalten.

Code: Alles auswählen

INLINE METHOD CB_SetSelect(nIndex)
/**************************

   An application sends a CB_SETCURSEL message to select a string in the list
   of a combo box. If necessary, the list scrolls the string into view.
   The text in the edit control of the combo box changes to reflect the
   new selection, and any previous selection in the list is removed.

wParam
   Specifies the zero-based index of the string to select.

   If this parameter is -1, any current selection in the list is removed and the edit control is cleared.

lParam
   This parameter is not used.

Return Value
   If the message is successful, the return value is the index of the item selected.
   If wParam is greater than the number of items in the list or if wParam is -1,
   the return value is CB_ERR and the selection is cleared.

**************************/

RETURN @User32:SendMessageA(::hCBox,CB_SETCURSEL,nIndex,0)
es scheint also "automatisch" bei Bewegung in der Listbox zu passieren.
am besten sieht man es wenn man die Listbox aufklappt (F4) wie es in das SLE übertragen wird.

theoretisch gibt es noch o:XbpListbox:ItemMarked wo man eine Aktion auf das o:XbpSLE machen könnte.

Code: Alles auswählen

bAction := {|mp1, mp2, obj| obj:XbpSLE:setMarked({1,1}) }
leider funktioniert es scheinbar nur mit o:XbpListbox:ItemSelected.
Werner_Bayern hat geschrieben:Wie kann man das aber abstellen und linksbündig darstellen?
Ownerdraw ;)
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: XbpComboBox linksbündige Anzeige

Beitrag von Werner_Bayern »

Servus Jimmy,

also ein Standardverhalten von Windows?

Dann lasse ich es so.

Danke.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpComboBox linksbündige Anzeige

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:also ein Standardverhalten von Windows?
JA ...
aber ich sprach ja auch vom o:XbpListbox:ItemMarked das unter Xbase++ nicht reagiert ( weil gleich o:XbpListbox:ItemSelected )

in meinem native Control kann ich den "o:ItemMarked" Slot so benutzen wie oben dargestellt.

evtl. kannst du dein Programm ein wenig verändern :

Code: Alles auswählen

statt :
   cBuffer:= oCombobox:XbpSLE:getData()      // Wert im Eingabefeld 

dann :
   aItems := oCombobox:XbpListBox:getData()  // Werte in der Listbox 
damit nun eine 2 teilige Anzeige : Abkürzung / Langer Text
Combobox_kurz_lang.JPG
Combobox_kurz_lang.JPG (6.86 KiB) 3028 mal betrachtet
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: XbpComboBox linksbündige Anzeige

Beitrag von Werner_Bayern »

Servus Jimmy,

danke. Die Änderung wäre kein Thema, aber was meinst Du mit Deinem NativeControl? Hast Du das veröffentlicht?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpComboBox linksbündige Anzeige

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:... aber was meinst Du mit Deinem NativeControl? Hast Du das veröffentlicht?
JaNein ... es ist in der DXE Lib aber nicht erwähnt ...

Ich bin mit dem Ergebnis noch nicht zufrieden und hatte mich mehr auf das Ownerdraw konzentriert was ich auf der Devcon 2012 vorgeführt habe.
das DXE_Combo verwende ich, wie der Snapshot zeigt, für Laufwerke / Directory wobei ich die vorhandenen DDL Konstanten für den Listbox Teil benutze.
gruss by OHR
Jimmy
Antworten