mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 18:22:54 +02:00
IDE: Assign a mouse wheel handler to "all compiler options" ScrollBox and to controls inside it. Based on code by Sandro Cumerlato.
git-svn-id: trunk@46349 -
This commit is contained in:
parent
b67e8a8c92
commit
396d19a9a0
@ -5,8 +5,9 @@ unit AllCompilerOptions;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, Forms, Controls, StdCtrls, Buttons, ButtonPanel, EditBtn,
|
Classes, SysUtils, math, contnrs,
|
||||||
Dialogs, contnrs, LCLProc, ComCtrls, ExtCtrls, Compiler, LazarusIDEStrConsts;
|
Forms, Controls, StdCtrls, Buttons, ButtonPanel, EditBtn, ExtCtrls,
|
||||||
|
LCLProc, Compiler, LazarusIDEStrConsts;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@ -22,6 +23,8 @@ type
|
|||||||
sbAllOptions: TScrollBox;
|
sbAllOptions: TScrollBox;
|
||||||
procedure btnResetOptionsFilterClick(Sender: TObject);
|
procedure btnResetOptionsFilterClick(Sender: TObject);
|
||||||
procedure cbShowModifiedClick(Sender: TObject);
|
procedure cbShowModifiedClick(Sender: TObject);
|
||||||
|
procedure sbMouseWheel(Sender: TObject; Shift: TShiftState;
|
||||||
|
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
|
||||||
procedure edOptionsFilterChange(Sender: TObject);
|
procedure edOptionsFilterChange(Sender: TObject);
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
private
|
private
|
||||||
@ -62,6 +65,7 @@ constructor TfrmAllCompilerOptions.Create(TheOwner: TComponent);
|
|||||||
begin
|
begin
|
||||||
inherited Create(TheOwner);
|
inherited Create(TheOwner);
|
||||||
FGeneratedControls := TComponentList.Create;
|
FGeneratedControls := TComponentList.Create;
|
||||||
|
sbAllOptions.OnMouseWheel := @sbMouseWheel;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TfrmAllCompilerOptions.Destroy;
|
destructor TfrmAllCompilerOptions.Destroy;
|
||||||
@ -154,6 +158,14 @@ begin
|
|||||||
FRenderedOnce := True;
|
FRenderedOnce := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TfrmAllCompilerOptions.sbMouseWheel(Sender: TObject;
|
||||||
|
Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
|
||||||
|
begin
|
||||||
|
with sbAllOptions.VertScrollBar do
|
||||||
|
Position := Position - Sign(WheelDelta) * Increment;
|
||||||
|
Handled := True;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TfrmAllCompilerOptions.CheckBoxClick(Sender: TObject);
|
procedure TfrmAllCompilerOptions.CheckBoxClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
cb: TCheckBox;
|
cb: TCheckBox;
|
||||||
@ -205,6 +217,7 @@ var
|
|||||||
|
|
||||||
function MakeOptionCntrl(aCntrlClass: TControlClass; aCaption: string;
|
function MakeOptionCntrl(aCntrlClass: TControlClass; aCaption: string;
|
||||||
aTopOffs: integer=0): TControl;
|
aTopOffs: integer=0): TControl;
|
||||||
|
// Header Label or TCheckBox
|
||||||
begin
|
begin
|
||||||
Result := aCntrlClass.Create(Nil);
|
Result := aCntrlClass.Create(Nil);
|
||||||
Result.Parent := Container;
|
Result.Parent := Container;
|
||||||
@ -232,7 +245,7 @@ var
|
|||||||
procedure MakeDescrLabel(aCntrl: TControl; aLeft: integer);
|
procedure MakeDescrLabel(aCntrl: TControl; aLeft: integer);
|
||||||
// Description label after CheckBox / Edit control
|
// Description label after CheckBox / Edit control
|
||||||
var
|
var
|
||||||
Lbl: TControl;
|
Lbl: TLabel;
|
||||||
begin
|
begin
|
||||||
Lbl := TLabel.Create(Nil);
|
Lbl := TLabel.Create(Nil);
|
||||||
Lbl.Parent := Container;
|
Lbl.Parent := Container;
|
||||||
@ -241,6 +254,7 @@ var
|
|||||||
Lbl.AnchorSide[akTop].Side := asrCenter;
|
Lbl.AnchorSide[akTop].Side := asrCenter;
|
||||||
Lbl.Left := aLeft; // Now use Left instead of anchors
|
Lbl.Left := aLeft; // Now use Left instead of anchors
|
||||||
Lbl.Anchors := [akLeft,akTop];
|
Lbl.Anchors := [akLeft,akTop];
|
||||||
|
Lbl.OnMouseWheel := @sbMouseWheel;
|
||||||
FGeneratedControls.Add(Lbl);
|
FGeneratedControls.Add(Lbl);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -256,12 +270,14 @@ var
|
|||||||
case Opt.EditKind of
|
case Opt.EditKind of
|
||||||
oeGroup, oeSet: begin // Label for group or set
|
oeGroup, oeSet: begin // Label for group or set
|
||||||
Cntrl := MakeOptionCntrl(TLabel, Opt.Option+Opt.Suffix);
|
Cntrl := MakeOptionCntrl(TLabel, Opt.Option+Opt.Suffix);
|
||||||
|
TLabel(Cntrl).OnMouseWheel := @sbMouseWheel;
|
||||||
MakeDescrLabel(Cntrl, Opt.CalcLeft(LeftDescrGroup, 7));
|
MakeDescrLabel(Cntrl, Opt.CalcLeft(LeftDescrGroup, 7));
|
||||||
end;
|
end;
|
||||||
oeBoolean: begin // CheckBox
|
oeBoolean: begin // CheckBox
|
||||||
Cntrl := MakeOptionCntrl(TCheckBox, Opt.Option);
|
Cntrl := MakeOptionCntrl(TCheckBox, Opt.Option);
|
||||||
Assert((Opt.Value='') or (Opt.Value='True'), 'Wrong value in Boolean option '+Opt.Option);
|
Assert((Opt.Value='') or (Opt.Value='True'), 'Wrong value in Boolean option '+Opt.Option);
|
||||||
TCheckBox(Cntrl).Checked := Opt.Value<>'';
|
TCheckBox(Cntrl).Checked := Opt.Value<>'';
|
||||||
|
TCheckBox(Cntrl).OnMouseWheel := @sbMouseWheel;
|
||||||
Cntrl.OnClick := @CheckBoxClick;
|
Cntrl.OnClick := @CheckBoxClick;
|
||||||
MakeDescrLabel(Cntrl, Opt.CalcLeft(LeftDescrBoolean, 11));
|
MakeDescrLabel(Cntrl, Opt.CalcLeft(LeftDescrBoolean, 11));
|
||||||
end;
|
end;
|
||||||
@ -269,19 +285,23 @@ var
|
|||||||
Cntrl := MakeOptionCntrl(TCheckBox, Opt.Option+Opt.Description);
|
Cntrl := MakeOptionCntrl(TCheckBox, Opt.Option+Opt.Description);
|
||||||
Assert((Opt.Value='') or (Opt.Value='True'), 'Wrong value in Boolean option '+Opt.Option);
|
Assert((Opt.Value='') or (Opt.Value='True'), 'Wrong value in Boolean option '+Opt.Option);
|
||||||
TCheckBox(Cntrl).Checked := Opt.Value<>'';
|
TCheckBox(Cntrl).Checked := Opt.Value<>'';
|
||||||
|
TCheckBox(Cntrl).OnMouseWheel := @sbMouseWheel;
|
||||||
Cntrl.OnClick := @CheckBoxClick;
|
Cntrl.OnClick := @CheckBoxClick;
|
||||||
end;
|
end;
|
||||||
oeNumber, oeText, oeSetNumber: begin // Edit
|
oeNumber, oeText, oeSetNumber: begin // Edit
|
||||||
Lbl := MakeOptionCntrl(TLabel, Opt.Option+Opt.Suffix, 3);
|
Lbl := MakeOptionCntrl(TLabel, Opt.Option+Opt.Suffix, 3);
|
||||||
|
TLabel(Lbl).OnMouseWheel := @sbMouseWheel;
|
||||||
Cntrl := MakeEditCntrl(Lbl, TEdit);
|
Cntrl := MakeEditCntrl(Lbl, TEdit);
|
||||||
if Opt.EditKind <> oeText then
|
if Opt.EditKind <> oeText then
|
||||||
TCustomEdit(Cntrl).Width := 80;
|
TEdit(Cntrl).Width := 80;
|
||||||
TCustomEdit(Cntrl).Text := Opt.Value;
|
TEdit(Cntrl).Text := Opt.Value;
|
||||||
TCustomEdit(Cntrl).OnChange := @EditChange;
|
TEdit(Cntrl).OnChange := @EditChange;
|
||||||
|
TEdit(Cntrl).OnMouseWheel := @sbMouseWheel;
|
||||||
MakeDescrLabel(Cntrl, LeftDescrEdit);
|
MakeDescrLabel(Cntrl, LeftDescrEdit);
|
||||||
end;
|
end;
|
||||||
oeList: begin // ComboBox
|
oeList: begin // ComboBox
|
||||||
Lbl := MakeOptionCntrl(TLabel, Opt.Option+Opt.Suffix, 3);
|
Lbl := MakeOptionCntrl(TLabel, Opt.Option+Opt.Suffix, 3);
|
||||||
|
TLabel(Lbl).OnMouseWheel := @sbMouseWheel;
|
||||||
Cntrl := MakeEditCntrl(Lbl, TComboBox);
|
Cntrl := MakeEditCntrl(Lbl, TComboBox);
|
||||||
cb := TComboBox(Cntrl);
|
cb := TComboBox(Cntrl);
|
||||||
cb.Style := csDropDownList;
|
cb.Style := csDropDownList;
|
||||||
|
Loading…
Reference in New Issue
Block a user