Italian community of Lazarus and Free Pascal
Programmazione => Generale => Discussione aperta da: bonmario il Giugno 25, 2026, 08:30:07 AM
Ciao a tutti,
in un programma, ho una TStringGrid con la proprietà Scrollbar = ssAutoBoth.
Mi è stato chiesto di fare una certa cosa quando la scrollbar verticale della StringGrid viene effettivamente visualizzata.
Sapete coma faccio a programma a capire se sono o meno in questa condizione?
Grazie, Mario
L'unico modo che conosco è testare il tipo di "finestra" che il controllo ha:
function CheckVBarIsVisible(Target: TWinControl): boolean;
begin
if Target <> nil then
Result := (GetWindowlong(Target.handle, GWL_STYLE) and WS_VSCROLL) <> 0
else
Result := false;
end;
//Uso:
begin
if CheckVBarIsVisible(StringGrid1) then
ShowMessage('ok');
end;
P.S.: il controllo deve essere testato da te, non penso sia possibile in Lazarus rilevare QUANDO la scrollbar viene visualizzata (cioè l'evento). In Delphi si può catturare un messaggio particolare ma in Lazarus non tento neanche, una buona parte dei messagi viene bloccata all'utente.
P.S1.: Sostituendo VSCROLL con HSCROLL ... testi la presenza della scrollbar orrizontale ;)
Ok, grazie !!