Kliknutie myšou – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kliknutie myšou – .NET – Fórum – Programujte.comKliknutie myšou – .NET – Fórum – Programujte.com

 

mylan40
Super člen
26. 6. 2008   #1
-
0
-

Dá sa vo VB .NET nejako zistiť, či bolo stlačené súčasne ľavé aj pravé tlačítko myši?
Pri udalosti MouseUp je v e.Button stlačené tlačítko, ale buď ľavé, pravé alebo stredné. Ja však potrebujem ľavé + pravé.

Nahlásit jako SPAM
IP: 85.248.56.–
Ace McIntosh0
Super člen
26. 6. 2008   #2
-
0
-

Tak zkus třeba při stlačení jednoho tlačítka nějak "křížově" zkontrolovat, jestli je stlačeno i to druhé tlačítko. Tj. třeba při stlačení levého tlačítka podmínkou zkontrolovat jestli je stlačeno i to pravé a naopak, následně se při splnění této podmínky odkážeš na požadovanou funkci. To by mohlo fungovat.

Nahlásit jako SPAM
IP: 84.42.174.–
mylan40
Super člen
26. 6. 2008   #3
-
0
-

To Ace McIntosh : Ak zistím, že je stlačené jedno, t.j. v e.Button je napr. ľavé, ako mám zistiť "krížovo", že je stlačené aj pravé???

Nahlásit jako SPAM
IP: 85.248.56.–
26. 6. 2008   #4
-
0
-

To mylan4 : Jaká je pravděpodobnost, že zmáčkneš obě tlačítka najednou? Jedno bude vždy rychlejší (byť o pár setinek). Nějak v tom nevydím smysl.

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
Ace McIntosh0
Super člen
26. 6. 2008   #5
-
0
-

Tak já fakt nevim jak je to ve VB, ale snad by tam měl být nějaký identifikátor toho tlačítka, kterým pak můžeš testovat, zdali je tlačítko stisknuto nebo ne. Třeba v Delphi (sorry, ale ve VB neumim, ale tam to bude podobné) máš identifikátory tlačítek jako ssLeft, ssMiddle a ssRight v množinovém parametru Shift a testovat tam můžeš stisk tlačítek myši, tak asi takhle jsem to myslel (snad to pochopíš, pokud ne, kdyžtak se budu muset naučit ve VB:-)):

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);
begin
if ssLeft in Shift then
begin
if ssRight in Shift then
ShowMessage('Stlačili jste obě tlačítka myši');
end
else
if ssRight in Shift then
begin
if ssLeft in Shift then
ShowMessage('Stlačili jste obě tlačítka myši');
end

end;

Nahlásit jako SPAM
IP: 84.42.174.–
Ace McIntosh0
Super člen
26. 6. 2008   #6
-
0
-

To djanosik : jj, tak to jsem si taky myslel že obě tlačítka najednou stisknout asi nepůjdou, ale i kdyby, i na to má Delphi proporce (jenom abych doplnil a poukázal na to, že pravděpodobně i ve VB něco takového bude existovat) - identifikátor ssDouble (tj ssLeft a ssRight najednou), pro tento případ se to ale opravdu nehodí.

Nahlásit jako SPAM
IP: 84.42.174.–
26. 6. 2008   #7
-
0
-

To Ace McIntosh : Ale pozor, zde nejde o VB, ale o VB.NET, což je podstatnej rozdíl.

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
Ace McIntosh0
Super člen
26. 6. 2008   #8
-
0
-

To djanosik : No tak já nevím, univerzální postup by měl být možný za použití pomocných proměnných, zkusil jsem to napsat přímo do VB, ale nevím jestli to je správně (jak syntakticky, tak algoritmicky - neměl jsem jak otestovat a vymýšlel jsem to narychlo):

Private Levetlacitko As Boolean

Private Pravetlacitko As Boolean

//počáteční hodnotu proměnných Levetlacitko a Pravetlacitko nastavíme na false

Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
If e.Button = MouseButtons.Left Then
Levetlacitko = True
If Pravetlacitko = True Then
MsgBox("Byla stisknuta obě tlačítka myši.");
End If
Else If e.Button = MouseButtons.Right Then
Pravetlacitko = True
If Levetlacitko = True Then
MsgBox("Byla stisknuta obě tlačítka myši.");
End If
End If
End Sub

Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
Levetlacitko = False
Pravetlaciko = False
End Sub

Nahlásit jako SPAM
IP: 84.42.174.–
mylan40
Super člen
26. 6. 2008   #9
-
0
-

To djanosik : No.. je pravda, že to nebude celkom naraz. A zmysel to má, napr. v hre Minesweeper, ak stlačíš obe tlačítka, tak sa odkryjú okolité políčka. A ja programujem tiež akési Míny, ale budú tam aj životy (možno to je blbosť, ale jeden môj kamarát ma požiadal, aby som niečo také naprogramoval).

To Ace McIntosh: Tak nejako som videl krajné riešenie, ale myslel som si, že to takto urobiť nemôžem, pretože sa síce vykoná akcie pre stlačenie oboch tlačítok, ale ešte pred tým sa vykoná akcia pre stlačenie jedného tlačítka... Napr. stlačím ľavé tlačítko, vykoná sa akcia pre ľavé, hneď stlačím aj pravé a vykoná sa akcia určená pre ten "dvojklik".
Ale teraz mi došlo, že vlastne v danom prípade bude akcia definovaná len pre ten "dvojklik", takže to takto pôjde... :smile5: Díky! :smile2:

Nahlásit jako SPAM
IP: 85.248.56.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 12 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý