mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-28 12:29:13 +02:00
fix radiogroup menuitem, uncheck others in same group (from jreyes)
git-svn-id: trunk@5410 -
This commit is contained in:
parent
9043e56a4d
commit
b10891527d
@ -109,6 +109,28 @@ end;
|
|||||||
Checks or unchecks the specified menu item.
|
Checks or unchecks the specified menu item.
|
||||||
------------------------------------------------------------------------------}
|
------------------------------------------------------------------------------}
|
||||||
Function TWin32WidgetSet.MenuItemSetCheck(BaseMenuItem: TComponent): Boolean;
|
Function TWin32WidgetSet.MenuItemSetCheck(BaseMenuItem: TComponent): Boolean;
|
||||||
|
|
||||||
|
function doCheckMenuItem(aMI: TMenuItem; CF: Integer): boolean;
|
||||||
|
begin
|
||||||
|
Result := Windows.CheckMenuItem(aMI.Parent.Handle, aMI.Command, CF) <> DWORD($FFFFFFFF);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure InterfaceTurnSiblingsOff(aMI: TMenuItem);
|
||||||
|
var
|
||||||
|
aParent, aSibling: TMenuItem;
|
||||||
|
i: integer;
|
||||||
|
begin
|
||||||
|
// Just check all siblings that are in the same group
|
||||||
|
// TMenuItem.TurnSiblingsOff should have modified internal flags
|
||||||
|
aParent := aMI.Parent;
|
||||||
|
if aParent <> nil then
|
||||||
|
for i := 0 to aParent.Count-1 do
|
||||||
|
begin
|
||||||
|
aSibling := aParent.Items[i];
|
||||||
|
if (aSibling <> aMI) and aSibling.RadioItem and (aSibling.GroupIndex=aMI.GroupIndex) then
|
||||||
|
doCheckMenuItem(aParent[i], MF_UNCHECKED or MF_BYCOMMAND);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
var
|
var
|
||||||
CheckFlag: Integer;
|
CheckFlag: Integer;
|
||||||
AMenuItem: TMenuItem;
|
AMenuItem: TMenuItem;
|
||||||
@ -117,7 +139,11 @@ Begin
|
|||||||
if AMenuItem.Checked then CheckFlag := MF_CHECKED
|
if AMenuItem.Checked then CheckFlag := MF_CHECKED
|
||||||
else CheckFlag := MF_UNCHECKED;
|
else CheckFlag := MF_UNCHECKED;
|
||||||
CheckFlag := CheckFlag or MF_BYCOMMAND;
|
CheckFlag := CheckFlag or MF_BYCOMMAND;
|
||||||
Result := Windows.CheckMenuItem(AMenuItem.Parent.Handle, AMenuItem.Command, CheckFlag) <> DWORD($FFFFFFFF);
|
if (CheckFlag and MF_CHECKED <> 0) and
|
||||||
|
(AMenuItem.GroupIndex <> 0) and AMenuItem.RadioItem
|
||||||
|
then
|
||||||
|
InterfaceTurnSiblingsOff(aMenuItem);
|
||||||
|
Result := doCheckMenuItem(aMenuItem, CheckFlag);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
@ -201,6 +227,9 @@ end;
|
|||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.18 2004/04/15 08:03:07 micha
|
||||||
|
fix radiogroup menuitem, uncheck others in same group (from jreyes)
|
||||||
|
|
||||||
Revision 1.17 2004/03/19 00:53:34 marc
|
Revision 1.17 2004/03/19 00:53:34 marc
|
||||||
* Removed all ComponentCreateHandle routines
|
* Removed all ComponentCreateHandle routines
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user