Uso la versione da Trunk.
Aggiorno i sorgenti di Lazarus ogni 3 mesi al massimo di solito e ricompilo tutti i miei programmi
Adesso stavo però riguardando le cose e mi sono reso conto che non è che il problema aveva smesso di manifestarsi a marzo 2025, è che in quel periodo ho iniziato un altro progetto al lavoro, e non ho più usato quel programma !!!
Quindi, pur usando versioni diverse per compilare, il problema rimane.
Poco prima della pausa pranzo, grazie a Gemini (prima volta che la uso per questioni di Lazarus così particolari), sono riuscito ad aggirare il problema.
In pratica, tengo traccia del fatto che:
- sia stato premuto il tasto destro
- sia stato premuto uni dei tasti freccia giù, su, pagina giù, su
Combinando queste informazioni, abilito o disabilito la possibilità di selezionare una cella/riga della tabella.
In questo modo, adesso sembra funzionare
Questo il codice:
const CstTastiOk: set of Byte = [
VK_UP, // Freccia su
VK_DOWN, // Freccia giù
VK_PRIOR,// Pagina su
VK_NEXT // Pagina Giù
];
var FIsMouseDown:Boolean;
FIsKeyboard:Boolean;
procedure TForm1.TabellaEsitiKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
// Se l'utente preme i tasti freccia, autorizziamo il cambio cella
if Key in CstTastiOk then begin
FIsKeyboard:=True;
end else begin
FIsKeyboard:=False;
end;
end;
procedure TForm1.TabellaEsitiKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
// Se l'utente rilascia i tasti freccia, disabilito il cambio cella
if Key in CstTastiOk then begin
FIsKeyboard:=False;
end;
end;
procedure TForm1.TabellaEsitiMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
FIsMouseDown := True; // L'utente ha premuto il tasto sinistro del mouse
end;
procedure TForm1.TabellaEsitiMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
FIsMouseDown := False; // L'utente ha rilasciato il tasto sinistro
end;
procedure TForm1.TabellaEsitiSelectCell(Sender: TObject; aCol, aRow: Integer; var CanSelect: Boolean);
begin
// Se la riga è la stessa corrente, non facciamo nulla
if ARow = TabellaEsiti.Row then Exit;
if FIsKeyboard then begin
//Se è stato premuto il tasto della tastiera che permette di salire o scendere di una riga, CanSelect è giusto che resti True
end else begin
// Se la griglia sta cercando di cambiare riga, ma il tasto sinistro del mouse
// NON è fisicamente premuto (FIsMouseDown è false e lo stato hardware di Windows
// conferma che il tasto non è premuto con GetKeyState), allora si tratta
// di un movimento "fantasma" del mouse e blocchiamo il cambio riga.
if (not FIsMouseDown) and (GetKeyState(VK_LBUTTON) >= 0) then
begin
// Verifichiamo anche che non si stia usando la tastiera (es. frecce direzionali).
// Se vuoi bloccare totalmente i cambi riga non originati da click o tastiera:
CanSelect := False;
end;
end;
end;
Dato che tu dici che "segue" il movimento del mouse, più che un problema con i tasti del mouse o tastiera, penso ci sia qualcosa che scatena l'evento OnMouseMove.
Per quello avevo chiesto che postassi il codice dell'LFM relativo alla TStringGrid (sempre se puoi).
Scusa, mi ero perso questa richiesta, lo metto qui sotto.
Le uniche 2 volte che trovi "Mouse" è per il codice che ho aggiunto oggi, come descritto nel post precedente
Grazie !!!
6612000000000100040010101000000000002801000046000000101000000000
0000680500006E0100002020100000000000E8020000D6060000202000000000
0000A8080000BE0900002800000010000000200000000100040000000000C000
0000000000000000000010000000000000000000000000008000008000000080
8000800000008000800080800000C0C0C000808080000000FF0000FF000000FF
FF00FF000000FF00FF00FFFF0000FFFFFF000000000000000000000000000000
00900FFFFF777000099000F55555800099000FFFFF800009900000F555077880
00000FFFF07FF7F807F000F55075755805F00FFFF07FF57807F000F5507FF878
05F00FFFFF07777007F000000000000705F000000FFFFFFF07F0000000000000
05F000000000FFFFFFF00000000000000000FFFDFFFF8038FFFF0030FFFF8001
FFFF0003FFFF8000FFFF0000FFFF8000FFFF0000FFFF8000FFFF0000FFFF8000
FFFFF000FFFFF000FFFFFE00FFFFFE00FFFF2800000010000000200000000100
0800000000004001000000000000000000000001000000000000000000000000
80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA
A60004040400080808000C0C0C0011111100161616001C1C1C00222222002929
2900555555004D4D4D004242420039393900807CFF005050FF009300D600FFEC
CC00C6D6EF00D6E7E70090A9AD000000330000006600000099000000CC000033
00000033330000336600003399000033CC000033FF0000660000006633000066
6600006699000066CC000066FF00009900000099330000996600009999000099
CC000099FF0000CC000000CC330000CC660000CC990000CCCC0000CCFF0000FF
660000FF990000FFCC00330000003300330033006600330099003300CC003300
FF00333300003333330033336600333399003333CC003333FF00336600003366
330033666600336699003366CC003366FF003399000033993300339966003399
99003399CC003399FF0033CC000033CC330033CC660033CC990033CCCC0033CC
FF0033FF330033FF660033FF990033FFCC0033FFFF0066000000660033006600
6600660099006600CC006600FF00663300006633330066336600663399006633
CC006633FF00666600006666330066666600666699006666CC00669900006699
330066996600669999006699CC006699FF0066CC000066CC330066CC990066CC
CC0066CCFF0066FF000066FF330066FF990066FFCC00CC00FF00FF00CC009999
000099339900990099009900CC009900000099333300990066009933CC009900
FF00996600009966330099336600996699009966CC009933FF00999933009999
6600999999009999CC009999FF0099CC000099CC330066CC660099CC990099CC
CC0099CCFF0099FF000099FF330099CC660099FF990099FFCC0099FFFF00CC00
000099003300CC006600CC009900CC00CC0099330000CC333300CC336600CC33
9900CC33CC00CC33FF00CC660000CC66330099666600CC669900CC66CC009966
FF00CC990000CC993300CC996600CC999900CC99CC00CC99FF00CCCC0000CCCC
3300CCCC6600CCCC9900CCCCCC00CCCCFF00CCFF0000CCFF330099FF6600CCFF
9900CCFFCC00CCFFFF00CC003300FF006600FF009900CC330000FF333300FF33
6600FF339900FF33CC00FF33FF00FF660000FF663300CC666600FF669900FF66
CC00CC66FF00FF990000FF993300FF996600FF999900FF99CC00FF99FF00FFCC
0000FFCC3300FFCC6600FFCC9900FFCCCC00FFCCFF00FFFF3300CCFF6600FFFF
9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF66002100
A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7D700DDDD
DD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A000808080000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000
000000000000000000000000000000000000000000000000F90000F4F4F4F4F4
EFEFEF00000000F9F9000000F48B8B8B8B8BEC000000F9F9000000F4F4F4F4F4
EC00000000F9F90000000000F48B8B8B0007EFECEC000000000000F4F4F4F400
07FFF4BBFFEC00EFF4000000F48B8B00078BBB8B8BEC008BF40000F4F4F4F400
07FFFF8BBBEC00EFF4000000F48B8B0007FFFFECBBEC008BF40000F4F4F4F4F4
00070707EF0000EFF4000000000000000000000000EF008BF4000000000000F4
F4F4F4F4F4F400EFF400000000000000000000000000008BF400000000000000
0000F4F4F4F4F4F4F40000000000000000000000000000000000FFFDFFFF8038
FFFF0030FFFF8001FFFF0003FFFF8000FFFF0000FFFF8000FFFF0000FFFF8000
FFFF0000FFFF8000FFFFF000FFFFF000FFFFFE00FFFFFE00FFFF280000002000
0000400000000100040000000000800200000000000000000000100000000000
000000000000000080000080000000808000800000008000800080800000C0C0
C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
FF00000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000090000000FFFFFFFFFFFFFFF0000000091F
000000FFFFFFFFFFFFFFF000000091F0000000FF57755557755F708700099700
0000000FFFFFFFF77777700800997000000000FF757555C2CC28800809990000
000000FFFFFFF78800000000999000000000000F75552C00EEEEE00009008700
000000FFFFFF70EEE000EEE000708700000000FF55550EE0075500EE08708700
0000000FFFFF0E07777FFF0E08708700000000FF7570EE057575570EE0708700
000000FFFFF0E05577575750E07087000000000F7550E077877FFFF0E0708700
000000FFFFF0E05FFF757570E0708700000000FF7550EE0FFF75570EE0708700
0000000FFFFF0E0FF877FF0E07707700000000FF55550EE0055700EE07708700
000000FFFFFFF0EEE000EEE0077077000000000F75555500EEEEE00707707700
000000FFFFFFFFFF0000007707707700000000FFFFFFFFFFFFFFF07707707700
0000000000000000000000770770770000000000077777777777777707707700
0000000000000000000000000770770000000000000077777777777777707700
0000000000000000000000000000770000000000000000077777777777777700
0000000000000000000000000000000000000000000000000000000000000000
0000FFFFFF8F00001F0700001E030000000300000003000000078000000F0000
000F0000000F8000000F0000000F0000000F8000000F0000000F0000000F8000
000F0000000F0000000F8000000F0000000F0000000F8000000F0000000F0000
000F0000000F0000000FE000000FE000000FFC00000FFC00000FFF80000FFF80
000F280000002000000040000000010008000000000080040000000000000000
0000000100000000000000000000000080000080000000808000800000008000
800080800000C0C0C000C0DCC000F0CAA60004040400080808000C0C0C001111
1100161616001C1C1C002222220029292900555555004D4D4D00424242003939
3900807CFF005050FF009300D600FFECCC00C6D6EF00D6E7E70090A9AD000000
330000006600000099000000CC00003300000033330000336600003399000033
CC000033FF00006600000066330000666600006699000066CC000066FF000099
00000099330000996600009999000099CC000099FF0000CC000000CC330000CC
660000CC990000CCCC0000CCFF0000FF660000FF990000FFCC00330000003300
330033006600330099003300CC003300FF003333000033333300333366003333
99003333CC003333FF00336600003366330033666600336699003366CC003366
FF00339900003399330033996600339999003399CC003399FF0033CC000033CC
330033CC660033CC990033CCCC0033CCFF0033FF330033FF660033FF990033FF
CC0033FFFF00660000006600330066006600660099006600CC006600FF006633
00006633330066336600663399006633CC006633FF0066660000666633006666
6600666699006666CC00669900006699330066996600669999006699CC006699
FF0066CC000066CC330066CC990066CCCC0066CCFF0066FF000066FF330066FF
990066FFCC00CC00FF00FF00CC009999000099339900990099009900CC009900
000099333300990066009933CC009900FF009966000099663300993366009966
99009966CC009933FF009999330099996600999999009999CC009999FF0099CC
000099CC330066CC660099CC990099CCCC0099CCFF0099FF000099FF330099CC
660099FF990099FFCC0099FFFF00CC00000099003300CC006600CC009900CC00
CC0099330000CC333300CC336600CC339900CC33CC00CC33FF00CC660000CC66
330099666600CC669900CC66CC009966FF00CC990000CC993300CC996600CC99
9900CC99CC00CC99FF00CCCC0000CCCC3300CCCC6600CCCC9900CCCCCC00CCCC
FF00CCFF0000CCFF330099FF6600CCFF9900CCFFCC00CCFFFF00CC003300FF00
6600FF009900CC330000FF333300FF336600FF339900FF33CC00FF33FF00FF66
0000FF663300CC666600FF669900FF66CC00CC66FF00FF990000FF993300FF99
6600FF999900FF99CC00FF99FF00FFCC0000FFCC3300FFCC6600FFCC9900FFCC
CC00FFCCFF00FFFF3300CCFF6600FFFF9900FFFFCC006666FF0066FF660066FF
FF00FF666600FF66FF00FFFF66002100A5005F5F5F0077777700868686009696
9600CBCBCB00B2B2B200D7D7D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8
F800F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00
FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000F900000000000000F4F4F4F4F4F4F4F4F4F4F4F4F4F4F40000000000
000000F91DFF000000000000F4F4F4F4F4F4F4F4F4F4F4F4F4F4F40000000000
0000F91EFF00000000000000F4F48BBBBB8B8B8B8BBBBB8B8BF40700EBF10000
00F9019A000000000000000000F4F4F4F4F4F4F4F4EFEFEFEFEFEF0014EB0000
F9209A000000000000000000F4F4BB8BBB8B8B8BA66BA6A66BEBEB0014EB00F9
207500000000000000000000F4F4F4F4F4F4F4EFEBEB0000000000001400F920
75000000000000000000000000F4BB8B8B8B6BA60000DBD4D4D4D4000000002C
0000EBF10000000000000000F4F4F4F4F4F4EF00D4DBD4000000D4D4D4000000
F100EBF10000000000000000F4F48B8B8B8B00D4DB0000BB8B8B0000D4D400EB
F100EBF1000000000000000000F4F4F4F4F400DB00F1F1F1F1FFFFFF00D400EB
F100EBF10000000000000000F4F4BB8BBB00DBDB008BBB8BBB8B8BBB00D4D400
F100EBF10000000000000000F4F4F4F4F400DB008B8BBBBB8BBB8BBB8B00D400
F100EBF1000000000000000000F4BB8B8B00DB00F107EC07F1FFFFFFFF00D400
F100EBF10000000000000000F4F4F4F4F400DB008BFFFFFFBB8BBB8BBB00D400
F100ECF10000000000000000F4F4BB8B8B00DBDB00FFFFFFBB8B8BBB00D4D400
F100ECF1000000000000000000F4F4F4F4F400DB00FFFFEC07F1FFFF00D400EF
F100EFF10000000000000000F4F48B8B8B8B00DBDB00008B8BBB0000D4D400EF
F100ECF10000000000000000F4F4F4F4F4F4F400DBDBDB000000DBD4DB0000EF
F100EFF1000000000000000000F4BB8B8B8B8B8B0000DBDBDBDBD40000F10007
F100EFF10000000000000000F4F4F4F4F4F4F4F4F4F400000000000007F100EF
F100EFF10000000000000000F4F4F4F4F4F4F4F4F4F4F4F4F4F4F40007F10007
F10007F1000000000000000000000000000000000000000000000000F1F10007
F100EFF10000000000000000000000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10007
F10007F1000000000000000000000000000000000000000000000000000000F1
F10007F10000000000000000000000000000F1F1F1F1F1F1F1F1F1F1F1F1F1F1
F10007F100000000000000000000000000000000000000000000000000000000
0000F1F10000000000000000000000000000000000F1F1F1F1F1F1F1F1F1F1F1
F1F1F1F100000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000FFFFFF8F00001F0700001E0300000003000000030000
00078000000F0000000F0000000F8000000F0000000F0000000F8000000F0000
000F0000000F8000000F0000000F0000000F8000000F0000000F0000000F8000
000F0000000F0000000F0000000F0000000FE000000FE000000FFC00000FFC00
000FFF80000FFF80000F
Parere puramente personale, prova Claude, commette meno errori e "mescola" con meno frequenza le classi di componenti similari.
[OT On]
Uso Gemini per pigrizia: ho già l'utente di Google !!
Comunque, di solito lo uso solo perché non ricordo la sintassi di qualcosa, è la prima volta che gli faccio una domanda "complessa".
Preferisco cercare le informazioni alla vecchia maniera, questa IA mi da l'idea di rimbambire le persone poco alla volta
[OT Off]