Wie kann man einen Mausklick auf eine Zelle in TDBGrid simulieren?Mausklick auf eine Zelle simulieren in TDBGrid
Antwort
Update:
Dieser Code sollte tun, was Sie scheinen zu wollen:
type
TMyDBGrid = class(TDBGrid);
function TForm1.GetCellRect(ACol, ARow : Integer) : TRect;
begin
Result := TmyDBGrid(DBGrid1).CellRect(ACol, ARow);
end;
procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift:
TShiftState; X, Y: Integer);
var
Coords : TGridCoord;
begin
Coords := DBGrid1.MouseCoord(X, Y);
Caption := Format('Col: %d, Row: %d', [Coords.X, Coords.Y]);
end;
procedure TForm1.SimulateClick(ACol, ARow : Integer);
type
TCoords = packed record
XPos : SmallInt;
YPos : SmallInt;
end;
var
ARect : TRect;
Coords : TCoords;
begin
ARect := GetCellRect(ACol, ARow);
Coords.XPos := ARect.Left;
Coords.YPos := ARect.Top;
DBGrid1.Perform(WM_LButtonUp, 0, Integer(Coords));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SimulateClick(StrToInt(edX.Text), StrToInt(edY.Text));
end;
Die MouseCoord
Funktion von TDBGrid ein Paar von Koordinaten konvertiert (X, Y) in eine Spaltennummer (TGridCoord .X) und eine Zeilennummer ((TGridCoord.Y).
die OnMouseUp
Ereignis zeigt die Ergebnisse der DBGrid1.MouseCoord Aufruf auf dem X-Y-Eingang & ARGUM . Die SimulateClick
simuliert einen Klick auf eine Zelle des Gitters. Es verwendet GetCellRect, um die Koordinaten (in dem DBGrid) des topleft einer angegebenen Zelle abzurufen, und ruft dann auf dem DBGrid Perform (WM_LButtonUp, ...) auf, das die Koordinaten in dem LParam-Argument übergibt.
Schließlich ruft Button1Click
SimulateClick mit Col und Row-Werten von einem Paar TEdits auf. Dadurch wird das OnMouseUp-Ereignis ausgelöst und die Spalten- und Zeilennummer angezeigt. Sie können sich also selbst davon überzeugen, dass es den gleichen Effekt wie ein Mausklick auf die entsprechende Zelle hat.
Vielen Dank !! – userPro
wenn ich 'DBGrid1.Perform (WM_LButtonDown, 0, Integer (Coords)) verwende;' vor dem 'UP' bekomme ich, was ich brauche .. die Zelle mit _Coords_ ist ausgewählt und als 'fokussiert' .. thx! – userPro
@userPro: Ich bin froh, dass du es aussortiert hast. Eigentlich möchte ich noch einmal auf deine q über das Löschen von Dateien zurückkommen und sehen, ob wir das lösen können - ich werde dir etwas in meiner Antwort mit einigen Vorschlägen/Fragen zu deinem q posten. – MartynA
- 1. Mausklick in MSPaint simulieren
- 2. Mausklick für Seitentasten simulieren
- 3. Mausklick auf Fenster statt auf Bildschirm simulieren
- 4. Simulieren Mausklick - Maus nicht bewegt
- 5. Simulieren Maus Einzug und Mausklick in DotNetBrowser
- 6. dataGridView hos gehen simulieren eine Zelle klicken
- 7. Simulieren Sie einen Mausklick in Flash mit JavaScript
- 8. Mausklick simulieren/Farbe unter Cursor in Python entdecken
- 9. Simulieren Mausklick und Mausbewegung in Windows 7 mit C#
- 10. Ermitteln, welche Zelle in TDBGrid geklickt wurde, wenn dgRowSelect auf True gesetzt ist?
- 11. Wie simulieren Mausklick zusammen mit Mausbewegung mit Javascript
- 12. Excel reagiert nicht auf Mausklick
- 13. wpf Mausklick auf Textbox
- 14. Ermitteln der aktuellen Zeile in Delphi TDBGrid
- 15. Stoppen Sie die automatische Bearbeitung in TDBGrid
- 16. kostenlos pascal, tdbgrid, aktuelle Zeile
- 17. Notwendigkeit, eine @ Html.action() auf Knopfdruck zu simulieren
- 18. Zählen der Zeilen in einem TDbGrid
- 19. Mousedown-Ereignis auf Leinwand simulieren Fabric.js
- 20. Simulieren Klicken auf eine Taste funktioniert nicht
- 21. Autofit-Spalte in xslxwriter simulieren
- 22. Ändern des IsNewRow-Status in DataGridView auf false oder Simulieren des Tastenanschlags in einer Zelle
- 23. Detect linken Mausklick und rechten Mausklick auf JTable (SWING)
- 24. Simulieren Klick auf HTML?
- 25. iPhone auf Windows simulieren?
- 26. OpenGL: Projizieren Mausklick auf Geometrie
- 27. win32: einen Klick simulieren, ohne Mausbewegungen zu simulieren?
- 28. Simulieren klicken auf DIV
- 29. Simulieren Mausklicks auf Python
- 30. Hinzufügen einer Zeile zu einem TDBGrid
@RBA: Scheint aber nicht auf den spezifischen Punkt des OP zu antworten? – MartynA
Warum müssen Sie das Klicken in einer Zelle simulieren? Wenn Sie die Zeile und die Spalte wissen, auf der Sie arbeiten sollen, schreiben Sie einfach den Code, um es zu tun. Wenn Sie möchten, dass das gleiche geschieht, wenn eine Zelle tatsächlich angeklickt wird, rufen Sie diesen Code im OnCellClick-Handler auf. Oder bist du unsicher, wie das geht? – MartynA
@MartynA manchmal, es gibt ein Problem, wenn ich versuche, einen Datensatz zu entfernen .. Aber wenn ich einige Zellen in meiner aktuellen Zeile auswählen, wird die Entfernung durchgeführt! .. – userPro