Deutsch
Forum

Rechtsklick Listview ?

 
- Seite 1 -



Jac
de
Lad
Danke Rolf, jetzt ist alles klar (oder alles futsch...mal sehen).

@iF: Du musst mir helfen: Ich kriege kein funktionsfähiges Beispiel hin, wo ein Rechtsklick in einer Gridbox abgefangen wird. Aber lass dir Zeit, ich geh gleich ins Bett und bin morgen auf ner Beerdigung und Samstag bei meiner Freundin, also wahrscheinlich erst Sonntag abend wieder drin.

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
14.09.2006  
 



 
- Seite 1 -



Jac
de
Lad
Danke!
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
14.09.2006  
 



Hm kein Problem klappt doch wunderbar:
KompilierenMarkierenSeparieren
 {$cleq}
 $U on.pcu = on.
Def GetSysColor(1) !User32,GetSysColor
declare lb&,dlg&
//unsichtbares Hauptfenster damit lecker messages angekommen
windowstyle 80 | 1024
window 0,0 - 0,0
showwindow(%hwnd,0)
//
windowstyle 512+8
dlg&:=createdialog(0,MyDlg,100,100,640,480)
lb& = create(GridBox,dlg&,0;0;340;0;2;100,0,0,0,300,300)
on.event close	,dlg&	,12344
on.event ldklick	,lb&	,12345
on.event rklick	,lb&	,12346

while 1

    waitinput
    case %umessage==12344 : break
    case %umessage==12345 : settext dlg&,dblklick +str$(&gettickcount)
    case %umessage==12346 : .trackmenu

wend

on.delevent close	,dlg&	,12344
on.delevent ldklick	,lb&	,12345
on.delevent rklick	,lb&	,12346
on.close
end

proc .trackmenu

    declare mx&,my&
    my&:=hiword(&ulparam)
    mx&:=loword(&ulparam)
    createmenu
    appendmenu 100,ll
    Trackmenu_byxy_bydialog mx&,my&,dlg&

endproc

Proc Trackmenu_byxy

    Parameters X&,Y&
    Declare Gmp#,Dx&,Dy&
    Dim Gmp#,8
    External(user32,ClientToScreen,%Hwnd,Gmp#)
    Dx&=Long(Gmp#,0)
    Dy&=Long(Gmp#,4)
    Trackmenu (X&-Dx&),(Y&-Dy&)
    Dispose Gmp#

Endproc

Proc Trackmenu_byxy_bydialog

    Parameters X&,Y&,H&
    Declare Gmp#,Dx&,Dy&
    Dim Gmp#,8
    External(user32,ClientToScreen,H&,Gmp#)
    Dx&=Long(Gmp#,0)
    Dy&=Long(Gmp#,4)
    Trackmenu_byxy X&+Dx&,Y&+Dy&
    Dispose Gmp#

Endproc

 
14.09.2006  
 



Und dann hatte Roland im Phorum ebend noch etwas anderes geschrieben - ich darf mal zitieren:

So wird es ab RC5 - kommt heute Abend - funktionieren:
KompilierenMarkierenSeparieren Man beachte die neue Systemvariable %ChildMessage! Außerdem werden %MouseX und %MouseY jetzt auch bei Rechtsklick auf ein Dialogeleent korrekt gesetzt. Statt %ChildMessage könnte man nun auch %MousePressed = 2 abfragen.

GrußRoland
 
14.09.2006  
 




Jac
de
Lad
Öhhm, ich schau mal was bei mir falsch läuft.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
14.09.2006  
 




Jörg
Sellmeyer
Hast Du vielleicht wieder die LV auf ein anderes Control gesetzt?
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
14.09.2006  
 



[quote:2f0666031a=Jörg Sellmeyer]Hast Du vielleicht wieder die LV auf ein anderes Control gesetzt?[/quote:2f0666031a]
Hm das müsste eigendlich egal sein!
 
15.09.2006  
 



Es ist egal:
KompilierenMarkierenSeparieren
 {$cleq}
 $U on.pcu = on.
Def GetSysColor(1) !User32,GetSysColor
declare lb&,dlg&,st&
window 0,0 - 640,480
dlg&:=%hwnd
st&:=create(Text,dlg&,,50,50,300,300)
lb& = create(GridBox,st&,0;0;340;0;2;100,0,0,0,300,300)
on.event close	,dlg&	,12344
on.event ldklick	,lb&	,12345
on.event rklick	,lb&	,12346

while 1

    waitinput
    case %umessage==12344 : break
    case %umessage==12345 : settext dlg&,dblklick +str$(&gettickcount)
    case %umessage==12346 : .trackmenu

wend

on.delevent close	,dlg&	,12344
on.delevent ldklick	,lb&	,12345
on.delevent rklick	,lb&	,12346
on.close
end

proc .trackmenu

    declare mx&,my&
    my&:=hiword(&ulparam)
    mx&:=loword(&ulparam)
    createmenu
    appendmenu 100,ll
    Trackmenu_bymousepos

endproc

Proc Trackmenu_bymousepos

    Declare Gmp#,Dx&,Dy&
    Dim Gmp#,8
    External(user32,ClientToScreen,%Hwnd,Gmp#)
    Dx&=Long(Gmp#,0)
    Dy&=Long(Gmp#,4)
    External(user32,GetCursorPos,Gmp#)
    Trackmenu (Long(Gmp#,0)-Dx&),(Long(Gmp#,4)-Dy&)
    Dispose Gmp#

Endproc

 
15.09.2006  
 




Jac
de
Lad
Das Listview liegt auf dem %HWnd. Ich schaus mir heute abend mal an!
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
15.09.2006  
 




Jac
de
Lad
Also dein Beispiel klappt, aber bei mir im Digicam-Assistenten klappts komischerweise nicht. Ich brauch sicher noch Weile bis ich herausgefunden habe, warum...

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
15.09.2006  
 



Hm ok ich bin gespannt zu wissen woran es lag!
 
15.09.2006  
 



 
- Seite 2 -


Stop mit neuer Unit geht das jetzt anders! Ich schreibs gleich mal auf!
 
18.09.2006  
 



Hier nochmal Rechtsklick auf Listview am PCU-V0.0.3:
KompilierenMarkierenSeparieren
 {$Cleq}
 $U On.pcu = On.
Def Getsyscolor(1) !User32,GetSysColor
Declare Lb&,Dlg&
//unsichtbares Hauptfenster damit lecker messages angekommen
Windowstyle 80 | 1024
Window 0,0 - 0,0
Showwindow(%Hwnd,0)
//
Windowstyle 512+8
Dlg&:=Createdialog(0,MyDlg,100,100,640,480)
Lb& = Create(GridBox,Dlg&,0;0;340;0;2;100,0,0,0,300,300)
declare onclose&,onldklick&,onrkklick&
onclose&:=On.event(close ,Dlg&)
onldklick&:=On.event(ldklick ,Lb&)
onrkklick&:=On.event(rklick ,Lb&)

While 1

    Waitinput
    Case %Umessage==onclose& : Break
    Case %Umessage==onldklick& : Settext Dlg&,dblklick +Str$(&Gettickcount)
    Case %Umessage==onrkklick& : .Trackmenu

Wend

On.close
End

Proc .Trackmenu

    Declare Mx&,My&
    My&:=Hiword(&Ulparam)
    Mx&:=Loword(&Ulparam)
    Createmenu
    Appendmenu 100,ll
    Trackmenu_byxy_bydialog Mx&,My&,Dlg&

Endproc

Proc Trackmenu_byxy

    Parameters X&,Y&
    Declare Gmp#,Dx&,Dy&
    Dim Gmp#,8
    External(user32,ClientToScreen,%Hwnd,Gmp#)
    Dx&=Long(Gmp#,0)
    Dy&=Long(Gmp#,4)
    Trackmenu (X&-Dx&),(Y&-Dy&)
    Dispose Gmp#

Endproc

Proc Trackmenu_byxy_bydialog

    Parameters X&,Y&,H&
    Declare Gmp#,Dx&,Dy&
    Dim Gmp#,8
    External(user32,ClientToScreen,H&,Gmp#)
    Dx&=Long(Gmp#,0)
    Dy&=Long(Gmp#,4)
    Trackmenu_byxy X&+Dx&,Y&+Dy&
    Dispose Gmp#

Endproc

 
18.09.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.159 Betrachtungen

Unbenanntvor 0 min.
Gast.081512.10.2024
Michael W.04.07.2016
rquindt23.11.2015
GDL03.04.2014
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

iF (8x)
Jac de Lad (5x)
Jörg Sellmeyer (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


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