StringGadget DoubleClick

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

StringGadget DoubleClick

Beitrag von marcelx »

Hallo,

wie kann ich ein DoubleClick bei ein StringGadget erkennen.
Ich habe es mit EventType() = #WM_LBUTTONDBLCLK oder #PB_EventType_LeftDoubleClick probiert und es geht nicht

Danke für ein Tipps
MarcelX
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: StringGadget DoubleClick

Beitrag von RSBasic »

Beim StringGadget gibt es nur folgende EventType()-Ereignisse:
  • #PB_EventType_Change
  • #PB_EventType_Focus
  • #PB_EventType_LostFocus
Da gibt es kein #PB_EventType_LeftDoubleClick. Da musst du schon mit WinAPI machen oder selber messen.

Mit WinAPI:

Code: Alles auswählen

EnableExplicit

Global StringGadgetCB

Procedure StringGadgetCB(hWnd, uMsg, wParam, lParam)
  Select uMsg
    Case #WM_LBUTTONDBLCLK
      Debug "Doppelklick"
  EndSelect
  
  ProcedureReturn CallWindowProc_(StringGadgetCB, hWnd, uMsg, wParam, lParam)
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  StringGadget(1, 10, 10, 480, 20, "", 0)
  
  StringGadgetCB = SetWindowLongPtr_(GadgetID(1), #GWL_WNDPROC, @StringGadgetCB())
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Oder du misst mit ElapsedMilliseconds() und GetDoubleClickTime_() selber die Zeit nach einem Klick. Wenn innerhalb der Doppelklickzeit erneut geklickt wird, dann ist das ein Doppelklick.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: StringGadget DoubleClick

Beitrag von marcelx »

Danke für den Code. So funktioniert.
Ich wollte es für mehrere StringGadget verwenden.

Code: Alles auswählen

EnableExplicit

Global StringGadgetCB

Procedure StringGadgetCB(hWnd, uMsg, wParam, lParam)
  Select uMsg
    Case #WM_LBUTTONDBLCLK
      Debug "Doppelklick"
  EndSelect
  
  ProcedureReturn CallWindowProc_(StringGadgetCB, hWnd, uMsg, wParam, lParam)
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  StringGadget(1, 10, 10, 480, 20, "", 0)
  StringGadget(2, 10, 30, 480, 20, "", 0)
 
  StringGadgetCB = SetWindowLongPtr_(GadgetID(1), #GWL_WNDPROC, @StringGadgetCB())

  StringGadgetCB = SetWindowLongPtr_(GadgetID(2), #GWL_WNDPROC, @StringGadgetCB())
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Wie kann ich wissen welche StringGadget den DoubleClick gilt?
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: StringGadget DoubleClick

Beitrag von RSBasic »

Code: Alles auswählen

EnableExplicit

Global StringGadgetCB

Procedure StringGadgetCB(hWnd, uMsg, wParam, lParam)
  Select uMsg
    Case #WM_LBUTTONDBLCLK
      Debug "Doppelklick auf " + Str(GetProp_(hWnd, "PB_ID"))
  EndSelect
 
  ProcedureReturn CallWindowProc_(StringGadgetCB, hWnd, uMsg, wParam, lParam)
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  StringGadget(1, 10, 10, 480, 20, "", 0)
  StringGadget(2, 10, 30, 480, 20, "", 0)
 
  StringGadgetCB = SetWindowLongPtr_(GadgetID(1), #GWL_WNDPROC, @StringGadgetCB())

  StringGadgetCB = SetWindowLongPtr_(GadgetID(2), #GWL_WNDPROC, @StringGadgetCB())
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: StringGadget DoubleClick

Beitrag von marcelx »

wunderbar
Danke
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: StringGadget DoubleClick

Beitrag von udg »

eine Frage,
wozu ist das gut, also wozu könnte man das brauchen... als Button?
was hast Du damit vor wenn man fragen darf. Nur aus Interesse.

danke und Grüße
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: StringGadget DoubleClick

Beitrag von marcelx »

Gute Frage udg

Ich zeige aus eine Datenbank meine Daten.
Ich verwende den gleiche Procedure für das Editieren und Anzeigen meine Daten.
In meine Daten sind es z.B. E-Mails oder URL.
Mit eine Doppelklick starte ich RunProgram(input) oder RunProgram("mailto:"+input).

Grüße
MarcelX
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: StringGadget DoubleClick

Beitrag von udg »

okay. danke für die Info.
aber die Ausgabe wieder ins Inputfeld ist eher untypisch :)

dafür würde ich extra Ausgabefelder anlegen.

aber was solls. es muss laufen und den Zweck erfüllen
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: StringGadget DoubleClick

Beitrag von marcelx »

Beispiel Excel: eine Zelle ist gleichzeitig die Anzeige und Eingabe/Änderung in ein.
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: StringGadget DoubleClick

Beitrag von udg »

marcelx hat geschrieben:Beispiel Excel: eine Zelle ist gleichzeitig die Anzeige und Eingabe/Änderung in ein.
jap. stimmt.
ich hasse excel :D
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Antworten