MG: TMenuItem.Caption can now be set after creation

git-svn-id: trunk@732 -
This commit is contained in:
lazarus 2002-02-09 01:45:59 +00:00
parent 5aa8706df6
commit d5aeeacdc9

View File

@ -1786,17 +1786,53 @@ procedure TgtkObject.SetLabel(Sender : TObject; Data : Pointer);
// PGtkWidget(P), PGChar(data));
end;
procedure SetMenuItemCaption;
var
MenuItemWidget: PGtkWidget;
LabelWidget: PGtkLabel;
MenuItem: TMenuItem;
AmpPos: integer;
NewCaption: string;
begin
MenuItem:=TMenuItem(Sender);
MenuItemWidget:=PGtkWidget(MenuItem.Handle);
if MenuItemWidget=nil then exit;
LabelWidget:=PGTKLabel(PGTKBin(MenuItemWidget)^.Child);
if LabelWidget=nil then exit;
NewCaption:=MenuItem.Caption;
if NewCaption <> '-' then
begin
//Check for a shortcut key
AmpPos := pos('&', NewCaption);
if AmpPos <> 0 then begin
NewCaption[AmpPos - 1] := '_';
SetAccelKey(MenuItemWidget,gtk_label_parse_uline(LabelWidget,
PChar(NewCaption)));
end
else
gtk_label_set_text(LabelWidget,PChar(NewCaption));
end
else
gtk_label_set_text(LabelWidget,PChar(NewCaption));
end;
var
P : Pointer;
pLabel: pchar;
begin
if Sender is TMenuItem then begin
SetMenuItemCaption;
exit;
end;
if Sender is TWinControl
then Assert(False, Format('Trace: [TgtkObject.SetLabel] %s --> label %s', [Sender.ClassName, TControl(Sender).Caption]))
else begin
Assert(False, Format('Trace:WARNING: [TgtkObject.SetLabel] %s --> No Decendant of TWinControl', [Sender.ClassName]));
writeln('[TgtkObject.SetLabel] ERROR: Sender (',Sender.Classname,')'
,'is not TWinControl ');
Halt;
raise Exception.Create('[TgtkObject.SetLabel] ERROR: Sender ('+Sender.Classname+')'
+' is not TWinControl ');
end;
P := Pointer(TWinControl(Sender).Handle);
@ -1851,6 +1887,9 @@ begin
csPage:
SetNotebookPageTabLabel;
csMenuItem:
SetMenuItemCaption;
csComboBox : gtk_entry_set_text(PGtkEntry(PGtkCombo(P)^.entry), PLabel);
else
Assert(True, Format ('WARNING: [TgtkObject.SetLabel] --> not handled for class %s ', [Sender.ClassName]));
@ -3624,7 +3663,7 @@ begin
begin
StrTemp[tempInt - 1] := '_';
P := gtk_menu_item_new_with_label('');
SetAccelKey(P, gtk_label_parse_uline(PGTKLabel(PGTKBin(p)^.Child), StrTemp));
SetAccelKey(P,gtk_label_parse_uline(PGTKLabel(PGTKBin(p)^.Child),StrTemp));
end
else
P := gtk_menu_item_new_with_label(Strtemp)
@ -5282,6 +5321,9 @@ end;
{ =============================================================================
$Log$
Revision 1.154 2002/08/05 10:45:04 lazarus
MG: TMenuItem.Caption can now be set after creation
Revision 1.153 2002/08/05 08:56:56 lazarus
MG: TMenuItems can now be enabled and disabled