Hallo,
in beiliegender ZIP findest du ein Beispiel Projekt, mit vermutlich dem gewünschten Ergebnis.
Ich habe einige #IF Abfragen drin, damit man leicht zwischen Standard und Spezial umstellen kann, die macht man natürlich raus.
Ansonsten, statt XbpListbox():new(...) einfach MyListBox():new(...) verwenden, bei gleichen Parametern. (bei mir _Main.prg )
Ich hätte die Größe der Xbp übrigens gleich gelassen und den Rahmen vergrößert, aber deine Vorgabe sah anders aus.
Aktuell habe ich das mit der 2.00.918 übersetzt, aber zumindest die MyListBox.PRG geht auch in 1.90 - da ist nichts besonderes drin.
Code: Alles auswählen
/// MyListbox.prg
#include "Gra.ch"
#include "Xbp.ch"
#include "Common.ch"
#include "Appevent.ch"
#include "Font.ch"
// nur für den Test, später alles unnötige entfernen
#define NUTZEORIGINALLISTBOX .f.
CLASS myListBox FROM XbpListBox
EXPORTED:
VAR oRahmen
METHOD init, create, destroy
ENDCLASS
*----------------------------------------------------------------------------
METHOD init(oParent, oOwner, aPos, aSize, aPresParam,lVisible)
LOCAL aPPRahmen
#if NUTZEORIGINALLISTBOX // Standard ohne Rahmen nutzen !
SUPER:init(oParent, oOwner, aPos, aSize, aPresParam,lVisible)
#else
aPPRahmen := NIL
::oRahmen := XbpStatic():new( oParent, oOwner, aPos, aSize, aPPRahmen, lVisible ) // wenn lVisible = .f. dann ist was bei Show nötig
::oRahmen:caption := "Artikel"
::oRahmen:clipSiblings := .T.
::oRahmen:type := XBPSTATIC_TYPE_GROUPBOX
// Vorgabe Listbox verkleinern, warum nicht ;-)
// ::XbpListbox:init( ::XbpStatic,, { 12, 12 }, { aSize[1] - 24, aSize[2] - 24 }, aPP, lVisible )
SUPER:init(::oRahmen, , { 12, 12 }, { aSize[1] - 24, aSize[2] - 24 }, aPresParam,lVisible)
#endif
RETURN self
*----------------------------------------------------------------------------
METHOD create(oParent, oOwner, aPos, aSize, aPresParam,lVisible)
#if NUTZEORIGINALLISTBOX // Standard ohne Rahmen nutzen !
#else
::oRahmen:create()
#endif
SUPER:create(oParent, oOwner, aPos, aSize, aPresParam,lVisible)
#if NUTZEORIGINALLISTBOX // Standard ohne Rahmen nutzen !
::addItem( "1. Vorgabe von myListBox - original" )
::addItem( "2. Vorgabe von myListBox - original" )
::addItem( "3. Vorgabe von myListBox - original" )
#else
::addItem( "1. Vorgabe von myListBox - mit Rahmen" )
::addItem( "2. Vorgabe von myListBox - mit Rahmen" )
::addItem( "3. Vorgabe von myListBox - mit Rahmen" )
#endif
RETURN self
*----------------------------------------------------------------------------
METHOD destroy()
SUPER:destroy()
::oRahmen:destroy()
RETURN self
gekürzt auf das Nötige:
Code: Alles auswählen
/// MyListbox.prg
#include "Gra.ch"
#include "Xbp.ch"
#include "Common.ch"
#include "Appevent.ch"
#include "Font.ch"
CLASS myListBox FROM XbpListBox
EXPORTED:
VAR oRahmen
METHOD init, create, destroy // aufräumen nicht vergessen
ENDCLASS
*----------------------------------------------------------------------------
METHOD init(oParent, oOwner, aPos, aSize, aPresParam,lVisible)
LOCAL aPPRahmen
aPPRahmen := NIL
::oRahmen := XbpStatic():new( oParent, oOwner, aPos, aSize, aPPRahmen, lVisible ) // wenn lVisible = .f. dann ist was bei Show nötig
::oRahmen:caption := "Artikel"
::oRahmen:clipSiblings := .T.
::oRahmen:type := XBPSTATIC_TYPE_GROUPBOX
// Vorgabe Listbox verkleinern, warum nicht ;-)
// ::XbpListbox:init( ::XbpStatic,, { 12, 12 }, { aSize[1] - 24, aSize[2] - 24 }, aPP, lVisible )
SUPER:init(::oRahmen, , { 12, 12 }, { aSize[1] - 24, aSize[2] - 24 }, aPresParam,lVisible)
RETURN self
*----------------------------------------------------------------------------
METHOD create(oParent, oOwner, aPos, aSize, aPresParam,lVisible)
// wir brauchen den zuerst, sonst kommt ein falscher Objektstatus beim compilieren
::oRahmen:create()
SUPER:create(oParent, oOwner, aPos, aSize, aPresParam,lVisible)
RETURN self
*----------------------------------------------------------------------------
METHOD destroy()
SUPER:destroy()
::oRahmen:destroy()
RETURN self