Italia
Foro

ReBar Fragen/Probleme

 

Georg
Hovenbitzer
Hallo zusammen,

das Wetter wird draußen schlechter und schon sitzt man mehr am Rechner und versucht mal wieder was zu Programmieren.
Aber wie es so ist tauchen direkt die Probleme und Fragen auf und ich hoffe ihr può mir helfen.

Der Anhängende Code erstellt ein Rebar mit einer Liste auf der linken Seite und einem weiteren ReBar auf der rechten.
Im zweiten è sich oben eine List und unten ein Static Feld worauf zwei Listen gesetzt sind.

Folgende Fragen habe ich nun:
Wie ermittle ich, wenn rechts unten in einem der beiden Listen ein Eintrag ausgewählt wird wenn diese Fenster auf dem Static erzeugt wurden?
Wenn ich diese beiden Fenster auf dem ReBar2 erstelle komme ich zwar an den ausgewählten Eintrag, aber mit dem Neuzeichnen des Fenster klappt es nicht mehr, wie bekomme ich wenn dieses hin?
Bei dem ersten ReBar mit der senkrechten Trennung wird der Mauszeiger zu einem Pfeil mit zwei Spitzen wenn man circa ihm steht, bei der wagenrechten Trennung geschieht dies nicht, kann man dies ändern?
Gibt es eine andere, vielleicht bessere Lösung so eine Unterteilung darzustellen?

Viele Grüße
Georg
 $H windows.ph
 $H messages.ph
 $H commctrl.ph
Cls
WindowTitle "RedBar"
Window 0,0-1024,768
Struct ReBar = 	Size&,				\
Mask&,		\
Style&,		\
clrFore&,	\
clrBack&,	\
lpText&,		\
cch&,		\
iImage&,		\
hwndChild&,	\
cxMinChild&,	\
cyMinChild&,	\
cx&,			\
hbmBack&,	\
wID&,		\
cyChild&,	\
cyMaxChild&,	\
cyIntegral&,	\
cxIdeal&,		\
lParam&,	\
cxHeader&
Declare ReBar#
Dim ReBar#,ReBar
Clear ReBar#
Var ReBar1& = @Control("ReBarWindow32","",(~WS_CHILD | ~WS_VISIBLE | ~CCS_NORESIZE | ~WS_BORDER | ~WS_CLIPCHILDREN | ~WS_CLIPSIBLINGS | ~RBS_VARHEIGHT | ~RBS_AUTOSIZE),2,2,800,700,%hWnd,200,%hInstance,0)
Var lb1&    = @Create("ListBox",ReBar1&,0,0,0,0,0)
Var ReBar2& = @Control("ReBarWindow32","",(~WS_CHILD | ~WS_VISIBLE | ~CCS_NORESIZE | ~CCS_VERT | ~WS_BORDER | ~WS_CLIPCHILDREN | ~WS_CLIPSIBLINGS | ~RBS_VARHEIGHT | ~RBS_AUTOSIZE),0,0,400,350,%hwnd,200,%hInstance,0)
Var lb2& = Create("ListBox",ReBar2&,0,0,0,0,0)
'Fenster liegen auf dem Static Feld
'Var lb3& = Create("Text",ReBar2&,"",0,0,0,0)
'Var lb4& = Create("ListBox",lb3&,0,10,10,100,50)
'Var lb5& = Create("ListBox",lb3&,0,50,150,70,100)
'Fenster liegen auf dem ReBar&
Var lb3& = Create("Text",ReBar2&,"",0,0,0,0)
Var lb4& = Create("ListBox",ReBar2&,0,10,520,100,50)
Var lb5& = Create("ListBox",ReBar2&,0,150,550,70,100)

With ReBar#

    .Size& =		@SizeOf(ReBar#)
    .Mask& =	(~RBBIM_CHILD | ~RBBIM_CHILDSIZE | ~RBBIM_SIZE | ~RBBIM_STYLE | ~RBBIM_IDEALSIZE | ~RBBIM_ID | ~RBBIM_TEXT)
    .Style& =		~RBBS_NOGRIPPER
    .clrFore& =	0
    .clrBack& =	0
    .lpText& =	0
    .cch& =		0
    .iImage& =	0
    .hwndChild& =	lb2&
    .cxMinChild& =	100
    .cyMinChild& =	700
    .cx& =			500
    .hbmBack& =		0
    .wID& =			0
    .cyChild& =		0
    .cyMaxChild& =	800
    .cyIntegral& =	        0
    .cxIdeal& =		0
    .lParam& =		0
    .cxHeader&	=	0
    @SendMessage(ReBar2&,~RB_INSERTBAND,0,ReBar#)
    .Style& =			~RBBS_GRIPPERALWAYS
    .clrFore& =		0
    .clrBack& =		0
    .lpText& =		0
    .cch& =			0
    .iImage& =		0
    .hwndChild& =	lb3&
    .cxMinChild& =	 100
    .cyMinChild& =	700
    .cx& =			200
    .hbmBack& =		0
    .wID& =			0
    .cyChild& =		@Width(ReBar2&)
    .cyMaxChild& =	800
    .cyIntegral& =	0
    .cxIdeal& =		0
    .lParam& =		0
    .cxHeader&	=	0
    @SendMessage(ReBar2&,~RB_INSERTBAND,1,ReBar#)

EndWith

Clear ReBar#

With ReBar#

    .Size& =		@SizeOf(ReBar#)
    .Mask& =	(~RBBIM_CHILD | ~RBBIM_CHILDSIZE | ~RBBIM_SIZE | ~RBBIM_STYLE | ~RBBIM_IDEALSIZE | ~RBBIM_ID | ~RBBIM_TEXT)
    .Style& =		~RBBS_NOGRIPPER
    .clrFore& =		0
    .clrBack& =		0
    .lpText& =		0
    .cch& =			0
    .iImage& =		0
    .hwndChild& =	lb1&
    .cxMinChild& =	80
    .cyMinChild& =	0
    .cx& =			800
    .hbmBack& =		0
    .wID& =			0
    .cyChild& =		@Height(ReBar1&)
    .cyMaxChild& =	@Height(ReBar1&)
    .cyIntegral& =	0
    .cxIdeal& =		0
    .lParam& =		0
    .cxHeader&	=	0
    @SendMessage(ReBar1&,~RB_INSERTBAND,0,ReBar#)
    .Style& =			~RBBS_GRIPPERALWAYS
    .clrFore& =		0
    .clrBack& =		0
    .lpText& =		0
    .cch& =			0
    .iImage& =		0
    .hwndChild& =	ReBar2&
    .cxMinChild& =	100
    .cyMinChild& =	@Height(ReBar1&) - 6
    .cx& =			800
    .hbmBack& =		0
    .wID& =			0
    .cyChild& =		@Height(ReBar1&)
    .cyMaxChild& =	@Height(ReBar1&)
    .cyIntegral& =	0
    .cxIdeal& =		0
    .lParam& =		0
    .cxHeader&	=	0
    @SendMessage(ReBar1&,~RB_INSERTBAND,1,ReBar#)

EndWith

ClearList
AddFonts
MoveListToHandle(lb1&)
MoveListToHandle(lb2&)
MoveListToHandle(lb4&)
MoveListToHandle(lb5&)

whilenot IsKey(27)

    waitinput

    If @Clicked(lb1&)

        Locate 2,105
        Print @GetString$(lb1&,@GetCurSel(lb1&))

    ElseIf @Clicked(lb2&)

        Locate 4,105
        Print @GetString$(lb2&,@GetCurSel(lb2&))

    ElseIf @Clicked(lb4&)

        Locate 6,105
        Print @GetString$(lb4&,@GetCurSel(lb4&))

    ElseIf @Clicked(lb5&)

        Locate 8,105
        Print @GetString$(lb5&,@GetCurSel(lb5&))

    EndIf

EndWhile

@DestroyWindow(ReBar1&)
@DestroyWindow(ReBar2&)
Dispose ReBar#
End
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
05.12.2011  
 




Uwe
''Pascal''
Niemeier
Hi Georg!


Wie ermittle ich, wenn rechts unten in einem der beiden Listen ein Eintrag ausgewählt wird wenn diese Fenster auf dem Static erzeugt wurden?


Ich verwende in so einem Fall (mehrere Elemente in einem Band) einen rahmenlosen Dialog, den ich dem Band zuteile:
var dlg&=control("Dialog","dlg",$50000000,0,0,100,100,%hwnd,1,0)
Außerdem können/sollten alle Elemente, die dem Rebar direkt  unterstellt sind, als Parent das Hauptfenster haben.


Wenn ich diese beiden Fenster auf dem ReBar2 erstelle komme ich zwar an den ausgewählten Eintrag, aber mit dem Neuzeichnen des Fenster klappt es nicht mehr, wie bekomme ich wenn dieses hin?


Bei ReBars unter Profan gibt es erhebliche Probleme mit dem Neuzeichnen, auch nach Messageboxen, Menüs u.Ä. (Wahrscheinlich, weil das ReBar die Reihenfolge der Elemente, durcheinanderbringt und die dann nicht mehr mit der Profan-internen übereinstimmt). Mir hilft da bei Bedarf ein ~RedrawWindow(%hwnd,0,0,$485)

Bei dem ersten ReBar mit der senkrechten Trennung wird der Mauszeiger zu einem Pfeil mit zwei Spitzen wenn man circa ihm steht, bei der wagenrechten Trennung geschieht dies nicht, kann man dies ändern?


Habe das mal per SubClassing gelöst, allerdings manuell (circa ProcAddr/SetWindowLong), weil's in Profan noch keine SubClassProc gab. Dabei wurde eine Notify-Message des ReBars abgefangen und der Mauszeiger gezielt gesetzt. Müßte ich bei Bedarf mal raussuchen und nacharbeiten.

HTH
Pascal
 
09.12.2011  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

3.136 Views

Untitledvor 0 min.
Jörg Sellmeyer16.06.2020
ByteAttack25.11.2015
Andreas Koch14.09.2015
Peter Max Müller22.09.2014
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie