Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: bonmario - Giugno 25, 2026, 08:30:07 am

Titolo: Capire se la ScrollBar vertcale è visualizzata
Inserito da: bonmario - 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
Titolo: Re:Capire se la ScrollBar vertcale è visualizzata
Inserito da: DragoRosso - Giugno 25, 2026, 09:03:40 am
L'unico modo che conosco è testare il tipo di "finestra" che il controllo ha:

Codice: [Seleziona]
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  ;)
Titolo: Re:Capire se la ScrollBar vertcale è visualizzata
Inserito da: bonmario - Giugno 25, 2026, 11:47:55 am
Ok, grazie !!