Werner Pamler wrote 20 lines
procedure BoldGroup(AControl: TWinControl);
var
i: Integer;
propinfo: PPropInfo;
cntrl: TControl;
fnt: TFont;
begin
for i:=0 to AControl.ControlCount-1 do begin
cntrl := AControl.Controls[i];
propinfo := GetPropInfo(cntrl, 'ParentFont');
if propinfo nil then
SetOrdProp(cntrl, propinfo, Longint(false));
propinfo := GetPropInfo(cntrl, 'Font');
if propinfo nil then begin
fnt := TFont(GetObjectProp(cntrl, 'Font'));
fnt.Style := [];
SetObjectProp(cntrl, 'Font', fnt);
end;
end;
AControl.Font.Style := [fsBold];
So I tried to put this into Lazarus 2.0.0...
After struggling with illegal whitespace characters when copy pasting from the news reader into Lazarus I put it into a text editor and cleaned up these before copy-paste into Lazarus again.
procedure BoldGroup(AControl: TWinControl);
var
i: Integer;
propinfo: PPropInfo;
cntrl: TControl;
fnt: TFont;
begin
for i:=0 to AControl.ControlCount-1 do
begin
cntrl := AControl.Controls[i];
propinfo := GetPropInfo(cntrl, 'ParentFont');
if propinfo nil then
SetOrdProp(cntrl, propinfo, Longint(false));
propinfo := GetPropInfo(cntrl, 'Font');
if propinfo nil then
begin
fnt := TFont(GetObjectProp(cntrl, 'Font'));
fnt.Style := [];
SetObjectProp(cntrl, 'Font', fnt);
end;
end;
AControl.Font.Style := [fsBold];
end;
I also had to add typinfo to uses.
Now it did work but only after rearranging the calls from OnCreate:
This works:
BoldGroup(gbxValues);
BoldGroup(gbxDHT);
BoldGroup(gbxNetwork);
BoldGroup(gbxAPmode);
BoldGroup(gbxStationmode);
But this does not work:
BoldGroup(gbxDHT);
BoldGroup(gbxNetwork);
BoldGroup(gbxAPmode);
BoldGroup(gbxStationmode);
BoldGroup(gbxValues);
gbxValues is a container groupbox for all of the others. In the nonworking case the ONLY groupbox that get bold caption is the gbxValues box...
Seems like the call to bold the caption of the gbxValues container removes the bold already set on the internal groupboxes...
Bo Berglund
Developer in Sweden