Español
Foro

Mauszeiger en el Listview Controlparas

 
- Página 1 -



Andreas
Koch
¡Hola zusammen,

Yo stehe ya otra vez una vez antes una Problema. Lo va por lo tanto, adecuado a bekommen, encima welchem Listviewitem (Spalte, Línea) se el Mauszeiger gerade befindet. Mein Gedanke es, en el Anschluss a una simulierten Mausklick Getcontrolparas abzufragen y el Ganze en un Bucle einzubauen. Sombrero alguien una Concepto, cómo hacerlo hacer podría oder ha lo incluso gemacht? Yo habe intenta con mouse_event a trabajo, aber el funktioniert no.

Schönen Saludo

Andreas Koch
 
22.05.2013  
 



« Dieser Contribución wurde como Solución gekennzeichnet. »


Thomas
Freier
Das hatten wir doch, Yo glaube beim Stundenplan.
Hier una min. Ejemplo para Tooltip:
 $H Windows.ph
 $H commctrl.ph
Struct LVHitTestInfo = X&,Y&,flags&,Item&,SubItem&
Declarar LVHTI#,LView&,l%
Dim LVHTI#,LVHitTestInfo

Proc LV_HitTest

    Parámetros  LV&,X%,Y%
    ~GetCursorPos(LVHTI#)
    ~ScreenToClient(LV&,LVHTI#)
    SendMessage(LV&,~LVM_SUBITEMHITTEST,0,LVHTI#)
    Volver LVHTI#.SubItem&

ENDPROC

Cls
LView& = Crear("GridBox",%hwnd,"Test 0;0;100;Test 1;0;100;Test 2;0;100;Bemerkung;0;100",0,20,10,410,200)

WhileLoop 0,4

    AddStrings(LView&,"0 Test " + Str$(&Loop) + "|1 Test " + Str$(&Loop) + "|2 Test " + Str$(&Loop) + "|")

Wend

var texto$="Was es porque überhaupt una Listview? \nOb ellos's glauben oder no. "+  \
"Sobald ellos ihren Windows-PC anschalten, erscheint ya el erste Listview."+ \
"Wo, fragen ellos? Auf ihrem Bildschirm.\nDer Windows Bildschirm es nämlich nichts más como una Listview.\n"+ \
"(FRABBING)"
SetText LView&, 1, 3, texto$
sendmessage(Lview&,~LVM_SETEXTENDEDLISTVIEWSTYLE,0,~LVM_SUBITEMHITTEST)'markiert el Línea bajo ratón
'sendmessage(LView&,0,~LVM_SETHOVERTIME,10) 'löst praktisch una Mausklick de ????
var ToolTip&=create("Tooltip",%hwnd,LView&,"")
var medit%=Crear("MultiEdit",%hwnd,"",0,0,300,-400)
ShowWindow(medit%,0)

Mientras que 1

    WaitInput 100
    l% =  LV_HitTest(LView&,%mousex,%mousey)
    '

    SELECT LVHTI#.Item&

        CASEOF 1'ZEILE

        If LVHTI#.SubItem&=3'ITEM

            SetText medit%,GetText $(LView&,LVHTI#.Item&,LVHTI#.SubItem&)
            texto$=""

            Whileloop GetLineCount(medit%)'Anzahl Zeilen

                texto$=texto$+GetLine$(medit%,&bucle-1)+"\n"'einzelne Zeilen auslesen y Zeilenumbruch

            Wend

            settext ToolTip&,%hwnd,LView&,texto$

        EndIf

        CASEOF 3'ZEILE

        settext ToolTip&,%hwnd,LView&,"erste Wahl"
        OTHERWISE
        settext ToolTip&,%hwnd,LView&,""

    ENDSELECT

Wend

end

Müßte sicher en SubClassProc umgestellt voluntad.
 
Gruß Thomas
Windows XP SP2, XProfan X2
22.05.2013  
 



Wissen tue Yo no, aber el Breiten el Spalten puede ser imho con
LVM_GETCOLUMNWIDTH ermitteln, por minus Mausposition-X dürfte uno así el
Spalte herausbekommen.

Lo son aber auch LVM_GETITEMINDEXRECT (  [...]  ) qué tal vez todavía hilfreicher es.
LVM_FIRST = $1000
LVM_GETCOLUMNWIDTH = ~LVM_FIRST + 29
LVM_SETCOLUMNWIDTH = ~LVM_FIRST + 30

Proc GetColWidth

    Parámetros hGBox&, ColNr%
    Declarar ColWidth%
    ColWidth% = SendMessage( hGBox&, ~LVM_GetColumnWidth, ColNr%, 0)
    Volver ColWidth%

ENDPROC


Mausklick vlt. simplemente así:
Def mouse_event(5) !"USER32","mouse_event"
mouse_event(2,0,0,0,0)'linke maustaste runter
mouse_event(4,0,0,0,0)'linke maustaste otra vez hoch
 
22.05.2013  
 




Thomas
Freier
Das hatten wir doch, Yo glaube beim Stundenplan.
Hier una min. Ejemplo para Tooltip:
 $H Windows.ph
 $H commctrl.ph
Struct LVHitTestInfo = X&,Y&,flags&,Item&,SubItem&
Declarar LVHTI#,LView&,l%
Dim LVHTI#,LVHitTestInfo

Proc LV_HitTest

    Parámetros  LV&,X%,Y%
    ~GetCursorPos(LVHTI#)
    ~ScreenToClient(LV&,LVHTI#)
    SendMessage(LV&,~LVM_SUBITEMHITTEST,0,LVHTI#)
    Volver LVHTI#.SubItem&

ENDPROC

Cls
LView& = Crear("GridBox",%hwnd,"Test 0;0;100;Test 1;0;100;Test 2;0;100;Bemerkung;0;100",0,20,10,410,200)

WhileLoop 0,4

    AddStrings(LView&,"0 Test " + Str$(&Loop) + "|1 Test " + Str$(&Loop) + "|2 Test " + Str$(&Loop) + "|")

Wend

var texto$="Was es porque überhaupt una Listview? \nOb ellos's glauben oder no. "+  \
"Sobald ellos ihren Windows-PC anschalten, erscheint ya el erste Listview."+ \
"Wo, fragen ellos? Auf ihrem Bildschirm.\nDer Windows Bildschirm es nämlich nichts más como una Listview.\n"+ \
"(FRABBING)"
SetText LView&, 1, 3, texto$
sendmessage(Lview&,~LVM_SETEXTENDEDLISTVIEWSTYLE,0,~LVM_SUBITEMHITTEST)'markiert el Línea bajo ratón
'sendmessage(LView&,0,~LVM_SETHOVERTIME,10) 'löst praktisch una Mausklick de ????
var ToolTip&=create("Tooltip",%hwnd,LView&,"")
var medit%=Crear("MultiEdit",%hwnd,"",0,0,300,-400)
ShowWindow(medit%,0)

Mientras que 1

    WaitInput 100
    l% =  LV_HitTest(LView&,%mousex,%mousey)
    '

    SELECT LVHTI#.Item&

        CASEOF 1'ZEILE

        If LVHTI#.SubItem&=3'ITEM

            SetText medit%,GetText $(LView&,LVHTI#.Item&,LVHTI#.SubItem&)
            texto$=""

            Whileloop GetLineCount(medit%)'Anzahl Zeilen

                texto$=texto$+GetLine$(medit%,&bucle-1)+"\n"'einzelne Zeilen auslesen y Zeilenumbruch

            Wend

            settext ToolTip&,%hwnd,LView&,texto$

        EndIf

        CASEOF 3'ZEILE

        settext ToolTip&,%hwnd,LView&,"erste Wahl"
        OTHERWISE
        settext ToolTip&,%hwnd,LView&,""

    ENDSELECT

Wend

end

Müßte sicher en SubClassProc umgestellt voluntad.
 
Gruß Thomas
Windows XP SP2, XProfan X2
22.05.2013  
 




Andreas
Koch
¡Hola ihr beiden,

bastante herzlichen Dank para eure Respuesta. Yo wurschtel ya el ganzen Tag rum, aber ahora klappts.
Kurzes Feedback: Um Getcontrolparas nutzen a puede, muss al Drücken y el Liberación simulieren , war desafortunadamente para media ursprünglichen Zweck no bastante geeignet, funktioniert aber doch con mouse_event.
Dieser Tooltip fürs Listview war schlicht genial, genau el Yo gesucht habe. Gracias.

PS: Tuve hier veces gefragt, si uno el Listviewposition (Spalte, Línea) des Editcontrols con el Handle Getvar(0) ermitteln kann. Das funktioniert auch con el Método: uno determinado con Getwindowrect Position y Abmessung des Edits y verwendet anschließend el Hittest con el Mittelwerten de getwindowrect. Si el Ganze en uno Bucle con el Abbruchbedingung Mientras que Getvar(0) gemacht se, bekommt uno ständig el aktuelle Position.
 
22.05.2013  
 



 
22.05.2013  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

9.254 Views

Untitledvor 0 min.
Member 154727723.09.2018
Erfurt28.12.2016
Michael W.07.07.2016
Georg Teles29.06.2016
Más...

Themeninformationen

Dieses Thema ha 3 subscriber:

Andreas Koch (2x)
iF (2x)
Thomas Freier (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie